my %options = (
valgrind => 0,
strace => 0,
+ xtrace => 0,
coverage => 0,
restart => 0,
);
"coverage-testing" => \$options{coverage},
"valgrind" => \$options{valgrind},
"strace" => \$options{strace},
+ "xtrace" => \$options{xtrace},
"display=s" => \@displays,
"parallel=i" => \$parallel,
"help|?" => \$help,
Runs i3 under strace to trace system calls. The output will be available in
C<latest/strace-for-$test.log>.
+=item B<--xtrace>
+
+Runs i3 under xtrace to trace X11 requests/replies. The output will be
+available in C<latest/xtrace-for-$test.log>.
+
=item B<--coverage-testing>
Exits i3 cleanly (instead of kill -9) to make coverage testing work properly.
'sh -c "export LISTEN_PID=\$\$; ' . $cmd . '"';
}
+ if ($args{xtrace}) {
+ my $out = "$outdir/xtrace-for-$test.log";
+
+ # See comment in $args{strace} branch.
+ $cmd = qq|xtrace -n -o "$out" -- | .
+ 'sh -c "export LISTEN_PID=\$\$; ' . $cmd . '"';
+ }
+
# We need to use the shell due to using output redirections.
exec '/bin/sh', '-c', $cmd;
$test->failure_output(\*STDERR);
$test->todo_output(\*STDOUT);
- @ENV{qw(DISPLAY TESTNAME OUTDIR VALGRIND STRACE COVERAGE RESTART)}
+ @ENV{qw(DISPLAY TESTNAME OUTDIR VALGRIND STRACE XTRACE COVERAGE RESTART)}
= ($self->{display},
basename($file),
$outdir,
$options->{valgrind},
$options->{strace},
+ $options->{xtrace},
$options->{coverage},
$options->{restart});
testname => $ENV{TESTNAME},
valgrind => $ENV{VALGRIND},
strace => $ENV{STRACE},
+ xtrace => $ENV{XTRACE},
restart => $ENV{RESTART},
cv => $cv,
dont_create_temp_dir => $args{dont_create_temp_dir},