3 my $interpreter = shift;
5 my $disabled_tests = shift;
6 my $dump_output = shift;
9 my $stdout = $test.'.stdout';
10 my $stderr = $test.'.stderr';
12 $output =~ s/\.exe$/.output/;
14 my $timeout_in_minutes = 2;
16 my $test_binary = $test;
18 if ($test =~ /.*\|.*/) {
19 my @values = split(/\|/, $test);
20 my $binary = @values[0];
21 my $test_name = @values[1];
23 $test_binary = $binary;
24 $test = $test_name . "_" . $binary;
25 $stdout = $test.'.stdout';
26 $stderr = $test.'.stderr';
29 #This is a silly workaround, but all tests that use extra parameters need a larger timeout.
30 $timeout_in_minutes = 15;
32 $ENV{'TEST_DRIVER_TIMEOUT_SEC'} = $timeout_in_minutes * 60;
35 print "Testing $test... ";
37 foreach $disabled (split (/ /, $disabled_tests)) {
38 $disabled =~ s/^\s+|\s+$//g;
39 if ($disabled eq $test) {
47 if (!defined ($cpid)) {
48 $res = system("$interpreter @ARGV $test_binary 2>$stderr 1>$stdout");
49 } elsif ($cpid == 0) {
50 exec ("$interpreter @ARGV $test_binary 2>$stderr 1>$stdout") || die "Cannot exec: $!";
52 # in the parent, setup the alarm
53 # test must complete in 2 minutes or it is considered buggy
54 my $timeout = $timeout_in_minutes * 60;
57 print "failed after $timeout seconds timeout.\n";
69 printf ("failed $? (%d) signal (%d).\n", $?
>> 8, $?
& 127);
71 if (($?
& 127) == 2) {
77 if (-f
$output && (read_file
($output) ne read_file
($stdout))) {
78 print "failed output.\n";
88 if ($dump_output ne "dump-output") {
92 printf ("----STDOUT-----\n");
93 print read_file
($stdout);
94 printf ("----STDERR-----\n");
95 print read_file
($stderr);
96 printf ("---------------\n");
102 open (F
, "<$out") || die $!;