1
1
# !perl -w
2
2
use strict;
3
3
4
+ # Test the load_module() core API function.
5
+ #
6
+ # Note that this function can be passed arbitrary and illegal module
7
+ # names which would already have been caught if a require statement had
8
+ # been compiled. So check that load_module() can catch such bad things.
9
+
4
10
use Test::More;
5
11
use XS::APItest;
6
12
@@ -22,29 +28,33 @@ like($@, qr/less version 1 required--this is only version 0\./,
22
28
is(eval { load_module(PERL_LOADMOD_NOIMPORT, ' less' , 0.03); 1}, 1,
23
29
" expect load_module() not to fail" );
24
30
31
+ #
32
+ # Check for illegal module names
33
+
25
34
for ([" " , qr !\A Bareword in require maps to empty filename! ],
26
- [" ::" , qr !\A Bareword in require must not start with a double-colon: "::"! ],
27
- [" ::::" , qr !\A Bareword in require must not start with a double-colon: "::::"! ],
28
- [" ::/" , qr !\A Bareword in require must not start with a double-colon: "::/! ],
29
- [" /" , qr !\A Bareword in require maps to disallowed filename "/\. pm"! ],
30
- [" ::/WOOSH" , qr !\A Bareword in require must not start with a double-colon: "::/WOOSH! ],
31
- [" .WOOSH" , qr !\A Bareword in require maps to disallowed filename "\. WOOSH\. pm"! ],
32
- [" ::.WOOSH" , qr !\A Bareword in require must not start with a double-colon: "::.WOOSH! ],
33
- [" WOOSH::.sock" , qr !\A Bareword in require contains "/\. "! ],
34
- [" WOOSH::.sock" , qr !\A Bareword in require contains "/\. "! ],
35
- [" WOOSH/.sock" , qr !\A Bareword in require contains "/\. "! ],
36
- [" WOOSH/..sock" , qr !\A Bareword in require contains "/\. "! ],
37
- [" WOOSH/../sock" , qr !\A Bareword in require contains "/\. "! ],
38
- [" WOOSH::..::sock" , qr !\A Bareword in require contains "/\. "! ],
39
- [" WOOSH::.::sock" , qr !\A Bareword in require contains "/\. "! ],
40
- [" WOOSH::./sock" , qr !\A Bareword in require contains "/\. "! ],
41
- [" WOOSH/./sock" , qr !\A Bareword in require contains "/\. "! ],
42
- [" WOOSH/.::sock" , qr !\A Bareword in require contains "/\. "! ],
43
- [" WOOSH/..::sock" , qr !\A Bareword in require contains "/\. "! ],
44
- [" WOOSH::../sock" , qr !\A Bareword in require contains "/\. "! ],
45
- [" WOOSH::../..::sock" , qr !\A Bareword in require contains "/\. "! ],
46
- [" WOOSH\0 sock" , qr !\A Can't locate WOOSH\\ 0sock.pm:! ],
47
- ) {
35
+ [" ::" , qr !\A Bareword in require must not start with a double-colon: "::"! ],
36
+ [" ::::" , qr !\A Bareword in require must not start with a double-colon: "::::"! ],
37
+ [" ::/" , qr !\A Bareword in require must not start with a double-colon: "::/! ],
38
+ [" /" , qr !\A Bareword in require maps to disallowed filename "/\. pm"! ],
39
+ [" ::/WOOSH" , qr !\A Bareword in require must not start with a double-colon: "::/WOOSH! ],
40
+ [" .WOOSH" , qr !\A Bareword in require maps to disallowed filename "\. WOOSH\. pm"! ],
41
+ [" ::.WOOSH" , qr !\A Bareword in require must not start with a double-colon: "::.WOOSH! ],
42
+ [" WOOSH::.sock" , qr !\A Bareword in require contains "/\. "! ],
43
+ [" WOOSH::.sock" , qr !\A Bareword in require contains "/\. "! ],
44
+ [" WOOSH/.sock" , qr !\A Bareword in require contains "/\. "! ],
45
+ [" WOOSH/..sock" , qr !\A Bareword in require contains "/\. "! ],
46
+ [" WOOSH/../sock" , qr !\A Bareword in require contains "/\. "! ],
47
+ [" WOOSH::..::sock" , qr !\A Bareword in require contains "/\. "! ],
48
+ [" WOOSH::.::sock" , qr !\A Bareword in require contains "/\. "! ],
49
+ [" WOOSH::./sock" , qr !\A Bareword in require contains "/\. "! ],
50
+ [" WOOSH/./sock" , qr !\A Bareword in require contains "/\. "! ],
51
+ [" WOOSH/.::sock" , qr !\A Bareword in require contains "/\. "! ],
52
+ [" WOOSH/..::sock" , qr !\A Bareword in require contains "/\. "! ],
53
+ [" WOOSH::../sock" , qr !\A Bareword in require contains "/\. "! ],
54
+ [" WOOSH::../..::sock" , qr !\A Bareword in require contains "/\. "! ],
55
+ [" WOOSH\0 sock" , qr !\A Can't locate WOOSH\\ 0sock.pm:! ],
56
+ )
57
+ {
48
58
my ($module , $error ) = @$_ ;
49
59
my $module2 = $module ; # load_module mangles its first argument
50
60
no warnings ' syscalls' ;
0 commit comments