Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fwd: Parallelize the Perl 6 tests #212

Closed
p6rt opened this issue Aug 2, 2008 · 17 comments
Closed

Fwd: Parallelize the Perl 6 tests #212

p6rt opened this issue Aug 2, 2008 · 17 comments

Comments

@p6rt
Copy link

p6rt commented Aug 2, 2008

Migrated from rt.perl.org#57530 (status was 'resolved')

Searchable as RT57530$

@p6rt
Copy link
Author

p6rt commented Aug 2, 2008

From @pmichaud

Schwern provided the following patch at the OSCON hackathon,
but we should probably test it on a couple of other architectures
before applying it. So, can others apply, test, and report
results?

If it works on sufficient platforms, we can apply it.

Thanks!

Pm

----- Forwarded message from Michael G Schwern <schwern@​pobox.com> -----

Date​: Sat, 26 Jul 2008 19​:44​:36 -0700
From​: Michael G Schwern <schwern@​pobox.com>
To​: "Patrick R. Michaud" <pmichaud@​pobox.com>
Subject​: Parallelize the Perl 6 tests

Turns on parallel testing for the perl 6 tests
* default 3 jobs in parallel. Useful for dual cores,
  not so much to swamp a single core machine.
* introduces a "jobs" option Parrot​::Test​::Harness
* also a PARROT_HARNESS_JOBS environment variable

Runs the spectest_regression about 50% faster on my Macbook.

--
Insulting our readers is part of our business model.
  http://somethingpositive.net/sp07122005.shtml

Index​: lib/Parrot/Test/Harness.pm

--- lib/Parrot/Test/Harness.pm (revision 29706)
+++ lib/Parrot/Test/Harness.pm (working copy)
@​@​ -162,12 +162,14 @​@​
  exit unless my @​files = get_files(%options);

  if (eval { require TAP​::Harness; 1 }) {
- my %options =
+ my %harness_options =
  $options{exec} ? ( exec => $options{exec} )
  : $options{compiler} ? ( exec => [ '../../parrot', './' . $options{compiler} ] )
  : ();
- TAP​::Harness->new( \%options )->runtests( @​files );

+ $harness_options{jobs} = $ENV{PARROT_HARNESS_JOBS} || $options{jobs} || 1;
+ TAP​::Harness->new( \%harness_options )->runtests( @​files );
+
  return;
  }

Index​: languages/perl6/t/harness

--- languages/perl6/t/harness (revision 29782)
+++ languages/perl6/t/harness (working copy)
@​@​ -11,7 +11,6 @​@​
use lib qw( ../../lib );
use strict;

-our %harness_args;
our $recurse = 1;

our %harness_args = (
@​@​ -22,6 +21,10 @​@​
GetOptions(
  'tests-from-file=s' => \my $list_file,
  'fudge' => \my $do_fudge,
+
+ # A sensible default is num_cores + 1.
+ # Many people have two cores these days.
+ 'jobs​:3' => \$harness_args{jobs},
  );

Index​: languages/perl6/config/makefiles/root.in

--- languages/perl6/config/makefiles/root.in (revision 29782)
+++ languages/perl6/config/makefiles/root.in (working copy)
@​@​ -189,7 +189,7 @​@​

# NOTE​: eventually, we should remove --keep-exit-code and --fudge
# as the goal is that all tests must pass without fudge
-HARNESS_WITH_FUDGE = $(PERL) t/harness --fudge --keep-exit-code
+HARNESS_WITH_FUDGE = $(PERL) t/harness --fudge --keep-exit-code --jobs

spectest​: all t/spec
  -cd t/spec && svn up
@​@​ -213,7 +213,7 @​@​

# Run a single test
t/*.t t/*/*.t t/*/*/*.t​: all
- @​$(HARNESS_WITH_FUDGE) $@​
+ @​$(HARNESS_WITH_FUDGE) --jobs=1 $@​

t/localtest.data​:
  $(PERL) -MExtUtils​::Command -e test_f $@​

----- End forwarded message -----

@p6rt
Copy link
Author

p6rt commented Aug 2, 2008

From @coke

On Sat, Aug 2, 2008 at 1​:52 PM, Patrick R. Michaud (via RT)
<perl6-bugs-followup@​perl.org> wrote​:

# New Ticket Created by Patrick R. Michaud
# Please include the string​: [perl #​57530]
# in the subject line of all future correspondence about this issue.
# <URL​: http://rt.perl.org/rt3/Ticket/Display.html?id=57530 >

Schwern provided the following patch at the OSCON hackathon,
but we should probably test it on a couple of other architectures
before applying it. So, can others apply, test, and report
results?

If it works on sufficient platforms, we can apply it.
<SNIP>

It'd be nice if we used the same env var for this as we did for the
main harness. (that one is currently TEST_JOBS, iirc.)

--
Will "Coke" Coleda

@p6rt
Copy link
Author

p6rt commented Aug 2, 2008

The RT System itself - Status changed from 'new' to 'open'

@p6rt
Copy link
Author

p6rt commented Sep 10, 2008

From @ronaldxs

It'd be nice if we used the same env var for this as we did for the
main harness. (that one is currently TEST_JOBS, iirc.)

Per request from moritz I have come up with an updated patch that seems
to apply cleanly and tested it on Ubuntu and cygwin/Windows Vista. It
gives the expected output for "make test" and "make spectest" in both
cases and gives a nice performance boost under Ubuntu. Under
cygwin/Windows Vista however the performance seems a bit slower and I
wonder if we shouldn't really check for the OS or use 'jobs​:1' in
languages/perl6/t/harness rather than 'jobs​:3'.

Per the suggestion above the controlling environment variable in the
patch is TEST_JOBS.

Ron

@p6rt
Copy link
Author

p6rt commented Sep 10, 2008

From @ronaldxs

paratest.patch
Index: lib/Parrot/Test/Harness.pm
===================================================================
--- lib/Parrot/Test/Harness.pm	(revision 30967)
+++ lib/Parrot/Test/Harness.pm	(working copy)
@@ -166,12 +166,13 @@
     exit unless my @files = get_files(%options);
 
     if (eval { require TAP::Harness; 1 }) {
-        my %opts =
+        my %harness_options =
               $options{exec}     ? ( exec => $options{exec} )
             : $options{compiler} ? ( exec => [ '../../parrot', './' . $options{compiler} ] )
             :                      ();
-        $opts{verbosity} = $options{verbosity} ? $options{verbosity} : 0;
-        TAP::Harness->new( \%opts )->runtests( @files );
+        $harness_options{verbosity} = $options{verbosity} ? $options{verbosity} : 0;
+        $harness_options{jobs} = $ENV{TEST_JOBS} || $options{jobs} || 1;
+        TAP::Harness->new( \%harness_options )->runtests( @files );
 
         return;
     }
Index: languages/perl6/t/harness
===================================================================
--- languages/perl6/t/harness	(revision 30967)
+++ languages/perl6/t/harness	(working copy)
@@ -24,6 +24,9 @@
         'tests-from-file=s' => \my $list_file,
         'fudge'             => \my $do_fudge,
         'verbosity=i'       => \$harness_args{verbosity},
+        # A sensible default is num_cores + 1.
+        # Many people have two cores these days.
+        'jobs:3'            => \$harness_args{jobs},        
     );
 
 
Index: languages/perl6/config/makefiles/root.in
===================================================================
--- languages/perl6/config/makefiles/root.in	(revision 30967)
+++ languages/perl6/config/makefiles/root.in	(working copy)
@@ -196,7 +196,7 @@
 
 # NOTE: eventually, we should remove --keep-exit-code and --fudge
 #       as the goal is that all tests must pass without fudge
-HARNESS_WITH_FUDGE = $(PERL) t/harness --fudge --keep-exit-code
+HARNESS_WITH_FUDGE = $(PERL) t/harness --fudge --keep-exit-code --jobs
 
 spectest: all t/spec
 	-cd t/spec && svn up
@@ -224,7 +224,7 @@
 
 # Run a single test
 t/*.t t/*/*.t t/*/*/*.t: all
-	@$(HARNESS_WITH_FUDGE) $@
+	@$(HARNESS_WITH_FUDGE) --jobs=1 $@
 
 t/localtest.data:
 	$(PERL) -MExtUtils::Command -e test_f $@

@p6rt
Copy link
Author

p6rt commented Sep 10, 2008

From @moritz

Ron Schmidt via RT wrote​:

It'd be nice if we used the same env var for this as we did for the
main harness. (that one is currently TEST_JOBS, iirc.)

Per request from moritz I have come up with an updated patch that seems
to apply cleanly and tested it on Ubuntu and cygwin/Windows Vista. It
gives the expected output for "make test" and "make spectest" in both
cases and gives a nice performance boost under Ubuntu.

Thank you very much. On Debian with two cores I get
2 jobs​: 4m04
1 job​: 2m35

Which is good enough for me ;-)

Under
cygwin/Windows Vista however the performance seems a bit slower and I
wonder if we shouldn't really check for the OS or use 'jobs​:1' in
languages/perl6/t/harness rather than 'jobs​:3'.

Is there a good reason to test in parallel at all if TEST_JOBS isn't set
as an environment? That's how perl and parrot core tests do it, and I
think it's quite a good practice. People who test often will just define
that environment variable globally.

Per the suggestion above the controlling environment variable in the
patch is TEST_JOBS.

++ for that, and ++ for the patch.

Now we need some feedback from MacOS X and windows/msvc users, then I'll
apply the patch.

Cheers,
Moritz

--
Moritz Lenz
http://moritz.faui2k3.org/ | http://perl-6.de/

@p6rt
Copy link
Author

p6rt commented Sep 10, 2008

From @moritz

Moritz Lenz wrote​:

Thank you very much. On Debian with two cores I get
2 jobs​: 4m04
1 job​: 2m35

Well, actually it's the other way round ;-)

--
Moritz Lenz
http://moritz.faui2k3.org/ | http://perl-6.de/

@p6rt
Copy link
Author

p6rt commented Sep 10, 2008

From @rurban

confirmed moritz cygwin test

Interesting is that the step from Test-Harness-3.12 to Test-Harness-3.13
makes the difference.

make spectest_regression
jobs​:3 + 2 physical cores + Test-Harness-3.13
Files=159, Tests=4859, 78 wallclock secs ( 0.72 usr 0.25 sys + 143.56
cusr 8.31 csys = 152.84 CPU)
Result​: PASS

without patch or with patch + Test​::Harness-3.12
Files=159, Tests=4859, 137 wallclock secs ( 0.12 usr 0.12 sys + 130.19
cusr 7.13 csys = 137.57 CPU)
Result​: PASS
--
Reini Urban

@p6rt
Copy link
Author

p6rt commented Sep 10, 2008

From @ronaldxs

On Wed Sep 10 09​:37​:42 2008, rurban wrote​:

confirmed moritz cygwin test

Interesting is that the step from Test-Harness-3.12 to Test-Harness-
3.13
makes the difference.

I upgraded my Test​::Harness for cygwin and my performance started to
improve noticeably with TEST_JOBS > 1. If you still, for whatever
reason, want to leave the default number of jobs at 1 for spectest and
spectest_regression, you can just apply the first patch to
lib/Parrot/Test/Harness.pm, and leave out the patches to the other two
files. I tested that and it defaults the TEST_JOBS to 1 and obeys the
TEST_JOBS environment variable if it's set. On the other hand going
with schwern's original intent may be OK and may be improved, if
someone asks me to try being more ambitious, by, for example, having
perl6/languages/t/harness warn about old versions Test​::Harness under
circumstances where it may cause trouble.

@p6rt
Copy link
Author

p6rt commented Sep 10, 2008

From @moritz

Ron Schmidt via RT wrote​:

It'd be nice if we used the same env var for this as we did for the
main harness. (that one is currently TEST_JOBS, iirc.)

Per request from moritz I have come up with an updated patch that seems
to apply cleanly and tested it on Ubuntu and cygwin/Windows Vista. It
gives the expected output for "make test" and "make spectest" in both
cases and gives a nice performance boost under Ubuntu. Under
cygwin/Windows Vista however the performance seems a bit slower and I
wonder if we shouldn't really check for the OS or use 'jobs​:1' in
languages/perl6/t/harness rather than 'jobs​:3'.

Per the suggestion above the controlling environment variable in the
patch is TEST_JOBS.

Attached is a slightly improved patch​:
1) doesn't have trailing spaces in t/harness
2) 'make localtest_loud' works as before
(with the old patch you wouldn't see the verbose output, which is
crucial when you try to fudge tests for rakudo)
3) 'make t/spec/$path_to_file.t' is now verbose by default (which also
makes sense because you usually don't want to run many of those from the
command line)

Moritz

--
Moritz Lenz
http://moritz.faui2k3.org/ | http://perl-6.de/

@p6rt
Copy link
Author

p6rt commented Sep 10, 2008

From @moritz

parallel-r.patch
Index: lib/Parrot/Test/Harness.pm
===================================================================
--- lib/Parrot/Test/Harness.pm	(revision 30954)
+++ lib/Parrot/Test/Harness.pm	(working copy)
@@ -166,12 +166,13 @@
     exit unless my @files = get_files(%options);
 
     if (eval { require TAP::Harness; 1 }) {
-        my %opts =
+        my %harness_options =
               $options{exec}     ? ( exec => $options{exec} )
             : $options{compiler} ? ( exec => [ '../../parrot', './' . $options{compiler} ] )
             :                      ();
-        $opts{verbosity} = $options{verbosity} ? $options{verbosity} : 0;
-        TAP::Harness->new( \%opts )->runtests( @files );
+        $harness_options{verbosity} = $options{verbosity} ? $options{verbosity} : 0;
+        $harness_options{jobs} = $ENV{TEST_JOBS} || $options{jobs} || 1;
+        TAP::Harness->new( \%harness_options )->runtests( @files );
 
         return;
     }
Index: languages/perl6/t/harness
===================================================================
--- languages/perl6/t/harness	(revision 30969)
+++ languages/perl6/t/harness	(working copy)
@@ -24,6 +24,9 @@
         'tests-from-file=s' => \my $list_file,
         'fudge'             => \my $do_fudge,
         'verbosity=i'       => \$harness_args{verbosity},
+        # A sensible default is num_cores + 1.
+        # Many people have two cores these days.
+        'jobs:3'            => \$harness_args{jobs},
     );
 
 
Index: languages/perl6/config/makefiles/root.in
===================================================================
--- languages/perl6/config/makefiles/root.in	(revision 30969)
+++ languages/perl6/config/makefiles/root.in	(working copy)
@@ -197,21 +197,22 @@
 # NOTE: eventually, we should remove --keep-exit-code and --fudge
 #       as the goal is that all tests must pass without fudge
 HARNESS_WITH_FUDGE = $(PERL) t/harness --fudge --keep-exit-code
+HARNESS_WITH_FUDGE_JOBS = $(HARNESS_WITH_FUDGE) --jobs
 
 spectest: all t/spec
 	-cd t/spec && svn up
-	$(HARNESS_WITH_FUDGE) t/spec
+	$(HARNESS_WITH_FUDGE_JOBS) t/spec
 
 # Run the spectests that we know work.
 spectest_regression: all t/spec t/spectest_regression.data
 	-cd t/spec && svn up
-	$(HARNESS_WITH_FUDGE) --tests-from-file=t/spectest_regression.data
+	$(HARNESS_WITH_FUDGE_JOBS) --tests-from-file=t/spectest_regression.data
 
 fulltest: coretest spectest_regression codetest
 
 # Run the tests in t/localtest.data
 localtest: all t/spec t/localtest.data
-	@$(HARNESS_WITH_FUDGE) --tests-from-file=t/localtest.data
+	@$(HARNESS_WITH_FUDGE_JOBS) --tests-from-file=t/localtest.data
 
 # Run the tests in t/localtest.data with a higher verbosity
 localtest_loud: all t/spec t/localtest.data
@@ -220,11 +221,11 @@
 # Run many tests of your choise.
 # make somtests TESTFILES=t/foo/bar
 sometests: all
-	@$(HARNESS_WITH_FUDGE) $(TESTFILES)
+	@$(HARNESS_WITH_FUDGE_JOBS) $(TESTFILES)
 
 # Run a single test
 t/*.t t/*/*.t t/*/*/*.t: all
-	@$(HARNESS_WITH_FUDGE) $@
+	@$(HARNESS_WITH_FUDGE) --verbosity=1 $@
 
 t/localtest.data:
 	$(PERL) -MExtUtils::Command -e test_f $@

@p6rt
Copy link
Author

p6rt commented Sep 11, 2008

From @jkeenan

Moritz,

I applied parallel-r.patch to trunk at r30978 on Darwin (10.4 PPC),
successfully built and tested Parrot, built Perl 6, then got the results
below out of 'make test'.

Since I build and test Perl 6 infrequently, I'm not sure whether these
results are different from what I would have gotten without the patch
applied. But everything passed!

Thank you very much.
kid51

/usr/local/bin/perl t/harness t/00-parrot t/01-sanity
t/00-parrot/01-literals............ok
t/00-parrot/02-op-math.............ok
t/00-parrot/03-op-logic............ok
t/00-parrot/04-op-cmp..............ok
t/00-parrot/05-var-array...........ok
t/00-parrot/05-var.................ok
t/00-parrot/06-op-inplace..........ok
t/00-parrot/07-op-string...........ok
t/00-parrot/08-regex...............ok
t/01-sanity/01-tap.................ok
t/01-sanity/02-counter.............ok
t/01-sanity/03-equal...............ok
t/01-sanity/04-if..................ok
t/01-sanity/05-sub.................ok
t/01-sanity/06-use.................ok
t/01-sanity/07-binding.............ok
t/01-sanity/07-defined.............ok
t/01-sanity/07-end-blocks..........ok
t/01-sanity/07-for.................ok
t/01-sanity/07-isa.................ok
t/01-sanity/07-range...............ok
t/01-sanity/07-ref.................ok
t/01-sanity/07-simple-multisubs....ok
t/01-sanity/07-split...............ok
t/01-sanity/07-substr..............ok
t/01-sanity/07-try.................ok
t/01-sanity/08-say.................ok
t/01-sanity/09-types...............ok
All tests successful.
Files=28, Tests=232, 82 wallclock secs ( 0.36 usr 0.29 sys + 71.43 cusr
6.98 csys = 79.06 CPU)
Result​: PASS
prove t/pmc
t/pmc/mutable...................ok
t/pmc/mutablevar................ok
t/pmc/perl6multisub-arity.......ok
t/pmc/perl6multisub-basic.......ok
t/pmc/perl6multisub-tiebreak....ok
t/pmc/perl6multisub-type........ok
All tests successful.
Files=6, Tests=39, 8 wallclock secs ( 0.10 usr 0.08 sys + 6.45 cusr
1.21 csys = 7.84 CPU)
Result​: PASS
make -C /Users/jimk/work/parrot codetest
/usr/local/bin/perl t/harness --gc-debug --running-make-test --code-tests
t/distro/file_metadata.........# Collecting svn​:mime-type attributes...
t/distro/file_metadata.........1/5 # Collecting svn​:keywords attributes...
t/distro/file_metadata.........3/5 # Collecting svn​:eol-style attributes...
t/distro/file_metadata.........4/5 # Collecting svn​:eol-style attributes...
t/distro/file_metadata.........ok
t/codingstd/c_code_coda........ok
t/codingstd/c_cppcomments......ok
t/codingstd/c_header_guards....ok
t/codingstd/c_indent...........ok
t/codingstd/c_macro_args.......ok
t/codingstd/c_operator.........ok
t/codingstd/c_parens...........ok
t/codingstd/c_returns..........ok
t/codingstd/c_struct...........ok
t/codingstd/check_isxxx........ok
t/codingstd/check_toxxx........ok
t/codingstd/copyright..........ok
t/codingstd/cuddled_else.......ok
t/codingstd/filenames..........ok
t/codingstd/gmt_utc............ok
t/codingstd/linelength.........ok
t/codingstd/pccmethod_deps.....ok
t/codingstd/pdd_format.........ok
t/codingstd/perlcritic.........ok
t/codingstd/pir_code_coda......ok
t/codingstd/svn_id.............ok
t/codingstd/tabs...............ok
t/codingstd/trailing_space.....ok
All tests successful.
Files=24, Tests=374, 960 wallclock secs ( 0.64 usr 0.37 sys + 628.56
cusr 28.01 csys = 657.58 CPU)
Result​: PASS

@p6rt
Copy link
Author

p6rt commented Sep 11, 2008

From @rurban

2008/9/11 James Keenan via RT <perl6-bugs-followup@​perl.org>​:

Moritz,

I applied parallel-r.patch to trunk at r30978 on Darwin (10.4 PPC),
successfully built and tested Parrot, built Perl 6, then got the results
below out of 'make test'.

Since I build and test Perl 6 infrequently, I'm not sure whether these
results are different from what I would have gotten without the patch
applied. But everything passed!

Wrong make target.
You have to run

$ cd languages/perl6
$ make spectest_regression

to test this patch and the speed difference.

Thank you very much.
kid51

/usr/local/bin/perl t/harness t/00-parrot t/01-sanity
t/00-parrot/01-literals............ok
t/00-parrot/02-op-math.............ok
t/00-parrot/03-op-logic............ok
t/00-parrot/04-op-cmp..............ok
t/00-parrot/05-var-array...........ok
t/00-parrot/05-var.................ok
t/00-parrot/06-op-inplace..........ok
t/00-parrot/07-op-string...........ok
t/00-parrot/08-regex...............ok
t/01-sanity/01-tap.................ok
t/01-sanity/02-counter.............ok
t/01-sanity/03-equal...............ok
t/01-sanity/04-if..................ok
t/01-sanity/05-sub.................ok
t/01-sanity/06-use.................ok
t/01-sanity/07-binding.............ok
t/01-sanity/07-defined.............ok
t/01-sanity/07-end-blocks..........ok
t/01-sanity/07-for.................ok
t/01-sanity/07-isa.................ok
t/01-sanity/07-range...............ok
t/01-sanity/07-ref.................ok
t/01-sanity/07-simple-multisubs....ok
t/01-sanity/07-split...............ok
t/01-sanity/07-substr..............ok
t/01-sanity/07-try.................ok
t/01-sanity/08-say.................ok
t/01-sanity/09-types...............ok
All tests successful.
Files=28, Tests=232, 82 wallclock secs ( 0.36 usr 0.29 sys + 71.43 cusr
6.98 csys = 79.06 CPU)
Result​: PASS
prove t/pmc
t/pmc/mutable...................ok
t/pmc/mutablevar................ok
t/pmc/perl6multisub-arity.......ok
t/pmc/perl6multisub-basic.......ok
t/pmc/perl6multisub-tiebreak....ok
t/pmc/perl6multisub-type........ok
All tests successful.
Files=6, Tests=39, 8 wallclock secs ( 0.10 usr 0.08 sys + 6.45 cusr
1.21 csys = 7.84 CPU)
Result​: PASS
make -C /Users/jimk/work/parrot codetest
/usr/local/bin/perl t/harness --gc-debug --running-make-test --code-tests
t/distro/file_metadata.........# Collecting svn​:mime-type attributes...
t/distro/file_metadata.........1/5 # Collecting svn​:keywords attributes...
t/distro/file_metadata.........3/5 # Collecting svn​:eol-style attributes...
t/distro/file_metadata.........4/5 # Collecting svn​:eol-style attributes...
t/distro/file_metadata.........ok
t/codingstd/c_code_coda........ok
t/codingstd/c_cppcomments......ok
t/codingstd/c_header_guards....ok
t/codingstd/c_indent...........ok
t/codingstd/c_macro_args.......ok
t/codingstd/c_operator.........ok
t/codingstd/c_parens...........ok
t/codingstd/c_returns..........ok
t/codingstd/c_struct...........ok
t/codingstd/check_isxxx........ok
t/codingstd/check_toxxx........ok
t/codingstd/copyright..........ok
t/codingstd/cuddled_else.......ok
t/codingstd/filenames..........ok
t/codingstd/gmt_utc............ok
t/codingstd/linelength.........ok
t/codingstd/pccmethod_deps.....ok
t/codingstd/pdd_format.........ok
t/codingstd/perlcritic.........ok
t/codingstd/pir_code_coda......ok
t/codingstd/svn_id.............ok
t/codingstd/tabs...............ok
t/codingstd/trailing_space.....ok
All tests successful.
Files=24, Tests=374, 960 wallclock secs ( 0.64 usr 0.37 sys + 628.56
cusr 28.01 csys = 657.58 CPU)
Result​: PASS

--
Reini Urban
http://phpwiki.org/ http://murbreak.at/

@p6rt
Copy link
Author

p6rt commented Sep 11, 2008

From @moritz

Since the feedback so far was mostly positive (and none defeating) I now
applied the patch. Thanks go to all contributers and testers.

If there are some problems with the test harness, please open a new ticket.

Moritz

@p6rt
Copy link
Author

p6rt commented Sep 11, 2008

@moritz - Status changed from 'open' to 'resolved'

@p6rt p6rt closed this as completed Sep 11, 2008
@p6rt
Copy link
Author

p6rt commented Sep 11, 2008

From @jkeenan

On Thu Sep 11 08​:30​:49 2008, moritz wrote​:

Since the feedback so far was mostly positive (and none defeating) I now
applied the patch. Thanks go to all contributers and testers.

If there are some problems with the test harness, please open a new
ticket.

FWIW​: Here are the results I got when I ran make spectest_regression as
you advised.

@p6rt
Copy link
Author

p6rt commented Sep 11, 2008

From @jkeenan

Checked out revision 22229.
cd t/spec && svn up
At revision 22229.
/usr/local/bin/perl t/harness --fudge --keep-exit-code --jobs --tests-from-file=t/spectest_regression.data
t/spec/S02-builtin_data_types/anon_block.rakudo................ ok
===( 48 )==========================================================Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
t/spec/S02-builtin_data_types/array.rakudo..................... ok
t/spec/S02-builtin_data_types/array_extending.rakudo........... ok
===( 40 )==========================================================Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
t/spec/S02-builtin_data_types/array_ref.rakudo................. ok
t/spec/S02-builtin_data_types/bool.t........................... ok
===( 16 )==========================================================Use of uninitialized value
Use of uninitialized value
===( 24 )==========================================================Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
t/spec/S02-builtin_data_types/flattening.rakudo................ ok
===( 12 )==========================================================Use of uninitialized value
Use of uninitialized value
===( 16 )==========================================================Use of uninitialized value
Use of uninitialized value
===( 24 )==========================================================Use of uninitialized value
Use of uninitialized value
===( 32 )==========================================================Use of uninitialized value
Use of uninitialized value
t/spec/S02-builtin_data_types/hash.rakudo...................... ok
===( 32 )==========================================================Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
t/spec/S02-builtin_data_types/hash_ref.rakudo.................. ok
t/spec/S02-builtin_data_types/nested_arrays.t.................. ok
t/spec/S02-builtin_data_types/nested_pairs.t................... ok
===( 7 )==========================================================error​:imcc​:syntax error, unexpected IDENTIFIER, expecting '\n' ('_1')
  in file 'EVAL_13' line 54
error​:imcc​:syntax error, unexpected IDENTIFIER, expecting '\n' ('_2')
  in file 'EVAL_13' line 64
error​:imcc​:syntax error, unexpected IDENTIFIER, expecting '\n' ('_2')
  in file 'EVAL_13' line 79
t/spec/S02-builtin_data_types/num.rakudo....................... ok
t/spec/S02-builtin_data_types/range.rakudo..................... ok
===( 1 )==========================================================Use of uninitialized value
t/spec/S02-builtin_data_types/subscripts_and_context.rakudo.... ok
t/spec/S02-builtin_data_types/type.rakudo...................... ok
t/spec/S02-literals/array-interpolation.rakudo................. ok
t/spec/S02-literals/autoref.rakudo............................. ok
t/spec/S02-literals/hash-interpolation.rakudo.................. ok
t/spec/S02-literals/hex_chars.t................................ ok
t/spec/S02-literals/pairs.rakudo............................... ok
t/spec/S02-literals/radix.rakudo............................... ok
t/spec/S02-magicals/dollar-underscore.t........................ ok
===( 3 )==========================================================Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
===( 24 )==========================================================Use of uninitialized value
t/spec/S02-names_and_variables/perl.rakudo..................... ok
t/spec/S02-polymorphic_types/subset-code.t..................... ok
t/spec/S02-polymorphic_types/subset-range.t.................... ok
t/spec/S02-whitespace_and_comments/one-pass-parsing.t.......... ok
===( 32 )==========================================================Use of uninitialized value
t/spec/S03-junctions/boolean-context.rakudo.................... ok
t/spec/S03-junctions/misc.rakudo............................... ok
===( 128 )==========================================================Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
===( 160 )==========================================================Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
t/spec/S03-operators/arith.rakudo.............................. ok
t/spec/S03-operators/assign-is-not-binding.rakudo.............. ok
===( 10 )==========================================================Use of uninitialized value
===( 128 )==========================================================Use of uninitialized value
===( 160 )==========================================================Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
t/spec/S03-operators/assign.rakudo............................. ok
t/spec/S03-operators/autoincrement.rakudo...................... ok
t/spec/S03-operators/binding-arrays.rakudo..................... ok
t/spec/S03-operators/binding-hashes.rakudo..................... ok
t/spec/S03-operators/binding-scalars.rakudo.................... ok
t/spec/S03-operators/comparison.t.............................. ok
===( 24 )==========================================================Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
===( 40 )==========================================================Use of uninitialized value
t/spec/S03-operators/context-forcers.rakudo.................... ok
t/spec/S03-operators/context.rakudo............................ Failed 1/35 subtests
  (less 10 skipped subtests​: 24 okay)
t/spec/S03-operators/cross-metaop.rakudo....................... ok
===( 6 )==========================================================Use of uninitialized value
===( 8 )==========================================================Use of uninitialized value
===( 12 )==========================================================Use of uninitialized value
t/spec/S03-operators/equality.t................................ ok
===( 20 )==========================================================Use of uninitialized value
===( 40 )==========================================================Use of uninitialized value
===( 48 )==========================================================Use of uninitialized value
t/spec/S03-operators/misc.rakudo............................... ok
t/spec/S03-operators/not.rakudo................................ ok
===( 10 )==========================================================Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
===( 24 )==========================================================Use of uninitialized value
===( 32 )==========================================================Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
t/spec/S03-operators/numeric-context.rakudo.................... ok
t/spec/S03-operators/precedence.rakudo......................... ok
t/spec/S03-operators/range.rakudo.............................. ok
t/spec/S03-operators/relational.t.............................. ok
t/spec/S03-operators/repeat.rakudo............................. ok
t/spec/S03-operators/short-circuit.rakudo...................... ok
===( 32 )==========================================================Method 'ACCEPTS' not found for invocant of class 'Failure'
current instr.​: 'infix​:~~' pc 13781 (src/gen_builtins.pir​:8667)
called from Sub '_block225' pc 2258 (EVAL_17​:627)
called from Sub '_block11' pc 335 (EVAL_17​:72)
called from Sub 'parrot;PCT​::HLLCompiler;eval' pc 806 (src/PCT/HLLCompiler.pir​:481)
called from Sub 'parrot;PCT​::HLLCompiler;evalfiles' pc 1078 (src/PCT/HLLCompiler.pir​:610)
called from Sub 'parrot;PCT​::HLLCompiler;command_line' pc 1257 (src/PCT/HLLCompiler.pir​:699)
called from Sub 'parrot;Perl6​::Compiler;main' pc 15969 (perl6.pir​:172)
t/spec/S03-operators/smartmatch.rakudo......................... Dubious, test returned 1 (wstat 256, 0x100)
Failed 14/52 subtests
  (less 22 skipped subtests​: 16 okay)
t/spec/S03-operators/spaceship-and-containers.t................ ok
t/spec/S03-operators/ternary.rakudo............................ ok
t/spec/S03-operators/true.t.................................... ok
t/spec/S03-operators/value_equivalence.rakudo.................. ok
t/spec/S04-declarations/implicit-parameter.t................... ok
t/spec/S04-declarations/multiple.rakudo........................ ok
t/spec/S04-declarations/my.rakudo.............................. ok
t/spec/S04-statement-modifiers/for.rakudo...................... ok
t/spec/S04-statement-modifiers/given.rakudo.................... ok
t/spec/S04-statement-modifiers/if.rakudo....................... ok
t/spec/S04-statement-modifiers/unless.t........................ ok
t/spec/S04-statement-modifiers/until.rakudo.................... ok
t/spec/S04-statement-modifiers/values_in_bool_context.t........ ok
t/spec/S04-statement-modifiers/while.rakudo.................... ok
t/spec/S04-statements/do.rakudo................................ ok
t/spec/S04-statements/for-scope.t.............................. ok
t/spec/S04-statements/for.rakudo............................... ok
t/spec/S04-statements/for_with_only_one_item.t................. ok
t/spec/S04-statements/given.rakudo............................. Failed 1/48 subtests
  (less 27 skipped subtests​: 20 okay)
t/spec/S04-statements/if.rakudo................................ ok
t/spec/S04-statements/loop.rakudo.............................. ok
t/spec/S04-statements/map-and-sort-in-for.t.................... ok
t/spec/S04-statements/no-implicit-block.rakudo................. ok
t/spec/S04-statements/repeat.rakudo............................ ok
t/spec/S04-statements/return.rakudo............................ ok
t/spec/S04-statements/terminator.t............................. ok
t/spec/S04-statements/try.rakudo............................... ok
t/spec/S04-statements/unless.t................................. ok
t/spec/S04-statements/until.t.................................. ok
t/spec/S04-statements/while.rakudo............................. ok
t/spec/S05-mass/rx.rakudo...................................... ok
===( 12 )==========================================================Null PMC access in can()
current instr.​: 'parrot;Perl6Object;infix​:=' pc 37 (src/gen_builtins.pir​:45)
called from Sub '_block116' pc 1832 (EVAL_14​:561)
called from Sub '_block100' pc 1504 (EVAL_14​:453)
called from Sub '_block11' pc 300 (EVAL_14​:63)
called from Sub 'parrot;PCT​::HLLCompiler;eval' pc 806 (src/PCT/HLLCompiler.pir​:481)
called from Sub 'parrot;PCT​::HLLCompiler;evalfiles' pc 1078 (src/PCT/HLLCompiler.pir​:610)
called from Sub 'parrot;PCT​::HLLCompiler;command_line' pc 1257 (src/PCT/HLLCompiler.pir​:699)
called from Sub 'parrot;Perl6​::Compiler;main' pc 15969 (perl6.pir​:172)
t/spec/S05-match/blocks.rakudo................................. Dubious, test returned 1 (wstat 256, 0x100)
Failed 5/17 subtests
t/spec/S05-metasyntax/changed.rakudo........................... ok
===( 4 )==========================================================Use of uninitialized value
t/spec/S05-metasyntax/regex.rakudo............................. ok
t/spec/S05-metasyntax/unknown.t................................ ok
t/spec/S05-substitution/subst.rakudo........................... ok
t/spec/S05-transliteration/trans.rakudo........................ ok
t/spec/S06-advanced_subroutine_features/recurse.rakudo......... ok
===( 48 )==========================================================Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
t/spec/S06-advanced_subroutine_features/return.rakudo.......... ok
t/spec/S06-multi/syntax.t...................................... ok
t/spec/S06-multi/type-based.rakudo............................. ok
t/spec/S06-signature/mixed-placeholders.t...................... ok
===( 48 )==========================================================Use of uninitialized value
Use of uninitialized value
t/spec/S06-signature/named-parameters.rakudo................... ok
t/spec/S06-signature/named-placeholders.t...................... ok
t/spec/S06-signature/positional-placeholders.t................. ok
t/spec/S06-signature/slurpy-placeholders.t..................... ok
t/spec/S06-traits/is-copy.t.................................... ok
t/spec/S06-traits/is-rw.rakudo................................. ok
t/spec/S06-traits/misc.rakudo.................................. ok
t/spec/S12-attributes/class.t.................................. ok
t/spec/S12-attributes/delegation.rakudo........................ ok
t/spec/S12-class/anonymous.t................................... ok
t/spec/S12-class/attributes.rakudo............................. ok
t/spec/S12-class/inheritance-class-methods.t................... ok
t/spec/S12-class/inheritance.rakudo............................ ok
t/spec/S12-class/instantiate.t................................. ok
t/spec/S12-class/parent_attributes.t........................... ok
t/spec/S12-enums/as-role.t..................................... ok
t/spec/S12-methods/calling_syntax.t............................ ok
t/spec/S12-role/attributes.rakudo.............................. ok
t/spec/S12-role/composition.t.................................. ok
t/spec/S12-role/mixin.t........................................ ok
t/spec/S16-filehandles/io_in_while_loops.t..................... ok
===( 4 )==========================================================Use of uninitialized value
===( 8 )==========================================================Use of uninitialized value
t/spec/S16-io/basic-open.rakudo................................ ok
t/spec/S16-io/say.t............................................ ok
t/spec/S29-any/cmp.t........................................... ok
t/spec/S29-array/delete.t...................................... ok
t/spec/S29-array/exists.t...................................... ok
t/spec/S29-array/keys_values.t................................. ok
t/spec/S29-array/kv.t.......................................... ok
t/spec/S29-array/pairs.t....................................... ok
t/spec/S29-array/pop.t......................................... ok
t/spec/S29-array/push.rakudo................................... ok
t/spec/S29-array/shift.t....................................... ok
t/spec/S29-array/unshift.t..................................... ok
===( 1 )==========================================================Use of uninitialized value
t/spec/S29-hash/delete.rakudo.................................. ok
t/spec/S29-hash/exists.rakudo.................................. ok
===( 8 )==========================================================Use of uninitialized value
Use of uninitialized value
t/spec/S29-list/first.rakudo................................... ok
t/spec/S29-list/grep.rakudo.................................... ok
===( 20 )==========================================================Use of uninitialized value
Use of uninitialized value
t/spec/S29-list/join.t......................................... ok
t/spec/S29-list/map.rakudo..................................... ok
t/spec/S29-list/map_empty_list.t............................... ok
t/spec/S29-list/map_flattening.t............................... ok
t/spec/S29-list/map_function_return_values.rakudo.............. ok
t/spec/S29-list/map_topic.t.................................... ok
t/spec/S29-list/minmax.t....................................... ok
t/spec/S29-list/mutating_listops.t............................. ok
===( 10 )==========================================================Use of uninitialized value
Use of uninitialized value
t/spec/S29-list/reduce.rakudo.................................. ok
t/spec/S29-list/reverse.rakudo................................. ok
t/spec/S29-list/sort.rakudo.................................... ok
t/spec/S29-num/abs.t........................................... ok
t/spec/S29-num/complex.t....................................... ok
t/spec/S29-num/exp.t........................................... ok
===( 40 )==========================================================Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
===( 48 )==========================================================Use of uninitialized value
Use of uninitialized value
Use of uninitialized value
t/spec/S29-num/int.rakudo...................................... ok
t/spec/S29-num/log.rakudo...................................... ok
t/spec/S29-num/pi.rakudo....................................... ok
t/spec/S29-num/rand.t.......................................... ok
t/spec/S29-num/rounders.rakudo................................. ok
===( 6 )==========================================================Use of uninitialized value
t/spec/S29-num/sign.rakudo..................................... ok
t/spec/S29-num/sqrt.rakudo..................................... ok
t/spec/S29-str/append.t........................................ ok
t/spec/S29-str/capitalize.rakudo............................... ok
t/spec/S29-str/chop.rakudo..................................... ok
===( 12 )==========================================================Use of uninitialized value
===( 1 )==========================================================Use of uninitialized value
t/spec/S29-str/index.rakudo.................................... ok
t/spec/S29-str/lc.rakudo....................................... ok
t/spec/S29-str/lcfirst.rakudo.................................. ok
t/spec/S29-str/sprintf.rakudo.................................. ok
t/spec/S29-str/substr.rakudo................................... ok
t/spec/S29-str/uc.rakudo....................................... ok
t/spec/S29-str/ucfirst.rakudo.................................. ok
t/spec/S29-trig/trig.t......................................... ok
===( 53 )==========================================================
Test Summary Report


t/spec/S03-operators/context.rakudo (Wstat​: 0 Tests​: 35 Failed​: 1)
  Failed test​: 12
t/spec/S03-operators/smartmatch.rakudo (Wstat​: 256 Tests​: 38 Failed​: 0)
  Non-zero exit status​: 1
  Parse errors​: Bad plan. You planned 52 tests but ran 38.
t/spec/S04-statements/given.rakudo (Wstat​: 0 Tests​: 48 Failed​: 1)
  Failed test​: 43
t/spec/S05-match/blocks.rakudo (Wstat​: 256 Tests​: 12 Failed​: 0)
  Non-zero exit status​: 1
  Parse errors​: Bad plan. You planned 17 tests but ran 12.
Files=159, Tests=4852, 1554 wallclock secs ( 9.63 usr 2.60 sys + 1137.05 cusr 73.04 csys = 1222.32 CPU)
Result​: FAIL

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant