summaryrefslogtreecommitdiff
path: root/dist/XSLoader/t
diff options
context:
space:
mode:
authorTony Cook <tony@develop-help.com>2014-08-07 11:06:45 +1000
committerTony Cook <tony@develop-help.com>2014-10-03 15:21:12 +1000
commit8e6aa27cd01d9a7bbb717248991e6168c5dad598 (patch)
treef3d21d2e55bdfab6628a416e1d87ede9f67a071c /dist/XSLoader/t
parent3fdf66f3176c84b8e8c3d510c0694640530b27e0 (diff)
downloadperl-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.t34
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 $@;
+}