summaryrefslogtreecommitdiff
path: root/t/op/override.t
blob: d24bdee31a90c5835a414a0f9bd7a27ed4f271e5 (plain)
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!./perl

BEGIN {
    chdir 't' if -d 't';
    @INC = '.';
    push @INC, '../lib';
}

print "1..10\n";

#
# This file tries to test builtin override using CORE::GLOBAL
#
my $dirsep = "/";

BEGIN { package Foo; *main::getlogin = sub { "kilroy"; } }

print "not " unless getlogin eq "kilroy";
print "ok 1\n";

my $t = 42;
BEGIN { *CORE::GLOBAL::time = sub () { $t; } }

print "not " unless 45 == time + 3;
print "ok 2\n";

#
# require has special behaviour
#
my $r;
BEGIN { *CORE::GLOBAL::require = sub { $r = shift; 1; } }

require Foo;
print "not " unless $r eq "Foo.pm";
print "ok 3\n";

require Foo::Bar;
print "not " unless $r eq join($dirsep, "Foo", "Bar.pm");
print "ok 4\n";

require 'Foo';
print "not " unless $r eq "Foo";
print "ok 5\n";

require 5.6;
print "not " unless $r eq "5.6";
print "ok 6\n";

require v5.6;
print "not " unless $r == 5.006 && $r eq "\x05\x06";
print "ok 7\n";

eval "use Foo";
print "not " unless $r eq "Foo.pm";
print "ok 8\n";

eval "use Foo::Bar";
print "not " unless $r eq join($dirsep, "Foo", "Bar.pm");
print "ok 9\n";

eval "use 5.6";
print "not " unless $r eq "5.6";
print "ok 10\n";