X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/2c9f7ff8e77f13267519311c294eba51e5ea1b38..b8a7fa2dd5c9a7fec40925366743255f91fcf846:/test/runtest diff --git a/test/runtest b/test/runtest index 8dcb0587c..1431e5754 100755 --- a/test/runtest +++ b/test/runtest @@ -349,7 +349,7 @@ $spid = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; # that are specific to certain file types, though there are also some of those # inline too. -while() +LINE: while() { RESET_AFTER_EXTRA_LINE_READ: # Custom munges @@ -564,6 +564,25 @@ RESET_AFTER_EXTRA_LINE_READ: # signature algorithm names s/RSA-SHA1/RSA-SHA/; + # -d produces a list of environement variables as they are checked if they exist in the + # in the environment. Unfortunately this list isn't always in the same order. For now we + # just remove this list + # + if (/^\w+ in keep_environment/) + { + my @lines = $_; + while () + { + if (/^\w+ in keep_environment/) + { + push @lines, $_; + next; + } + print MUNGED sort grep { !/^(SHLVL|_) / } @lines; + redo LINE; + } + } + # ======== Caller's login, uid, gid, home, gecos ======== @@ -1686,6 +1705,8 @@ my($commandnameref) = $_[3]; my($aux_info) = $_[4]; my($yield) = 1; +our %ENV = map { $_ => $ENV{$_} } grep { /^(?:USER|SHELL|PATH|TERM|EXIM_TEST_.*)$/ } keys %ENV; + if (/^(\d+)\s*$/) # Handle unusual return code { my($r) = $_[2]; @@ -1951,7 +1972,7 @@ if (/^sleep\s+(.*)$/) # Various Unix management commands are recognized if (/^(ln|ls|du|mkdir|mkfifo|touch|cp|cat)\s/ || - /^sudo (rmdir|rm|chown|chmod)\s/) + /^sudo\s(rmdir|rm|chown|chmod)\s/) { run_system("$_ >>test-stdout 2>>test-stderr"); return 1; @@ -2089,7 +2110,7 @@ if (/^client/ || /^(sudo\s+)?perl\b/) # not drop privilege when -C and -D options are present. To run the exim # command as root, we use sudo. -elsif (/^([A-Z_]+=\S+\s+)?(\d+)?\s*(sudo(?:\s+-u\s+(\w+))?\s+)?exim(_\S+)?\s+(.*)$/) +elsif (/^((?i:[A-Z\d_]+=\S+\s+)+)?(\d+)?\s*(sudo(?:\s+-u\s+(\w+))?\s+)?exim(_\S+)?\s+(.*)$/) { $args = $6; my($envset) = (defined $1)? $1 : ""; @@ -3712,8 +3733,9 @@ foreach $test (@test_list) my($subtest_startline) = $lineno; - # Now run the command. The function returns 0 if exim was run and waited - # for, 1 if any other command was run and waited for, and 2 if a command + # Now run the command. The function returns 0 for an inline command, + # 1 if a non-exim command was run and waited for, 2 if an exim + # command was run and waited for, and 3 if a command # was run and not waited for (usually a daemon or server startup). my($commandname) = "";