rakudo's "make spectest" suffers from too much noise in its output.

The attached patch adds a spectest_regression target to Makefile that
uses whitelisting to run only those tests that are known to pass.

The code in t/harness is somewhat ugly now (ok, it was ugly before, but
now it's even uglier), for example the options --regression-only and
--fudge are non-orthogonal, although in an ideal world they should be.
Should I refactor t/harness? or just leave it in the current shape?

Cheers,
Moritz


-- 
Moritz Lenz
http://moritz.faui2k3.org/ |  http://perl-6.de/
Index: t/harness
===================================================================
--- t/harness	(revision 27698)
+++ t/harness	(working copy)
@@ -7,6 +7,7 @@
 use lib qw( ../../lib );
 
 our %harness_args;
+our $recurse;
 
 BEGIN {
     our %harness_args = (
@@ -14,6 +15,7 @@
         compiler  => 'perl6.pbc',
     );
 
+
     my %opts;
     while( $_ = $ARGV[0] ) {
         last unless defined && /^-/;
@@ -22,12 +24,31 @@
         $opts{$_} = $_;
     }
 
+    my %accepted_tests;
+    my $regression_only;
+    if ( delete $opts{'--regression-only'} ) {
+        $regression_only = 1;
+        $recurse = 1;
+        open(my $f, '<', 't/passing_spec') 
+            or die "Can't ope file 't/passing_spec' for reading: $!";
+        while (<$f>){
+            next if m/^\s*#/;
+            next unless m/\S/;
+            chomp;
+            $accepted_tests{"t/spec/$_"} = 1;
+        }
+        close $f;
+    }
+
     ##  if we aren't fudging tests, we're done here
     return unless defined delete $opts{'--fudge'};
 
 
     my $impl    = 'rakudo';
     my @tfiles = sort map { -d $_ ? all_in($_) : $_ } map glob, @ARGV;
+    if ($regression_only){
+        @tfiles = grep { $accepted_tests{$_} } @tfiles;
+    }
     my $cmd = join ' ', $^X, 't/spec/fudgeall', keys(%opts), $impl, @tfiles;
     print "$cmd\n";
 
@@ -62,7 +83,6 @@
 
         return @hits;
     }
-
 }
 
 use Parrot::Test::Harness %harness_args;
Index: t/passing_spec
===================================================================
--- t/passing_spec	(revision 0)
+++ t/passing_spec	(revision 0)
@@ -0,0 +1,36 @@
+# this is a list of all spec tests that are supposed to pass
+# on current rakudo.
+# empty lines and those beginning with a # are ignored
+
+S02-literals/autoref.t
+S02-literals/hex_chars.t
+S03-operators/equality.t
+S03-operators/not.t
+S03-operators/relational.t
+S04-statements/until.t
+S04-statements/while.t
+S12-class/attributes.t
+S12-class/instantiate.t
+S12-class/parent_attributes.t
+t/spec/S12-methods/calling_syntax.t
+S29-array/delete.t
+S29-array/exists.t
+S29-array/keys_values.t
+S29-array/kv.t
+S29-array/pairs.t
+S29-list/mutating_listops.t
+S29-num/abs.t
+S29-num/complex.t
+S29-num/exp.t
+S29-num/int.t
+S29-num/log.t
+S29-num/pi.t
+S29-num/roots.t
+S29-num/sign.t
+S29-num/sqrt.t
+S29-str/append.t
+S29-str/capitalize.t
+S29-str/comb.t
+S29-str/lcfirst.t
+S29-str/sprintf.t
+S29-str/ucfirst.t

Property changes on: t/passing_spec
___________________________________________________________________
Name: svn:mime-type
   + text/plain; charset=UTF-8
Name: svn:eol-style
   + native

Index: config/makefiles/root.in
===================================================================
--- config/makefiles/root.in	(revision 27698)
+++ config/makefiles/root.in	(working copy)
@@ -150,12 +150,20 @@
             t/spec/S03-operators \
             t/spec/S04-statements \
             t/spec/S12-class \
+            t/spec/S12-role \
+            t/spec/S12-methods \
+            t/spec/S12-attributes \
             t/spec/S29-array \
             t/spec/S29-hash \
             t/spec/S29-list \
             t/spec/S29-num \
             t/spec/S29-str \
 
+spectest_regression: all t/spec
+	cd t/spec && svn up
+	$(PERL) t/harness --fudge --regression-only --keep-exit-code \
+            t/spec/ \
+
 fulltest: all testtest spectest
 
 t/spec:

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to