diff options
Diffstat (limited to 'test/run')
-rwxr-xr-x | test/run | 21 |
1 files changed, 20 insertions, 1 deletions
@@ -61,9 +61,22 @@ my $prog_line = 0; my ($tests, $failed) = (0,0); my $lineno; my $width = ($ENV{COLUMNS} || 80) >> 1; +my $origdir = getcwd; +my $workdir = "d.$$"; + +# Create a dedicated working directory +mkdir $workdir or die; +chdir $workdir or die; +$ENV{PWD} = getcwd; + +if (defined $ARGV[0]) { + open(SOURCE, "$origdir/$ARGV[0]"); +} else { + *SOURCE = *STDIN; +} for (;;) { - my $line = <>; $lineno++; + my $line = <SOURCE>; $lineno++; if (defined $line) { # Substitute %VAR and %{VAR} with environment variables. $line =~ s[%(\w+)][$ENV{$1}]eg; @@ -93,6 +106,12 @@ for (;;) { } } +close(SOURCE); + +# Clean up the mess +chdir $origdir or die; +system "rm -rf $workdir"; + my $status = sprintf("%d commands (%d passed, %d failed)", $tests, $tests-$failed, $failed); if (isatty(fileno(STDOUT))) { |