X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=t%2F03-fallback.t;fp=t%2F03-fallback.t;h=3bda266c77e489ddc2cf5ac41a7c5060e75b7c28;hb=7b03c18e358942c3388e3ba4d93319333a25b9cf;hp=0000000000000000000000000000000000000000;hpb=46581a5ea4e511b8e7ab3b6498433e08e4de8cb2;p=perl%2Fmodules%2FTest-Leaner.git diff --git a/t/03-fallback.t b/t/03-fallback.t new file mode 100644 index 0000000..3bda266 --- /dev/null +++ b/t/03-fallback.t @@ -0,0 +1,124 @@ +#!perl -T + +use strict; +use warnings; + +BEGIN { $ENV{PERL_TEST_LEANER_USES_TEST_MORE} = 1 } + +use Test::Leaner; + +BEGIN { + my $loaded; + if ($INC{'Test/More.pm'}) { + $loaded = 1; + } else { + $loaded = 0; + require Test::More; + Test::More->import; + } + Test::More::plan(tests => 1 + 4 * 15 + 3 * 3 + 2 * 8); + Test::More::is($loaded, 1, 'Test::More has been loaded'); +} + +sub get_subroutine { + my ($stash, $name) = @_; + + my $glob = $stash->{$name}; + return undef unless $glob; + + return *$glob{CODE}; +} + +my $leaner_stash = \%Test::Leaner::; +my $more_stash = \%Test::More::; +my $this_stash = \%main::; + +my @exported = qw< + plan + skip + done_testing + pass + fail + ok + is + isnt + like + unlike + cmp_ok + is_deeply + diag + note + BAIL_OUT +>; + +for (@exported) { + my $more_variant = get_subroutine($more_stash, $_); + + my $leaner_variant = get_subroutine($leaner_stash, $_); + Test::More::ok(defined $leaner_variant, + "Test::Leaner variant of $_ is defined"); + my $imported_variant = get_subroutine($this_stash, $_); + Test::More::ok(defined $imported_variant, "imported variant of $_ is defined"); + + SKIP: { + Test::More::skip('Need leaner and imported variants to be defined' => 2) + unless defined $leaner_variant + and defined $imported_variant; + + if (defined $more_variant) { + Test::More::is($leaner_variant, $more_variant, + "Test::Leaner variant of $_ is Test::More variant"); + Test::More::is($imported_variant, $more_variant, + "imported variant of $_ is Test::More variant"); + } else { + Test::More::is($imported_variant, $leaner_variant, + "imported variant of $_ is Test::Leaner variant"); + { + local $@; + eval { $leaner_variant->() }; + Test::More::like($@, qr/^\Q$_\E is not implemented.*at \Q$0\E line \d+/, + "Test::Leaner of $_ variant croaks"); + } + } + } +} + +my @only_in_test_leaner = qw< + tap_stream + diag_stream + THREADSAFE +>; + +for (@only_in_test_leaner) { + Test::More::ok(exists $leaner_stash->{$_}, + "$_ still exists in Test::Leaner"); + Test::More::ok(!exists $more_stash->{$_}, + "$_ was not imported into Test::More"); + Test::More::ok(!exists $this_stash->{$_}, + "$_ was not imported into main"); +} + +my @only_in_test_more = qw< + use_ok + require_ok + can_ok + isa_ok + new_ok + subtest + explain + todo_skip +>; + +for (@only_in_test_more) { + my $more_variant = get_subroutine($more_stash, $_); + + SKIP: { + Test::More::skip("$_ is not implemented in this version of Test::More" => 2) + unless defined $more_variant; + + Test::More::ok(!exists $leaner_stash->{$_}, + "$_ was not imported into Test::Leaner"); + Test::More::ok(!exists $this_stash->{$_}, + "$_ was not imported into main"); + } +}