From cb8ebfeb3c38036bb8dd0b5b7d0fcd4274101ffa Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Mon, 19 Dec 2011 14:02:23 -0600 Subject: fix for use base (Exodist) --- Changes | 1 + lib/circular/require.pm | 2 +- t/04-base2.t | 18 ++++++++++++++++++ t/04/Bar.pm | 7 +++++++ t/04/Foo.pm | 9 +++++++++ 5 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 t/04-base2.t create mode 100644 t/04/Bar.pm create mode 100644 t/04/Foo.pm diff --git a/Changes b/Changes index 4296d17..39a632f 100644 --- a/Changes +++ b/Changes @@ -1,6 +1,7 @@ Revision history for circular-require {{$NEXT}} + - fix the previous workaround (Exodist) 0.03 2011-07-18 - work around annoying base.pm behavior (reported by wooster) diff --git a/lib/circular/require.pm b/lib/circular/require.pm index 6a8c0be..7bc8552 100644 --- a/lib/circular/require.pm +++ b/lib/circular/require.pm @@ -61,7 +61,7 @@ sub _require { $mod =~ s+[/\\]+::+g; $mod =~ s+\.pm$++; $ret = $saved - ? $saved->($file) : eval "CORE::require($mod)"; + ? $saved->($file) : do { eval "CORE::require $mod" || die $@ }; } else { $ret = $saved ? $saved->($file) : CORE::require($file); diff --git a/t/04-base2.t b/t/04-base2.t new file mode 100644 index 0000000..c0be7a7 --- /dev/null +++ b/t/04-base2.t @@ -0,0 +1,18 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use lib 't/04'; +use Test::More; +use Test::Exception; + +# Test passes if you comment this out +no circular::require; + +use_ok('Foo'); +lives_ok { is( Foo->bar, "bar", "Polymorphism" ) } + "bar() method available on Foo"; + +throws_ok { base->import( 'BadWolf' ) } + qr|Base class package "BadWolf" is empty|, "use base 'Some Bad File' should throw an exception"; + +done_testing; diff --git a/t/04/Bar.pm b/t/04/Bar.pm new file mode 100644 index 0000000..207dc68 --- /dev/null +++ b/t/04/Bar.pm @@ -0,0 +1,7 @@ +package Bar; +use strict; +use warnings; + +sub bar { "bar" } + +1; diff --git a/t/04/Foo.pm b/t/04/Foo.pm new file mode 100644 index 0000000..cfb1bb4 --- /dev/null +++ b/t/04/Foo.pm @@ -0,0 +1,9 @@ +package Foo; +use strict; +use warnings; + +use base 'Bar'; + +sub foo { "foo" } + +1; -- cgit v1.2.3