=head1 VERSION
-Version 0.01
+Version 0.02
=cut
-our $VERSION = '0.01';
+our $VERSION = '0.02';
=head1 SYNOPSIS
=item *
-L</pass>, L</fail>, L</ok>, L</is>, L</isnt>, L</like>, L</unlike> and L</cmp_ok> are all guaranteed to return the truth value of the test.
+L</pass>, L</fail>, L</ok>, L</is>, L</isnt>, L</like>, L</unlike>, L</cmp_ok> and L</is_deeply> are all guaranteed to return the truth value of the test.
=item *
L</like> and L</unlike> don't special case regular expressions that are passed as C<'/.../'> strings.
-A string regexp argument is always treated as a the source of the regexp, making C<like $text, $rx> and C<like $text, qr[$rx]> equivalent to each other and to C<cmp_ok $text, '=~', $rx> (and likewise for C<unlike>).
+A string regexp argument is always treated as the source of the regexp, making C<like $text, $rx> and C<like $text, qr[$rx]> equivalent to each other and to C<cmp_ok $text, '=~', $rx> (and likewise for C<unlike>).
=item *
=item *
The tests don't output any kind of default diagnostic in case of failure ; the rationale being that if you have a large number of tests and a lot of them are failing, then you don't want to be flooded by diagnostics.
+Moreover, this allows a much faster variant of L</is_deeply>.
=item *
use Exporter ();
+my $main_process;
+
BEGIN {
+ $main_process = $$;
+
if ($] >= 5.008 and $INC{'threads.pm'}) {
my $use_ithreads = do {
require Config;
=head2 C<PERL_TEST_LEANER_USES_TEST_MORE>
If this environment variable is set, L<Test::Leaner> will replace its functions by those from L<Test::More>.
-Moreover, the symbols that are imported you C<use Test::Leaner> will be those from L<Test::More>, but you can still only import the symbols originally defined in L<Test::Leaner> (hence the functions from L<Test::More> that are not implemented in L<Test::Leaner> will not be imported).
+Moreover, the symbols that are imported when you C<use Test::Leaner> will be those from L<Test::More>, but you can still only import the symbols originally defined in L<Test::Leaner> (hence the functions from L<Test::More> that are not implemented in L<Test::Leaner> will not be imported).
If your version of L<Test::More> is too old and doesn't have some symbols (like L</note> or L</done_testing>), they will be replaced in L<Test::Leaner> by croaking stubs.
This may be useful if your L<Test::Leaner>-based test script fails and you want extra diagnostics.
my $import = sub {
shift;
+
my @imports = &_handle_import_args;
@imports = @EXPORT unless @imports;
my @test_more_imports;
*{$pkg."::$_"} = $leaner_stash->{$_};
}
}
+
my $test_more_import = 'Test::More'->can('import');
+ return unless $test_more_import;
+
@_ = (
'Test::More',
@_,
lock $plan if THREADSAFE;
push @_, 'no_diag' if $no_diag;
}
+
goto $test_more_import;
};
}
END {
- unless ($?) {
+ if ($main_process == $$ and not $?) {
lock $plan if THREADSAFE;
if (defined $plan) {