summaryrefslogtreecommitdiffstats
path: root/t/dynamic.t
diff options
context:
space:
mode:
Diffstat (limited to 't/dynamic.t')
-rw-r--r--t/dynamic.t78
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;