diff options
author | Jesse Luehrs <doy@tozt.net> | 2012-01-06 10:28:20 -0600 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2012-01-06 10:35:56 -0600 |
commit | f37c8c6a403486522d197d9749ab3c7e7d9105ab (patch) | |
tree | d2f8f28ef36784169de8cdf5b83f476a51dd6329 /t/dynamic.t | |
parent | 287563c99fd663d619916b60b24ebb60bf08591d (diff) | |
download | circular-require-f37c8c6a403486522d197d9749ab3c7e7d9105ab.tar.gz circular-require-f37c8c6a403486522d197d9749ab3c7e7d9105ab.zip |
not lexical scope, but dynamic scope is close enough i think
Diffstat (limited to 't/dynamic.t')
-rw-r--r-- | t/dynamic.t | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/t/dynamic.t b/t/dynamic.t new file mode 100644 index 0000000..455130a --- /dev/null +++ b/t/dynamic.t @@ -0,0 +1,78 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; +use lib 't/basic'; + +{ + no circular::require; + + my $warnings; + local $SIG{__WARN__} = sub { $warnings .= $_[0] }; + use_ok('Foo'); + is($warnings, "Circular require detected:\n Foo.pm\n Baz.pm\n Foo.pm\nCircular require detected:\n Baz.pm\n Bar.pm\n Baz.pm\n", "correct warnings"); + + clear(); +} + +{ + no circular::require; + use circular::require; + + my $warnings; + local $SIG{__WARN__} = sub { $warnings .= $_[0] }; + use_ok('Foo'); + is($warnings, undef, "correct warnings"); + + clear(); +} + +{ + no circular::require; + + my $warnings; + local $SIG{__WARN__} = sub { $warnings .= $_[0] }; + use_ok('Foo'); + is($warnings, "Circular require detected:\n Foo.pm\n Baz.pm\n Foo.pm\nCircular require detected:\n Baz.pm\n Bar.pm\n Baz.pm\n", "correct warnings"); + + clear(); + undef $warnings; + + { + use circular::require; + + use_ok('Foo'); + is($warnings, undef, "correct warnings"); + + clear(); + undef $warnings; + + { + no circular::require; + + use_ok('Foo'); + is($warnings, "Circular require detected:\n Foo.pm\n Baz.pm\n Foo.pm\nCircular require detected:\n Baz.pm\n Bar.pm\n Baz.pm\n", "correct warnings"); + } + + } +} + +{ + my $warnings; + local $SIG{__WARN__} = sub { $warnings .= $_[0] }; + use_ok('Foo'); + is($warnings, undef, "correct warnings"); + + clear(); +} + +sub clear { + for (qw(Foo Bar Baz)) { + no strict 'refs'; + delete $::{$_}; + delete ${$_ . '::'}{quux}; + delete $INC{"$_.pm"}; + } +} + +done_testing; |