diff options
Diffstat (limited to 'test/run_tests.pl')
-rw-r--r-- | test/run_tests.pl | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/test/run_tests.pl b/test/run_tests.pl new file mode 100644 index 0000000..746b0d1 --- /dev/null +++ b/test/run_tests.pl @@ -0,0 +1,43 @@ +#! /usr/bin/perl + +use strict; +use warnings; + +use File::Spec::Functions qw/catdir catfile curdir abs2rel rel2abs/; +use File::Basename; +use Test::Harness qw/runtests $switches/; + +my $top = $ENV{TOP}; +my $recipesdir = catdir($top, "test", "recipes"); +my $testlib = catdir($top, "test", "testlib"); + +# It seems that $switches is getting interpretted with 'eval' or something +# like that, and that we need to take care of backslashes or they will +# disappear along the way. +$testlib =~ s|\\|\\\\|g if $^O eq "MSWin32"; + +# Test::Harness provides the variable $switches to give it +# switches to be used when it calls our recipes. +$switches = "-w \"-I$testlib\""; + +my @tests = ( "alltests" ); +if (@ARGV) { + @tests = @ARGV; +} +if (grep /^alltests$/, @tests) { + @tests = grep { + basename($_) =~ /^[0-9][0-9]-[^\.]*\.t$/ + } glob(catfile($recipesdir,"*.t")); +} else { + my @t = (); + foreach (@tests) { + push @t, grep { + basename($_) =~ /^[0-9][0-9]-[^\.]*\.t$/ + } glob(catfile($recipesdir,"*-$_.t")); + } + @tests = @t; +} + +@tests = map { abs2rel($_, rel2abs(curdir())); } @tests; + +runtests(sort @tests); |