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
|
#!/usr/bin/perl -w
# Test that @INC is propogated from the harness process to the test
# process.
use strict;
use lib 't/lib';
use Config;
local
$ENV{PERL5OPT}; # avoid any user-provided PERL5OPT from contaminating @INC
sub has_crazy_patch {
my $sentinel = 'blirpzoffle';
local $ENV{PERL5LIB} = $sentinel;
my $command = join ' ',
map {qq{"$_"}} ( $^X, '-e', 'print join q(:), @INC' );
my $path = `$command`;
my @got = ( $path =~ /($sentinel)/g );
return @got > 1;
}
use Test::More (
$^O eq 'VMS' ? ( skip_all => 'VMS' )
: has_crazy_patch() ? ( skip_all => 'Incompatible @INC patch' )
: ( tests => 2 )
);
use Test::Harness;
# Change @INC so we ensure it's preserved.
use lib 'wibble';
my $test_template = <<'END';
#!/usr/bin/perl %s
use Test::More tests => 2;
is $INC[0], "wibble", 'basic order of @INC preserved' or diag "\@INC: @INC";
like $ENV{PERL5LIB}, qr{wibble};
END
open TEST, ">inc_check.t.tmp";
printf TEST $test_template, '';
close TEST;
open TEST, ">inc_check_taint.t.tmp";
printf TEST $test_template, '-T';
close TEST;
END { 1 while unlink 'inc_check_taint.t.tmp', 'inc_check.t.tmp'; }
for my $test ( 'inc_check_taint.t.tmp', 'inc_check.t.tmp' ) {
my ( $tot, $failed ) = Test::Harness::execute_tests( tests => [$test] );
is $tot->{bad}, 0;
}
1;
|