e6da256d575c9bceba72275bf7f70a373fd97cb2
[p5sagit/strictures.git] / t / strictures.t
1 # -e is sufficient here.
2 -e 't/smells-of-vcs/.git'
3   or mkdir('t/smells-of-vcs/.git')
4   or die "Couldn't create fake .git: $!";
5
6 use Test::More qw(no_plan);
7
8 our (@us, @expect);
9
10 sub capture_stuff { [ $^H, ${^WARNING_BITS} ] }
11
12 sub capture_us { push @us, capture_stuff }
13 sub capture_expect { push @expect, capture_stuff }
14
15 {
16   use strictures 1;
17   BEGIN { capture_us }
18 }
19
20 {
21   use strict;
22   use warnings FATAL => 'all';
23   BEGIN { capture_expect }
24 }
25
26 # I'm assuming here we'll have more cases later. maybe not. eh.
27
28 foreach my $idx (0 .. $#us) {
29   is($us[$idx][0], $expect[$idx][0], 'Hints ok for case '.($idx+1));
30   is($us[$idx][1], $expect[$idx][1], 'Warnings ok for case '.($idx+1));
31 }
32
33 {
34   local $0 = 't/00load.t';
35   sub Foo::new { 1 }
36   chdir("t/smells-of-vcs");
37   my $r = eval q{
38     use strictures 1;
39     new Foo 1, 2, 3;
40   };
41   # I don't test $@ here since if indirect isn't installed we hit one
42   # error and if it is we hit another; it's enough the code path's hit.
43   ok(!$r, 'strictures blows up for t/00load.t');
44 }
45
46 ok(!eval q{use strictures 2; 1; }, "Can't use strictures 2 (this is version 1)");