complete-run: make --valgrind, --strace, --coverage-testing work again

This commit is contained in:
Michael Stapelberg 2012-01-27 21:36:40 +00:00
parent cc2fda9242
commit d22458cde0
2 changed files with 23 additions and 10 deletions

View File

@ -37,20 +37,23 @@ my $log;
sub Log { say $log "@_" } sub Log { say $log "@_" }
my %timings; my %timings;
my $coverage_testing = 0;
my $valgrind = 0;
my $strace = 0;
my $help = 0; my $help = 0;
# Number of tests to run in parallel. Important to know how many Xdummy # Number of tests to run in parallel. Important to know how many Xdummy
# instances we need to start (unless @displays are given). Defaults to # instances we need to start (unless @displays are given). Defaults to
# num_cores * 2. # num_cores * 2.
my $parallel = undef; my $parallel = undef;
my @displays = (); my @displays = ();
my %options = (
valgrind => 0,
strace => 0,
coverage => 0,
restart => 0,
);
my $result = GetOptions( my $result = GetOptions(
"coverage-testing" => \$coverage_testing, "coverage-testing" => \$options{coverage},
"valgrind" => \$valgrind, "valgrind" => \$options{valgrind},
"strace" => \$strace, "strace" => \$options{strace},
"display=s" => \@displays, "display=s" => \@displays,
"parallel=i" => \$parallel, "parallel=i" => \$parallel,
"help|?" => \$help, "help|?" => \$help,
@ -104,7 +107,7 @@ for my $display (@displays) {
die "Could not connect to display $display\n"; die "Could not connect to display $display\n";
} else { } else {
# start a TestWorker for each display # start a TestWorker for each display
push @single_worker, worker($display, $x, $outdir); push @single_worker, worker($display, $x, $outdir, \%options);
} }
} }
@ -114,7 +117,7 @@ if (defined($multidpy)) {
if ($x->has_error) { if ($x->has_error) {
die "Could not connect to multi-monitor display $multidpy\n"; die "Could not connect to multi-monitor display $multidpy\n";
} else { } else {
push @multi_worker, worker($multidpy, $x, $outdir); push @multi_worker, worker($multidpy, $x, $outdir, \%options);
} }
} }

View File

@ -13,13 +13,17 @@ our @EXPORT = qw(worker worker_next);
use File::Basename qw(basename); use File::Basename qw(basename);
my @x; my @x;
my $options;
sub worker { sub worker {
my ($display, $x, $outdir) = @_; my ($display, $x, $outdir, $optref) = @_;
# make sure $x hangs around # make sure $x hangs around
push @x, $x; push @x, $x;
# store the options hashref
$options = $optref;
socketpair(my $ipc_child, my $ipc, AF_UNIX, SOCK_DGRAM, PF_UNSPEC) socketpair(my $ipc_child, my $ipc, AF_UNIX, SOCK_DGRAM, PF_UNSPEC)
or die "socketpair: $!"; or die "socketpair: $!";
@ -102,7 +106,13 @@ sub worker_wait {
$test->todo_output(\*STDOUT); $test->todo_output(\*STDOUT);
@ENV{qw(DISPLAY TESTNAME OUTDIR VALGRIND STRACE COVERAGE RESTART)} @ENV{qw(DISPLAY TESTNAME OUTDIR VALGRIND STRACE COVERAGE RESTART)}
= ($self->{display}, basename($file), $outdir, 0, 0, 0, 0); = ($self->{display},
basename($file),
$outdir,
$options->{valgrind},
$options->{strace},
$options->{coverage},
$options->{restart});
package main; package main;
local $@; local $@;