exec is enough to make me think this is a bad idea. And there are other reasons why this wouldn't really address the "problem".
Instead write Test::AutoPlan that you use like:
perl -MTest::AutoPlan -e0 t/*
and it would run each of your t/* files and then modify them to record the current plan count, notifying you how the counts had changed.
Instead of writing your t/* files like:
use Test::More ( ... ); ...
you'd write them like:
use Test::AutoPlan qw( Test::More ... ); ...
and perl -MTest::AutoPlan t/* would change that to
use Test::AutoPlan 23 qw( Test::More ... ); ...
and you could even make it so "make plan" updates the test count plans.
The Test::AutoPlan code goes something like this:
my $plan; sub VERSION { $plan = $_[1]; } sub import { my $self = shift(@_); goto &UpdateTests if ! @_; my $module = shift(@_); my @plan = "no_plan"; if( defined($plan) ) { @plan = ( tests => $plan ); } elsif( "Test::Simple" eq $module ) { @plan = ( tests => 0 ); } unshift @_, $module, @plan; my $import = $module . "::import"; undef $plan; goto &$import; } sub UpdateTests { for my $test ( @ARGV ) { my $plan = RunTestsAndCount( $test ); @ARGV = $test; $^I = ".old"; while( <> ) { s{ ^( [\w\s]* (?<![\w:]) Test::AutoPlan ) (\s+\d+)? }{ $1 . " " . $plan }ex; print; } } }
The first argument could be Test::Simple instead of Test::More (or whatever other modules you decide to support).
- tye
In reply to Re: How can I write Test::Finished? (auto count)
by tye
in thread How can I write Test::Finished?
by samtregar
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |