Excellent- applied. --Josh
At 18:03 on 03/21/2002 EST, Michel J Lambert <[EMAIL PROTECTED]> wrote: > Times are: > make quicktest, after caching output: 23 seconds > make test: 175 seconds > > make quicktest could screw up if: > - you ctrl-c it, or make test (although I haven't had problems with that > yet) during the compilation process at just the right time > - you do anything to invalidate existing .pbc files, such as rearranging > ops. not sure what else could trigger this. > > I still find it extremely useful, in spite of these limitations on its > usage. The patch is included below. > > Mike Lambert > > > > Index: Makefile.in > =================================================================== > RCS file: /cvs/public/parrot/Makefile.in,v > retrieving revision 1.140 > diff -u -r1.140 Makefile.in > --- Makefile.in 16 Mar 2002 14:38:25 -0000 1.140 > +++ Makefile.in 21 Mar 2002 22:48:56 -0000 > @@ -403,6 +403,11 @@ > .test_dummy_j: > $(PERL) t/harness -j > > +quicktest: $(TEST_PROG) assemble.pl .quicktest_dummy > + > +.quicktest_dummy: > + $(PERL) t/harness quick > + > mopstest: $(TEST_PROG) examples/assembly/mops.pbc > $(TEST_PROG) examples/assembly/mops.pbc > > Index: lib/Parrot/Test.pm > =================================================================== > RCS file: /cvs/public/parrot/lib/Parrot/Test.pm,v > retrieving revision 1.18 > diff -u -r1.18 Test.pm > --- lib/Parrot/Test.pm 4 Mar 2002 02:32:54 -0000 1.18 > +++ lib/Parrot/Test.pm 21 Mar 2002 22:49:01 -0000 > @@ -64,12 +64,27 @@ > my $t = $0; $t =~ s/\.t$/$count\.$_/; $t > } ( qw(pasm pbc out) ); > > - open ASSEMBLY, "> $as_f" or die "Unable to open '$as_f'"; > - binmode ASSEMBLY; > - print ASSEMBLY $assembly; > - close ASSEMBLY; > + my $can_skip_compile = $ENV{PARROT_QUICKTEST}; > + if ($can_skip_compile) > + { > + open INASSEMBLY, "$as_f" or $can_skip_compile = 0; > + if ($can_skip_compile) { > + local $/ = undef; > + my $inassembly = <INASSEMBLY>; > + close INASSEMBLY; > + $can_skip_compile = 0 if ($assembly ne $inassembly); > + $can_skip_compile = 0 if (not -e $by_f); > + } > + } > > - _run_command( "$PConfig{perl} assemble.pl $as_f --output $by_f" ); > + if (!$can_skip_compile) { > + open ASSEMBLY, "> $as_f" or die "Unable to open '$as_f'"; > + binmode ASSEMBLY; > + print ASSEMBLY $assembly; > + close ASSEMBLY; > + > + _run_command( "$PConfig{perl} assemble.pl $as_f --output $by_f" ); > + } > $TEST_PROG_ARGS = "" unless defined $TEST_PROG_ARGS; > _run_command( "./$PConfig{test_prog} ${TEST_PROG_ARGS} $by_f", 'STDOUT' => $out_f, 'STDERR' => $out_f); > > @@ -86,9 +101,7 @@ > my $pass = $Builder->$meth( $prog_output, $output, $desc ); > > unless($ENV{POSTMORTEM}) { > - foreach my $i ( $as_f, $by_f, $out_f ) { > - unlink $i; > - } > + unlink $out_f; > } > > return $pass; > Index: t/harness > =================================================================== > RCS file: /cvs/public/parrot/t/harness,v > retrieving revision 1.9 > diff -u -r1.9 harness > --- t/harness 31 Jan 2002 19:03:34 -0000 1.9 > +++ t/harness 21 Mar 2002 22:49:01 -0000 > @@ -14,6 +14,9 @@ > getopts('jP', \%opts); > $ENV{TEST_PROG_ARGS} = join(' ', map { "-$_" } keys %opts ); > > +$ENV{PARROT_QUICKTEST} = grep $_ eq 'quick', @ARGV; > +@ARGV = grep $_ ne 'quick', @ARGV; > + > # Pass in a list of tests to run on the command line, else run all the tests .. > my @tests = @ARGV ? @ARGV : map { glob( "t/$_/*.t" ) } ( qw(op pmc) ); > runtests(@tests); > > >