File: require.t

package info (click to toggle)
libperl5i-perl 2.13.2-1
  • links: PTS, VCS
  • area: main
  • in suites: buster, stretch
  • size: 996 kB
  • ctags: 343
  • sloc: perl: 6,259; makefile: 5
file content (40 lines) | stat: -rw-r--r-- 1,073 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!perl

use perl5i::latest;
use Test::More;

note "Successful require"; {
    local $!;
    local $@ = "hubba bubba";

    is "Text::ParseWords"->require, "Text::ParseWords";
    ok !$!, "errno didn't leak out";
    is $@, "hubba bubba", '$@ not overwritten';

    ok $INC{"Text/ParseWords.pm"}, "require";
    ok !defined &shellwords,        "nothing imported";

    "Text::ParseWords"->require->import;
    ok defined &shellwords,         "  default import";
}


note "Module doesn't exist"; {
    local $!;
    local @INC = qw(no thing);
    ok !eval { "I::Sure::Dont::Exist"->require; };
    my $pat = q[^Can't locate I/Sure/Dont/Exist\.pm in \@INC];
    $pat .= q[(?: \(you may need to install the I::Sure::Dont::Exist module\))?]; 
    $pat .= sprintf(' \(@INC contains: no thing\) at %s line %d\.$',
                    __FILE__, __LINE__-4);
    like $@, qr/$pat/;
    ok !$!, "errno didn't leak out";
}

note "Invalid module name"; {
    ok !eval { "/tmp::LOL::PWNED"->require };
    like $@, qr{^'/tmp::LOL::PWNED' is not a valid module name };
}


done_testing;