diff options
author | Tony Cook <tony@develop-help.com> | 2014-08-07 11:06:45 +1000 |
---|---|---|
committer | Tony Cook <tony@develop-help.com> | 2014-10-03 15:21:12 +1000 |
commit | 8e6aa27cd01d9a7bbb717248991e6168c5dad598 (patch) | |
tree | f3d21d2e55bdfab6628a416e1d87ede9f67a071c /dist/XSLoader/t | |
parent | 3fdf66f3176c84b8e8c3d510c0694640530b27e0 (diff) | |
download | perl-8e6aa27cd01d9a7bbb717248991e6168c5dad598.tar.gz |
[perl #122455] TODO test for XSLoader mishandling of namespaces
Diffstat (limited to 'dist/XSLoader/t')
-rw-r--r-- | dist/XSLoader/t/XSLoader.t | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/dist/XSLoader/t/XSLoader.t b/dist/XSLoader/t/XSLoader.t index 20ca32bb46..8f8ae7918c 100644 --- a/dist/XSLoader/t/XSLoader.t +++ b/dist/XSLoader/t/XSLoader.t @@ -33,7 +33,7 @@ my %modules = ( 'Time::HiRes'=> q| ::can_ok( 'Time::HiRes' => 'usleep' ) |, # 5.7.3 ); -plan tests => keys(%modules) * 3 + 8; +plan tests => keys(%modules) * 3 + 9; # Try to load the module use_ok( 'XSLoader' ); @@ -96,3 +96,35 @@ SKIP: { like $@, "/^Invalid version format/", 'correct error msg for invalid versions'; } + +SKIP: { + skip "Devel::Peek not available", 1 + unless $extensions =~ /\bDevel::Peek\b/; + + # XSLoader::load() assumes it's being called from a module, so + # pretend it is, first find when Devel/Peek.pm is + use File::Spec::Functions; + my $peek_file = catdir("Devel", "Peek.pm"); + my $module_path; + for my $dir (@INC) { + if (-f catfile($dir, $peek_file)) { + $module_path = catfile($dir, "Not", "Devel", "Peek.pm"); + last; + } + } + + skip "Cannot find $peek_file", 2 + unless $module_path; + + # [perl #122455] + use vars '$TODO'; + local $TODO = "Modules not loaded from correct relative path"; + # die instead of falling back to DynaLoader + local *XSLoader::bootstrap_inherit = sub { die "Fallback to DynaLoader\n" }; + ::ok( eval <<EOS, "test correct path searched for modules") +package Not::Devel::Peek; +#line 1 "$module_path" +XSLoader::load("Devel::Peek"); +EOS + or ::diag $@; +} |