Fix locale-dependant test failures
authorMarcus Holland-Moritz <mhx-perl@gmx.net>
Mon, 5 Jan 2004 21:11:24 +0000 (21:11 +0000)
committerLeon Brocard <acme@astray.com>
Mon, 5 Jan 2004 21:11:24 +0000 (21:11 +0000)
From: "Marcus Holland-Moritz" <mhx-perl@gmx.net>
Subject: [PATCH perl-5.005xx] Locale-dependant test failures

p4raw-id: //depot/maint-5.005/perl@22062

t/lib/safe2.t
t/op/mkdir.t

index 6afc117..f0c91e6 100755 (executable)
@@ -121,9 +121,20 @@ print $@ =~ /foo bar/ ? "ok 29\n" : "not ok 29\n";
 # --- rdo
   
 my $t = 30;
-$cpt->rdo('/non/existant/file.name');
-# The regexp is getting rather baroque.
-print $! =~ /No such file|file specification syntax error|A file or directory in the path name does not exist|Invalid argument|Device not configured|file not found/i ? "ok $t\n" : "not ok $t # $!\n"; $t++;
+$! = 0;
+my $nosuch = '/non/existant/file.name';
+open(NOSUCH, $nosuch);
+if ($@) {
+    my $errno  = $!;
+    die "Eek! Attempting to open $nosuch failed, but \$! is still 0" unless $!;
+    $! = 0;
+    $cpt->rdo($nosuch);
+    print $! == $errno ? "ok $t\n" : sprintf "not ok $t # \"$!\" is %d (expected %d)\n", $!, $errno; $t++;
+} else {
+    die "Eek! Didn't expect $nosuch to be there.";
+}
+close(NOSUCH);
+
 # test #31 is gone.
 print 1 ? "ok $t\n" : "not ok $t\n#$@/$!\n"; $t++;
   
index acf16c1..fc91b6b 100755 (executable)
@@ -8,6 +8,7 @@ $^O eq 'MSWin32' ? `del /s /q blurfl 2>&1` : `rm -rf blurfl`;
 
 # tests 3 and 7 rather naughtily expect English error messages
 $ENV{'LC_ALL'} = 'C';
+$ENV{LANGUAGE} = 'C'; # GNU locale extension
 
 print (mkdir('blurfl',0777) ? "ok 1\n" : "not ok 1\n");
 print (mkdir('blurfl',0777) ? "not ok 2\n" : "ok 2\n");