This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Deprecate isFOO_utf8() macros
[perl5.git] / ext / XS-APItest / t / load-module.t
index 303025f..78189f8 100644 (file)
@@ -1,6 +1,12 @@
 #!perl -w
 use strict;
 
+# Test the load_module() core API function.
+#
+# Note that this function can be passed arbitrary and illegal module
+# names which would already have been caught if a require statement had
+# been compiled. So check that load_module() can catch such bad things.
+
 use Test::More;
 use XS::APItest;
 
@@ -22,34 +28,39 @@ like($@, qr/less version 1 required--this is only version 0\./,
 is(eval { load_module(PERL_LOADMOD_NOIMPORT, 'less', 0.03); 1}, 1,
    "expect load_module() not to fail");
 
+#
+# Check for illegal module names
+
 for (["", qr!\ABareword in require maps to empty filename!],
-     ["::", qr!\ABareword in require maps to empty filename!],
-     ["::::", qr!\ABareword in require maps to disallowed filename "/\.pm"!],
-     ["::/", qr!\ABareword in require maps to disallowed filename "/\.pm"!],
-     ["::/WOOSH", qr!\ABareword in require maps to disallowed filename "/WOOSH\.pm"!],
-     [".WOOSH", qr!\ABareword in require maps to disallowed filename "\.WOOSH\.pm"!],
-     ["::.WOOSH", qr!\ABareword in require maps to disallowed filename "\.WOOSH\.pm"!],
-     ["WOOSH::.sock", qr!\ABareword in require contains "/\."!],
-     ["::WOOSH::.sock", qr!\ABareword in require contains "/\."!],
-     ["::WOOSH/.sock", qr!\ABareword in require contains "/\."!],
-     ["::WOOSH/..sock", qr!\ABareword in require contains "/\."!],
-     ["::WOOSH/../sock", qr!\ABareword in require contains "/\."!],
-     ["::WOOSH::..::sock", qr!\ABareword in require contains "/\."!],
-     ["::WOOSH::.::sock", qr!\ABareword in require contains "/\."!],
-     ["::WOOSH::./sock", qr!\ABareword in require contains "/\."!],
-     ["::WOOSH/./sock", qr!\ABareword in require contains "/\."!],
-     ["::WOOSH/.::sock", qr!\ABareword in require contains "/\."!],
-     ["::WOOSH/..::sock", qr!\ABareword in require contains "/\."!],
-     ["::WOOSH::../sock", qr!\ABareword in require contains "/\."!],
-     ["::WOOSH::../..::sock", qr!\ABareword in require contains "/\."!],
-     ["::WOOSH\0sock", qr!\ACan't locate WOOSH\\0sock.pm:!],
-    ) {
+    ["::", qr!\ABareword in require must not start with a double-colon: "::"!],
+    ["::::", qr!\ABareword in require must not start with a double-colon: "::::"!],
+    ["::/", qr!\ABareword in require must not start with a double-colon: "::/!],
+    ["/", qr!\ABareword in require maps to disallowed filename "/\.pm"!],
+    ["::/WOOSH", qr!\ABareword in require must not start with a double-colon: "::/WOOSH!],
+    [".WOOSH", qr!\ABareword in require maps to disallowed filename "\.WOOSH\.pm"!],
+    ["::.WOOSH", qr!\ABareword in require must not start with a double-colon: "::.WOOSH!],
+    ["WOOSH::.sock", qr!\ABareword in require contains "/\."!],
+    ["WOOSH::.sock", qr!\ABareword in require contains "/\."!],
+    ["WOOSH/.sock", qr!\ABareword in require contains "/\."!],
+    ["WOOSH/..sock", qr!\ABareword in require contains "/\."!],
+    ["WOOSH/../sock", qr!\ABareword in require contains "/\."!],
+    ["WOOSH::..::sock", qr!\ABareword in require contains "/\."!],
+    ["WOOSH::.::sock", qr!\ABareword in require contains "/\."!],
+    ["WOOSH::./sock", qr!\ABareword in require contains "/\."!],
+    ["WOOSH/./sock", qr!\ABareword in require contains "/\."!],
+    ["WOOSH/.::sock", qr!\ABareword in require contains "/\."!],
+    ["WOOSH/..::sock", qr!\ABareword in require contains "/\."!],
+    ["WOOSH::../sock", qr!\ABareword in require contains "/\."!],
+    ["WOOSH::../..::sock", qr!\ABareword in require contains "/\."!],
+    ["WOOSH\0sock", qr!\ACan't locate WOOSH\\0sock.pm:!],
+    )
+{
     my ($module, $error) = @$_;
     my $module2 = $module; # load_module mangles its first argument
     no warnings 'syscalls';
     is(eval { load_module(PERL_LOADMOD_NOIMPORT, $module); 1}, undef,
        "expect load_module() for '$module2' to fail");
-    like($@, $error);
+    like($@, $error, "check expected error for $module2");
 }
 
 done_testing();