]> git.vpit.fr Git - perl/modules/indirect.git/blob - t/10-good.t
Fix a rare edge case for package whose names are prefix of 'main'
[perl/modules/indirect.git] / t / 10-good.t
1 #!perl -T
2
3 package Dongs;
4
5 sub new;
6
7 package main;
8
9 use strict;
10 use warnings;
11
12 use Test::More tests => 49 * 4;
13
14 my ($obj, $pkg, $cb, $x, @a);
15 our $y;
16 sub meh;
17
18 {
19  local $/ = "####\n";
20  while (<DATA>) {
21   chomp;
22   s/\s*$//;
23   local $SIG{__WARN__} = sub { die 'warn:' . join(' ', @_) };
24   {
25    use indirect;
26    eval "die qq{ok\\n}; $_";
27   }
28   is($@, "ok\n", "use indirect: $_");
29   {
30    no indirect;
31    eval "die qq{ok\n}; $_";
32   }
33   is($@, "ok\n", "no indirect: $_");
34   s/Hlagh/Dongs/g;
35   {
36    use indirect;
37    eval "die qq{ok\\n}; $_";
38   }
39   is($@, "ok\n", "use indirect, defined: $_");
40   {
41    no indirect;
42    eval "die qq{ok\\n}; $_";
43   }
44   is($@, "ok\n", "no indirect, defined: $_");
45  }
46 }
47
48 __DATA__
49 $obj = Hlagh->new;
50 ####
51 $obj = Hlagh->new();
52 ####
53 $obj = Hlagh->new(1);
54 ####
55 $obj = Hlagh->new(q{foo}, bar => $obj);
56 ####
57 $obj = Hlagh   ->   new   ;
58 ####
59 $obj = Hlagh   ->   new   (   )   ;
60 ####
61 $obj = Hlagh   ->   new   (   1   )   ;
62 ####
63 $obj = Hlagh   ->   new   (   'foo'   ,   bar =>   $obj   );
64 ####
65 $obj = Hlagh
66             ->
67                           new   ;
68 ####
69 $obj = Hlagh  
70
71       ->   
72 new   ( 
73  )   ;
74 ####
75 $obj = Hlagh
76                                        ->   new   ( 
77                1   )   ;
78 ####
79 $obj = Hlagh   ->
80                               new   (   "foo"
81   ,    bar     
82                =>        $obj       );
83 ####
84 $obj = Hlagh->$cb;
85 ####
86 $obj = Hlagh->$cb();
87 ####
88 $obj = Hlagh->$cb($pkg);
89 ####
90 $obj = Hlagh->$cb(sub { 'foo' },  bar => $obj);
91 ####
92 $obj = $pkg->new   ;
93 ####
94 $obj = $pkg  ->   new  (   );
95 ####
96 $obj = $pkg       
97            -> 
98         new ( $pkg );
99 ####
100 $obj = 
101          $pkg
102 ->
103 new        (     qr/foo/,
104       foo => qr/bar/   );
105 ####
106 $obj 
107   =  
108 $pkg
109 ->
110 $cb
111 ;
112 ####
113 $obj = $pkg    ->   ($cb)   ();
114 ####
115 $obj = $pkg->$cb( $obj  );
116 ####
117 $obj = $pkg->$cb(qw/foo bar baz/);
118 ####
119 $obj = new { $x };
120 ####
121 $obj = new
122   {
123      $x  }
124   ();
125 ####
126 $obj = new {
127   $x  } qq/foo/;
128 ####
129 $obj = new
130    {
131       $x
132     }(qw/bar baz/);
133 ####
134 meh;
135 ####
136 meh $_;
137 ####
138 meh $x;
139 ####
140 meh $x, 1, 2;
141 ####
142 meh $y;
143 ####
144 meh $y, 1, 2;
145 ####
146 print;
147 ####
148 print $_;
149 ####
150 print $x;
151 ####
152 print $x "oh hai\n";
153 ####
154 print $y;
155 ####
156 print $y "dongs\n";
157 ####
158 print STDOUT "bananananananana\n";
159 ####
160 $x->foo($pkg->$cb)
161 ####
162 $obj = "apple ${\(new Hlagh)} pear"
163 ####
164 $obj = "apple @{[new Hlagh]} pear"
165 ####
166 s/dongs/new Hlagh/e;
167 ####
168 exec $x $x, @a;
169 ####
170 exec { $a[0] } @a;
171 ####
172 system $x $x, @a;
173 ####
174 system { $a[0] } @a;