aboutsummaryrefslogtreecommitdiff
path: root/test/run_tests.pl
diff options
context:
space:
mode:
Diffstat (limited to 'test/run_tests.pl')
-rw-r--r--test/run_tests.pl43
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);