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);
> 
> 
> 


Reply via email to