]> git.sur5r.net Git - i3/i3/commitdiff
complete-run: make --valgrind, --strace, --coverage-testing work again
authorMichael Stapelberg <michael@stapelberg.de>
Fri, 27 Jan 2012 21:36:40 +0000 (21:36 +0000)
committerMichael Stapelberg <michael@stapelberg.de>
Fri, 27 Jan 2012 21:36:40 +0000 (21:36 +0000)
testcases/complete-run.pl
testcases/lib/TestWorker.pm

index 3475a45cb9a854d42f5b71e7902884d10758a9fa..15def35c85516332c5acc3f771969810c573da48 100755 (executable)
@@ -37,20 +37,23 @@ my $log;
 sub Log { say $log "@_" }
 
 my %timings;
-my $coverage_testing = 0;
-my $valgrind = 0;
-my $strace = 0;
 my $help = 0;
 # Number of tests to run in parallel. Important to know how many Xdummy
 # instances we need to start (unless @displays are given). Defaults to
 # num_cores * 2.
 my $parallel = undef;
 my @displays = ();
+my %options = (
+    valgrind => 0,
+    strace => 0,
+    coverage => 0,
+    restart => 0,
+);
 
 my $result = GetOptions(
-    "coverage-testing" => \$coverage_testing,
-    "valgrind" => \$valgrind,
-    "strace" => \$strace,
+    "coverage-testing" => \$options{coverage},
+    "valgrind" => \$options{valgrind},
+    "strace" => \$options{strace},
     "display=s" => \@displays,
     "parallel=i" => \$parallel,
     "help|?" => \$help,
@@ -104,7 +107,7 @@ for my $display (@displays) {
         die "Could not connect to display $display\n";
     } else {
         # 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) {
         die "Could not connect to multi-monitor display $multidpy\n";
     } else {
-        push @multi_worker, worker($multidpy, $x, $outdir);
+        push @multi_worker, worker($multidpy, $x, $outdir, \%options);
     }
 }
 
index dcb39ebcee362d246995e4d22c4ee0ab8da9f1fb..66f22bc03a7bee785012f901399898e68c72b001 100644 (file)
@@ -13,13 +13,17 @@ our @EXPORT = qw(worker worker_next);
 
 use File::Basename qw(basename);
 my @x;
+my $options;
 
 sub worker {
-    my ($display, $x, $outdir) = @_;
+    my ($display, $x, $outdir, $optref) = @_;
 
     # make sure $x hangs around
     push @x, $x;
 
+    # store the options hashref
+    $options = $optref;
+
     socketpair(my $ipc_child, my $ipc, AF_UNIX, SOCK_DGRAM, PF_UNSPEC)
         or die "socketpair: $!";
 
@@ -102,7 +106,13 @@ sub worker_wait {
             $test->todo_output(\*STDOUT);
 
             @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;
             local $@;