#!/usr/bin/env perl my $interpreter = shift; my $test = shift; my $disabled_tests = shift; my $output = $test; my $stdout = $test.'.stdout'; my $stderr = $test.'.stderr'; $output =~ s/\.exe$/.output/; $| = 0; print "Testing $test... "; foreach $disabled (split (/ /, $disabled_tests)) { if ($disabled eq $test) { print "disabled.\n"; exit (0); } } my $res = system("$interpreter @ARGV $test 2>$stderr 1>$stdout"); if ($res) { printf ("failed $? (%d) signal (%d).\n", $? >> 8, $? & 127); if (($? & 127) == 2) { exit (2); } else { exit (1); } } if (-f $output && (read_file ($output) ne read_file ($stdout))) { print "failed output.\n"; exit (1); } print "pass.\n"; unlink ($stderr); exit (0); sub read_file { local ($/); my $out = shift; open (F, "<$out") || die $!; $out = ; close(F); return $out; }