]> git.vpit.fr Git - perl/modules/Lexical-Types.git/blob - t/16-scope.t
08fabbb329654a60be4ace30baca5f23c458c4f4
[perl/modules/Lexical-Types.git] / t / 16-scope.t
1 #!perl -T
2
3 use strict;
4 use warnings;
5
6 use Test::More tests => (1 + 2) + (1 + 4) + (3 + 3);
7
8 sub Int::TYPEDSCALAR { join ':', (caller 0)[1, 2] }
9
10 our ($x, $y, $z, $t);
11
12 use lib 't/lib';
13
14 {
15  eval 'use Lexical::Types; use Lexical::Types::TestRequired1';
16  is $@, '', 'first require test didn\'t croak prematurely';
17 }
18
19 {
20  eval 'use Lexical::Types; use Lexical::Types::TestRequired2';
21  is $@, '', 'second require test didn\'t croak prematurely';
22 }
23
24 {
25  my (@decls, @w);
26  sub cb3 { push @decls, $_[0]; @_ }
27  {
28   no strict 'refs';
29   *{"Int3$_\::TYPEDSCALAR"} = \&Int::TYPEDSCALAR for qw<X Y Z>;
30  }
31  local $SIG{__WARN__} = sub { push @w, join '', 'warn:', @_ };
32  eval <<' TESTREQUIRED3';
33   {
34    package Lexical::Types::TestRequired3Z;
35    use Lexical::Types as => \&main::cb3;
36    use Lexical::Types::TestRequired3X;
37    use Lexical::Types::TestRequired3Y;
38    my Int3Z $z;
39    ::is($z, __FILE__.':6', 'pragma in use at the end');
40   }
41  TESTREQUIRED3
42  @w = grep !/^warn:Attempt\s+to\s+free\s+unreferenced/, @w if $] <= 5.008003;
43  is         $@,     '',  'third require test didn\'t croak prematurely';
44  is_deeply \@w,     [ ], 'third require test didn\'t warn';
45  is_deeply \@decls, [ map "Int3$_", qw<X Z> ],
46                          'third require test propagated in the right scopes';
47 }