From f37c8c6a403486522d197d9749ab3c7e7d9105ab Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Fri, 6 Jan 2012 10:28:20 -0600 Subject: not lexical scope, but dynamic scope is close enough i think --- t/dynamic.t | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 t/dynamic.t (limited to 't/dynamic.t') 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; -- cgit v1.2.3-54-g00ecf