use Test;
-plan tests => 10;
+plan tests => 17;
my $STDOUT = './results-0';
my $STDERR = './results-1';
my $PERL = './perl';
my $FAILURE_CODE = 119;
+delete $ENV{PERLLIB};
+delete $ENV{PERL5LIB};
+delete $ENV{PERL5OPT};
+
# Run perl with specified environment and arguments returns a list.
-# First element is true iff Perl's stdout and stderr match the
+# First element is true if Perl's stdout and stderr match the
# supplied $stdout and $stderr argument strings exactly.
# second element is an explanation of the failure
sub runperl {
$stdout = '' unless defined $stdout;
$stderr = '' unless defined $stderr;
+ local %ENV = %ENV;
+ delete $ENV{PERLLIB};
+ delete $ENV{PERL5LIB};
+ delete $ENV{PERL5OPT};
my $pid = fork;
return (0, "Couldn't fork: $!") unless defined $pid; # failure
if ($pid) { # parent
# PERL5OPT Command-line options (switches). Switches in
# this variable are taken as if they were on
-# every Perl command line. Only the -[DIMUdmw]
+# every Perl command line. Only the -[DIMUdmtw]
# switches are allowed. When running taint
# checks (because the program was running setuid
# or setgid, or the -T switch was used), this
try({PERL5OPT => '-w'}, ['-e', 'print $::x'],
"",
- qq{Name "main::x" used only once: possible typo at -e line 1.\nUse of uninitialized value in print at -e line 1.\n});
+ qq{Name "main::x" used only once: possible typo at -e line 1.\nUse of uninitialized value \$x in print at -e line 1.\n});
try({PERL5OPT => '-Mstrict'}, ['-e', 'print $::x'],
"", "");
"",
<<ERROR
Name "main::x" used only once: possible typo at -e line 1.
-Use of uninitialized value in print at -e line 1.
+Use of uninitialized value \$x in print at -e line 1.
ERROR
);
"",
<<ERROR
Name "main::x" used only once: possible typo at -e line 1.
-Use of uninitialized value in print at -e line 1.
+Use of uninitialized value \$x in print at -e line 1.
ERROR
);
'-w -w',
'');
+try({PERL5OPT => '-t'},
+ ['-e', 'print ${^TAINT}'],
+ '-1',
+ '');
+
+try({PERLLIB => "foobar$Config{path_sep}42"},
+ ['-e', 'print grep { $_ eq "foobar" } @INC'],
+ 'foobar',
+ '');
+
+try({PERLLIB => "foobar$Config{path_sep}42"},
+ ['-e', 'print grep { $_ eq "42" } @INC'],
+ '42',
+ '');
+
+try({PERL5LIB => "foobar$Config{path_sep}42"},
+ ['-e', 'print grep { $_ eq "foobar" } @INC'],
+ 'foobar',
+ '');
+
+try({PERL5LIB => "foobar$Config{path_sep}42"},
+ ['-e', 'print grep { $_ eq "42" } @INC'],
+ '42',
+ '');
+
+try({PERL5LIB => "foo",
+ PERLLIB => "bar"},
+ ['-e', 'print grep { $_ eq "foo" } @INC'],
+ 'foo',
+ '');
+
+try({PERL5LIB => "foo",
+ PERLLIB => "bar"},
+ ['-e', 'print grep { $_ eq "bar" } @INC'],
+ '',
+ '');
+
+# PERL5LIB tests with included arch directories still missing
+
END {
1 while unlink $STDOUT;
1 while unlink $STDERR;