50735bf770434156f631e352b718075bc1732328
[p5sagit/local-lib.git] / t / taint-mode.t
1 #
2 # t/taint-mode.t: checks that local::lib sets up @INC correctly when
3 # included in a script that has taint mode on, and is executing in an
4 # environment in which local::lib has already been loaded.
5 #
6
7 use strict;
8 use warnings;
9 use Test::More tests => 1;
10 use File::Temp 'tempfile';
11 use Cwd;
12
13 use lib 't/lib'; use TempDir;
14
15 my $dir1 = mk_temp_dir('test_local_lib-XXXXX');
16
17 # Set up local::lib environment using our temp dir
18 require local::lib;
19 local::lib->import($dir1);
20
21 # Create a script that has taint mode turned on, and tries to use a
22 # local lib to the same temp dir.
23 my ($fh, $filename) = tempfile('test_local_lib-XXXXX', DIR => Cwd::abs_path('t'), UNLINK => 1);
24
25 print $fh <<EOM;
26 #!/usr/bin/perl -T
27 use strict; use warnings;
28 use local::lib ();
29 my \$dir = "\Q$dir1\E";
30 local::lib->import(\$dir);
31 warn "using lib dir \$dir\\n";
32 if (grep { m{^\\Q\$dir} } \@INC) {
33   exit 0;
34 }
35 warn '\@INC is: ', join("\\n", \@INC), "\\n";
36 exit 1
37 EOM
38 close $fh;
39
40 my $exit_val = system($^X, '-Ilib', '-T', $filename);
41
42 is($exit_val >> 8, 0, 'test script exited with 0, local::lib dir found in @INC');