new md5sum for modified MD5.xs file
[p5sagit/p5-mst-13.2.git] / t / TEST
diff --git a/t/TEST b/t/TEST
index a1080e2..9dd34f3 100755 (executable)
--- a/t/TEST
+++ b/t/TEST
@@ -44,12 +44,34 @@ $ENV{PERL_DESTRUCT_LEVEL} = 2 unless exists $ENV{PERL_DESTRUCT_LEVEL};
 
 $ENV{EMXSHELL} = 'sh';        # For OS/2
 
-if ($#ARGV == -1) {
-    @ARGV = split(/[ \n]/,
-      `echo base/*.t comp/*.t cmd/*.t run/*.t io/*.t; echo op/*.t pragma/*.t lib/*.t pod/*.t camel-III/*.t`);
+
+# Roll your own File::Find!
+use TestInit;
+use File::Spec;
+my $curdir = File::Spec->curdir;
+my $updir  = File::Spec->updir;
+
+sub _find_tests {
+    my($dir) = @_;
+    opendir DIR, $dir || die "Trouble opening $dir: $!";
+    foreach my $f (sort { $a cmp $b } readdir DIR) {
+        next if $f eq $curdir or $f eq $updir;
+
+        my $fullpath = File::Spec->catdir($dir, $f);
+
+        _find_tests($fullpath) if -d $fullpath;
+        push @ARGV, $fullpath if $f =~ /\.t$/;
+    }
+}
+
+unless (@ARGV) {
+    foreach my $dir (qw(base comp cmd run io op pragma lib pod)) {
+        _find_tests($dir);
+    }
 }
 
 # %infinite = ( 'comp/require.t', 1, 'op/bop.t', 1, 'lib/hostname.t', 1 );
+%infinite = ();
 
 if ($deparse) {
     _testprogs('deparse', @ARGV);
@@ -170,8 +192,9 @@ EOT
                print $_;
            }
            unless (/^#/) {
-               if (/^1\.\.([0-9]+)/) {
+               if (/^1\.\.([0-9]+)( todo ([\d ]+))?/) {
                    $max = $1;
+                    %todo = map { $_ => 1 } split / /, $3 if $3;
                    $totmax += $max;
                    $files += 1;
                    $next = 1;
@@ -183,6 +206,7 @@ EOT
                    {
                        my($not, $num, $extra) = ($1, $2, $3);
                        my($istodo) = $extra =~ /^\s*#\s*TODO/ if $extra;
+                        $istodo = 1 if $todo{$num};
 
                        if( $not && !$istodo ) {
                            $ok = 0;