From: Florian Krohm Date: Wed, 26 Aug 2015 20:24:47 +0000 (+0000) Subject: Support X-Git-Tag: svn/VALGRIND_3_11_0~65 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6d4d9a33176b66b1cc248c709b041814db7c127d;p=thirdparty%2Fvalgrind.git Support envB: var=value in the .vgtest file. This is similar to "env:" except the environment variable is set prior to invoking progB. Adapt gdbserver_tests/nlgone_exit.vgtest to fix a problem reported by Matthias Schwarzott git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15592 --- diff --git a/gdbserver_tests/nlgone_exit.vgtest b/gdbserver_tests/nlgone_exit.vgtest index 02a20a7afa..521c19df90 100644 --- a/gdbserver_tests/nlgone_exit.vgtest +++ b/gdbserver_tests/nlgone_exit.vgtest @@ -7,6 +7,7 @@ vgopts: --tool=none --vgdb=yes --vgdb-stop-at=startup,exit --vgdb-prefix=./vgdb- stderr_filter: filter_stderr prereq: test -e gdb progB: gdb +envB: LC_ALL=C argsB: --quiet -l 60 --nx ./gone stdinB: nlgone_exit.stdinB.gdb stdoutB_filter: filter_gdb diff --git a/tests/vg_regtest.in b/tests/vg_regtest.in index 16f49862b5..bfb269f960 100755 --- a/tests/vg_regtest.in +++ b/tests/vg_regtest.in @@ -71,6 +71,7 @@ # - stderr_filter_args: (default: basename of .vgtest file) # # - progB: (default: none) +# - envB: (default: none) # - argsB: (default: none) # - stdinB: (default: none) # - stdoutB_filter: (default: none) @@ -91,6 +92,7 @@ # # There can be more than one env: declaration. Here is an example: # env: PATH=/opt/bin:$PATH +# Likewise for envB. # # Expected stdout (filtered) is kept in .stdout.exp* (can be more # than one expected output). It can be missing if it would be empty. Expected @@ -162,6 +164,7 @@ my $prereq; # prerequisite test to satisfy before running test my $post; # check command after running test my $cleanup; # cleanup command to run my @env = (); # environment variable to set prior calling $prog +my @envB = (); # environment variable to set prior calling $progB my @failures; # List of failed tests @@ -344,6 +347,8 @@ sub read_vgtest_file($) $cleanup = $1; } elsif ($line =~ /^\s*env:\s*(.*)$/) { push @env,$1; + } elsif ($line =~ /^\s*envB:\s*(.*)$/) { + push @envB,$1; } else { die "Bad line in $f: $line\n"; } @@ -460,6 +465,11 @@ sub do_one_test($$) if (defined $progB) { + # Collect environment variables, if any. + my $envBvars = ""; + foreach my $e (@envB) { + $envBvars = "$envBvars $e"; + } # If there is a progB, let's start it in background: printf("%-16s valgrind $extraopts $vgopts $prog $args (progB: $progB $argsB)\n", "$name:"); @@ -468,11 +478,13 @@ sub do_one_test($$) # to e.g. redirect stdoutB to stderrB if (defined $stdinB) { mysystem("(rm -f progB.done;" - . " < $stdinB > $name.stdoutB.out 2> $name.stderrB.out $progB $argsB;" + . " < $stdinB > $name.stdoutB.out 2> $name.stderrB.out" + . " $envBvars $progB $argsB;" . "touch progB.done) &"); } else { mysystem("(rm -f progB.done;" - . " > $name.stdoutB.out 2> $name.stderrB.out $progB $argsB;" + . " > $name.stdoutB.out 2> $name.stderrB.out" + . "$envBvars $progB $argsB;" . "touch progB.done) &"); } } else {