Commit | Line | Data |
---|---|---|
1ccdb730 NC |
1 | my @symbols; |
2 | BEGIN { | |
3 | chdir 't'; | |
4 | @INC = '../lib'; | |
5 | require Config; | |
6 | if (($Config::Config{'extensions'} !~ /\bB\b/) ){ | |
7 | print "1..0 # Skip -- Perl configured without B module\n"; | |
8 | exit 0; | |
9 | } | |
a5d75221 NC |
10 | if ($Config::Config{'extensions'} !~ /\bFcntl\b/) { |
11 | print "1..0 # Skip -- Perl configured without Fcntl\n"; | |
1ccdb730 NC |
12 | exit 0; |
13 | } | |
a5d75221 | 14 | # S_IFMT is a real subroutine, and acts as control |
1ccdb730 | 15 | # SEEK_SET is a proxy constant subroutine. |
a5d75221 | 16 | @symbols = qw(S_IFMT SEEK_SET); |
1ccdb730 NC |
17 | } |
18 | ||
19 | use strict; | |
20 | use warnings; | |
21 | use Test::More tests => 4 * @symbols; | |
22 | use B qw(svref_2object GVf_IMPORTED_CV); | |
a5d75221 | 23 | use Fcntl @symbols; |
1ccdb730 NC |
24 | |
25 | # GVf_IMPORTED_CV should not be set on the original, but should be set on the | |
26 | # imported GV. | |
27 | ||
28 | foreach my $symbol (@symbols) { | |
29 | my ($ps, $ms); | |
30 | { | |
31 | no strict 'refs'; | |
a5d75221 | 32 | $ps = svref_2object(\*{"Fcntl::$symbol"}); |
1ccdb730 NC |
33 | $ms = svref_2object(\*{"::$symbol"}); |
34 | } | |
35 | isa_ok($ps, 'B::GV'); | |
36 | is($ps->GvFLAGS() & GVf_IMPORTED_CV, 0, | |
37 | "GVf_IMPORTED_CV not set on original"); | |
38 | isa_ok($ms, 'B::GV'); | |
39 | is($ms->GvFLAGS() & GVf_IMPORTED_CV, GVf_IMPORTED_CV, | |
40 | "GVf_IMPORTED_CV set on imported GV"); | |
41 | } |