]> git.sur5r.net Git - i3/i3/commitdiff
complete-run: implement --valgrind
authorMichael Stapelberg <michael@stapelberg.de>
Mon, 7 Nov 2011 20:53:49 +0000 (20:53 +0000)
committerMichael Stapelberg <michael@stapelberg.de>
Mon, 7 Nov 2011 20:53:49 +0000 (20:53 +0000)
testcases/complete-run.pl
testcases/lib/SocketActivation.pm
testcases/lib/i3test.pm

index 939ee6369724ca366972dfb52500cbe9bddd2582..a66b0982da6b4467c39784052a77e4d03bb086b7 100755 (executable)
@@ -50,10 +50,12 @@ sub slurp {
 }
 
 my $coverage_testing = 0;
+my $valgrind = 0;
 my @displays = ();
 
 my $result = GetOptions(
     "coverage-testing" => \$coverage_testing,
+    "valgrind" => \$valgrind,
     "display=s" => \@displays,
 );
 
@@ -143,6 +145,7 @@ sub take_job {
             configfile => $tmpfile,
             outdir => $outdir,
             logpath => $logpath,
+            valgrind => $valgrind,
             cv => $activate_cv
         );
 
@@ -190,7 +193,7 @@ sub take_job {
         my $output;
         open(my $spool, '>', \$output);
         my $parser = TAP::Parser->new({
-            exec => [ 'sh', '-c', qq|DISPLAY=$display LOGPATH="$logpath" OUTDIR="$outdir" /usr/bin/perl -Ilib $test| ],
+            exec => [ 'sh', '-c', qq|DISPLAY=$display LOGPATH="$logpath" OUTDIR="$outdir" VALGRIND=$valgrind /usr/bin/perl -Ilib $test| ],
             spool => $spool,
             merge => 1,
         });
index 1ecfb2aadad84490f430f137f28991f0bbe1ba7a..4da2029c4017a05f2d4911c3e02178db10debf00 100644 (file)
@@ -78,6 +78,13 @@ sub activate_i3 {
         # the interactive signalhandler to make it crash immediately instead.
         my $i3cmd = abs_path("../i3") . " -V -d all --disable-signalhandler";
 
+        if ($args{valgrind}) {
+            $i3cmd =
+                qq|valgrind -v --log-file="$args{outdir}/valgrind.log" | .
+                qq|--leak-check=full --track-origins=yes --num-callers=20 | .
+                qq|--tool=memcheck -- $i3cmd|;
+        }
+
         # Append to $args{logpath} instead of overwriting because i3 might be
         # run multiple times in one testcase.
         my $cmd = "exec $i3cmd -c $args{configfile} >>$args{logpath} 2>&1";
index 563837dfe6ca0769ef19301a3fbea83039bad570..7473b61757ae9c86037f2ecb3df70cf8307bc977 100644 (file)
@@ -435,6 +435,7 @@ sub launch_with_config {
         configfile => $tmpfile,
         outdir => $ENV{OUTDIR},
         logpath => $ENV{LOGPATH},
+        valgrind => $ENV{VALGRIND},
         cv => $cv,
     );