3 use Test::More 'no_plan';
5 my $Class = 'Module::Loaded';
6 my @Funcs = qw[mark_as_loaded mark_as_unloaded is_loaded];
7 my $Mod = 'Foo::Bar'.$$;
8 my $Strict = $ENV{'PERL_CORE'} ? 'less' : 'strict';
12 can_ok( $Class, @Funcs );
15 { ok( !is_loaded($Mod), "$Mod not loaded yet" );
16 ok( mark_as_loaded($Mod), " $Mod now marked as loaded" );
17 is( is_loaded($Mod), $0, " $Mod is loaded from $0" );
19 my $rv = eval "require $Mod; 1";
20 ok( $rv, "$Mod required" );
21 ok( !$@, " require did not die" );
25 { ok( mark_as_unloaded($Mod), "$Mod now marked as unloaded" );
26 ok( !is_loaded($Mod), " $Mod now longer loaded" );
28 my $rv = eval "require $Mod; 1";
29 ok( !$rv, "$Mod require failed" );
30 ok( $@, " require died" );
31 like( $@, qr/locate/, " with expected error" );
34 ### check for an already loaded module
35 { my $where = is_loaded( $Strict );
36 ok( $where, "$Strict loaded" );
37 ok( mark_as_unloaded( $Strict ),
38 " $Strict unloaded" );
40 ### redefining subs, quell warnings
41 { local $SIG{__WARN__} = sub {};
42 my $rv = eval "require $Strict; 1";
43 ok( $rv, "$Strict loaded again" );
46 is( is_loaded( $Strict ), $where,
47 " $Strict is loaded" );