blob: eef62999f7fcedecca2f706a3874fa44c4e62411 [file] [log] [blame]
use strict;
use less;
use Test::More 'no_plan';
my $Class = 'Module::Loaded';
my @Funcs = qw[mark_as_loaded mark_as_unloaded is_loaded];
my $Mod = 'Foo::Bar'.$$;
my $Strict = $ENV{'PERL_CORE'} ? 'less' : 'strict';
### load the thing
{ use_ok( $Class );
can_ok( $Class, @Funcs );
}
{ ok( !is_loaded($Mod), "$Mod not loaded yet" );
ok( mark_as_loaded($Mod), " $Mod now marked as loaded" );
is( is_loaded($Mod), $0, " $Mod is loaded from $0" );
my $rv = eval "require $Mod; 1";
ok( $rv, "$Mod required" );
ok( !$@, " require did not die" );
}
### unload again
{ ok( mark_as_unloaded($Mod), "$Mod now marked as unloaded" );
ok( !is_loaded($Mod), " $Mod now longer loaded" );
my $rv = eval "require $Mod; 1";
ok( !$rv, "$Mod require failed" );
ok( $@, " require died" );
like( $@, qr/locate/, " with expected error" );
}
### check for an already loaded module
{ my $where = is_loaded( $Strict );
ok( $where, "$Strict loaded" );
ok( mark_as_unloaded( $Strict ),
" $Strict unloaded" );
### redefining subs, quell warnings
{ local $SIG{__WARN__} = sub {};
my $rv = eval "require $Strict; 1";
ok( $rv, "$Strict loaded again" );
}
is( is_loaded( $Strict ), $where,
" $Strict is loaded" );
}