]> git.vpit.fr Git - perl/modules/Test-Leaner.git/blob - t/03-fallback.t
Bump copyright year
[perl/modules/Test-Leaner.git] / t / 03-fallback.t
1 #!perl -T
2
3 use strict;
4 use warnings;
5
6 BEGIN {
7  if ("$]" >= 5.008_004 and "$]" <= 5.008_005) {
8   require Test::More;
9   Test::More::plan(skip_all
10                        => 'goto may segfault randomly on perl 5.8.4 and 5.8.5');
11  }
12 }
13
14 BEGIN { $ENV{PERL_TEST_LEANER_USES_TEST_MORE} = 1 }
15
16 use Test::Leaner;
17
18 BEGIN {
19  my $loaded;
20  if ($INC{'Test/More.pm'}) {
21   $loaded = 1;
22  } else {
23   $loaded = 0;
24   require Test::More;
25   Test::More->import;
26  }
27  Test::More::plan(tests => 1 + 4 * 15 + 3 * 3 + 2 * 8);
28  Test::More::is($loaded, 1, 'Test::More has been loaded');
29 }
30
31 use lib 't/lib';
32 use Test::Leaner::TestImport qw<
33  get_subroutine has_test_more_version default_exports
34 >;
35
36 my $leaner_stash = \%Test::Leaner::;
37 my $more_stash   = \%Test::More::;
38 my $this_stash   = \%main::;
39
40 my @exported = default_exports;
41
42 for (@exported) {
43  my $more_variant     = get_subroutine($more_stash, $_);
44
45  my $leaner_variant   = get_subroutine($leaner_stash, $_);
46  Test::More::ok(defined $leaner_variant,
47                                        "Test::Leaner variant of $_ is defined");
48  my $imported_variant = get_subroutine($this_stash, $_);
49  Test::More::ok(defined $imported_variant, "imported variant of $_ is defined");
50
51  SKIP: {
52   Test::More::skip('Need leaner and imported variants to be defined' => 2)
53                    unless defined $leaner_variant
54                       and defined $imported_variant;
55
56   if (defined $more_variant) {
57    Test::More::is($leaner_variant, $more_variant,
58                   "Test::Leaner variant of $_ is Test::More variant");
59    Test::More::is($imported_variant, $more_variant,
60                   "imported variant of $_ is Test::More variant");
61   } else {
62    Test::More::is($imported_variant, $leaner_variant,
63                   "imported variant of $_ is Test::Leaner variant");
64    {
65     local $@;
66     eval { $leaner_variant->() };
67     Test::More::like($@, qr/^\Q$_\E is not implemented.*at \Q$0\E line \d+/,
68                          "Test::Leaner of $_ variant croaks");
69    }
70   }
71  }
72 }
73
74 my @only_in_test_leaner = qw<
75  tap_stream
76  diag_stream
77  THREADSAFE
78 >;
79
80 for (@only_in_test_leaner) {
81  Test::More::ok(exists $leaner_stash->{$_},
82                 "$_ still exists in Test::Leaner");
83  Test::More::ok(!exists $more_stash->{$_},
84                 "$_ was not imported into Test::More");
85  Test::More::ok(!exists $this_stash->{$_},
86                 "$_ was not imported into main");
87 }
88
89 SKIP:
90 {
91  Test::More::skip('Test::More::plan exports stuff on Test::More <= 0.51'
92                                  => 2 * 8) unless has_test_more_version('0.51');
93
94  my @only_in_test_more = qw<
95   use_ok
96   require_ok
97   can_ok
98   isa_ok
99   new_ok
100   subtest
101   explain
102   todo_skip
103  >;
104
105  for (@only_in_test_more) {
106   my $more_variant = get_subroutine($more_stash, $_);
107
108   SKIP: {
109    Test::More::skip("$_ is not implemented in this version of Test::More" => 2)
110                     unless defined $more_variant;
111
112    Test::More::ok(!exists $leaner_stash->{$_},
113                   "$_ was not imported into Test::Leaner");
114    Test::More::ok(!exists $this_stash->{$_},
115                   "$_ was not imported into main");
116   }
117  }
118 }