in testing EISDIR string, check known value first
authorRicardo Signes <rjbs@cpan.org>
Wed, 16 Jan 2013 13:56:57 +0000 (08:56 -0500)
committerRicardo Signes <rjbs@cpan.org>
Wed, 16 Jan 2013 15:07:54 +0000 (10:07 -0500)
It was not enough to ensure the English value, as some platforms
use a different string entirely.  Rather than goof around with
figuring them out, just get the known value by making an EISDIR
and stringifying it, then compare to that.

t/run/switches.t

index c119bee..ea94571 100644 (file)
@@ -14,6 +14,7 @@ BEGIN { require "./test.pl"; }
 plan(tests => 115);
 
 use Config;
+use Errno qw(EISDIR);
 
 # due to a bug in VMS's piping which makes it impossible for runperl()
 # to emulate echo -n (ie. stdin always winds up with a newline), these 
@@ -111,16 +112,16 @@ SWTEST
     my $tempdir = tempfile;
     mkdir $tempdir, 0700 or die "Can't mkdir '$tempdir': $!";
 
+    local $ENV{'LC_ALL'} = 'C'; # Keep the test simple: expect English
+    local $ENV{LANGUAGE} = 'C';
+
     # Win32 won't let us open the directory, so we never get to die with
     # EISDIR, which happens after open.
+    my $eisdir = do { local $! = EISDIR; "$!" };
     my $error = $^O eq 'MSWin32' ? 'Permission denied' : 'Is a directory';
-
-    $ENV{'LC_ALL'} = 'C'; # Keep the test simple: expect English
-    $ENV{LANGUAGE} = 'C';
-
     like(
         runperl( switches => [ '-c' ], args  => [ $tempdir ], stderr => 1),
-        qr/Can't open perl script.*$tempdir.*$error/s,
+        qr/Can't open perl script.*$tempdir.*\Q$error/s,
         "RT \#61362: Cannot syntax-check a directory"
     );
     rmdir $tempdir or die "Can't rmdir '$tempdir': $!";