4 if( $ENV{PERL_CORE} ) {
15 eval "use Test::More";
17 print "1..0 # Skip: Test::More not available\n";
18 die "Test::More not available\n";
22 foreach (qw/SDBM_File GDBM_File ODBM_File NDBM_File DB_File/) {
23 if ($Config{extensions} =~ /\b$_\b/) {
32 # ModuleName => q|code to check that it was loaded|,
33 'Cwd' => q| ::can_ok( 'Cwd' => 'fastcwd' ) |, # 5.7 ?
34 'File::Glob' => q| ::can_ok( 'File::Glob' => 'doglob' ) |, # 5.6
35 $db_file => q| ::can_ok( $db_file => 'TIEHASH' ) |, # 5.0
36 'Socket' => q| ::can_ok( 'Socket' => 'inet_aton' ) |, # 5.0
37 'Time::HiRes'=> q| ::can_ok( 'Time::HiRes' => 'usleep' ) |, # 5.7.3
40 plan tests => keys(%modules) * 3 + 5;
42 # Try to load the module
46 can_ok( 'XSLoader' => 'load' );
47 can_ok( 'XSLoader' => 'bootstrap_inherit' );
49 # Check error messages
50 eval { XSLoader::load() };
51 like( $@, '/^XSLoader::load\(\'Your::Module\', \$Your::Module::VERSION\)/',
52 "calling XSLoader::load() with no argument" );
54 eval q{ package Thwack; XSLoader::load('Thwack'); };
55 like( $@, q{/^Can't locate loadable object for module Thwack in @INC/},
56 "calling XSLoader::load() under a package with no XS part" );
58 # Now try to load well known XS modules
59 my $extensions = $Config{'extensions'};
60 $extensions =~ s|/|::|g;
62 for my $module (sort keys %modules) {
64 skip "$module not available", 3 if $extensions !~ /\b$module\b/;
66 eval qq{ package $module; XSLoader::load('$module', "qunckkk"); };
67 like( $@, "/^$module object version \\S+ does not match bootstrap parameter (?:qunckkk|0)/",
68 "calling XSLoader::load() with a XS module and an incorrect version" );
70 eval qq{ package $module; XSLoader::load('$module'); };
71 is( $@, '', "XSLoader::load($module)");
73 eval qq{ package $module; $modules{$module}; };