DJGPP updates from Laszlo Molnar.
[p5sagit/p5-mst-13.2.git] / ext / Cwd / t / cwd.t
index 88a1b94..6b0453d 100644 (file)
@@ -28,20 +28,29 @@ eval { fastcwd };
 
 # Must find an external pwd (or equivalent) command.
 
+my $pwd = $^O eq 'MSWin32' ? "cmd" : "pwd";
 my $pwd_cmd =
-    ($^O eq "MSWin32" || $^O eq "NetWare") ?
+    ($^O eq "NetWare") ?
         "cd" :
-        (grep { -x && -f } map { "$_/pwd" }
+        (grep { -x && -f } map { "$_/$pwd$Config{exe_ext}" }
                           split m/$Config{path_sep}/, $ENV{PATH})[0];
 
 $pwd_cmd = 'SHOW DEFAULT' if $IsVMS;
+if ($^O eq 'MSWin32') {
+    $pwd_cmd =~ s,/,\\,g;
+    $pwd_cmd = "$pwd_cmd /c cd";
+}
+$pwd_cmd =~ s=\\=/=g if ($^O eq 'dos');
 
 print "# native pwd = '$pwd_cmd'\n";
 
 SKIP: {
     skip "No native pwd command found to test against", 4 unless $pwd_cmd;
 
-    chomp(my $start = `$pwd_cmd`);
+    local @ENV{qw(PATH IFS CDPATH ENV BASH_ENV)};
+    my ($pwd_cmd_untainted) = $pwd_cmd =~ /^(.+)$/; # Untaint.
+    chomp(my $start = `$pwd_cmd_untainted`);
+
     # Win32's cd returns native C:\ style
     $start =~ s,\\,/,g if ($^O eq 'MSWin32' || $^O eq "NetWare");
     # DCL SHOW DEFAULT has leading spaces
@@ -65,9 +74,9 @@ my $Test_Dir     = "$Top_Test_Dir/_path_/_to_/_a_/_dir_";
 my $want = "t/$Test_Dir";
 if( $IsVMS ) {
     # translate the unixy path to VMSish
-    $want = uc $want;
     $want =~ s|/|\.|g;
     $want .= '\]';
+    $want = '((?i)' . $want . ')';  # might be ODS-2 or ODS-5
 }
 
 mkpath(["$Test_Dir"], 0, 0777);
@@ -94,7 +103,7 @@ print "#$ENV{PWD}\n";
 rmtree([$Top_Test_Dir], 0, 0);
 
 if ($IsVMS) {
-    like($ENV{PWD}, qr|\bT\]$|);
+    like($ENV{PWD}, qr|\b((?i)t)\]$|);
 }
 else {
     like($ENV{PWD}, qr|\bt$|);