This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Note that STR_WITH_LEN() is unorthodox
[perl5.git] / cpan / Module-Loaded / t / 01_Module-Loaded.t
1 use strict;
2 use less;
3 use Test::More  'no_plan';
4
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';
9
10 ### load the thing
11 {   use_ok( $Class );
12     can_ok( $Class, @Funcs );
13 }
14
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" );
18
19     my $rv = eval "require $Mod; 1";
20     ok( $rv,                    "$Mod required" );
21     ok( !$@,                    "   require did not die" );
22 }
23
24 ### unload again
25 {   ok( mark_as_unloaded($Mod), "$Mod now marked as unloaded" );
26     ok( !is_loaded($Mod),       "   $Mod now longer loaded" );
27
28     my $rv = eval "require $Mod; 1";
29     ok( !$rv,                   "$Mod require failed" );
30     ok( $@,                     "   require died" );
31     like( $@, qr/locate/,       "       with expected error" );
32 }
33
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" );
39
40     ### redefining subs, quell warnings
41     {   local $SIG{__WARN__} = sub {};
42         my $rv = eval "require $Strict; 1";
43         ok( $rv,                "$Strict loaded again" );
44     }
45
46     is( is_loaded( $Strict ), $where,
47                                 "   $Strict is loaded" );
48 }