This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
run/locale.t: Add explanation for when tests fail
authorKarl Williamson <khw@cpan.org>
Wed, 14 May 2014 02:55:09 +0000 (20:55 -0600)
committerKarl Williamson <khw@cpan.org>
Sun, 1 Jun 2014 03:22:48 +0000 (21:22 -0600)
Commit ff4377fe256e32a3bc10175c01dd6c68c9ce7ddb silenced some irrelevant
warnings that occur from some sh programs on some systems.  It does this
by closing STDERR.  That is fine unless the test fails.  This commit
changes things so that a failure now outputs a diagnostic note about how
to see the test failure details.

It would be better to automaticallty rerun the test with STDERR open
when this happens, but that is more effort than it's worth IMO, given
the likely rarity of the failures here.

t/run/locale.t

index 5e72526..6301734 100644 (file)
@@ -215,7 +215,7 @@ EOF
             local $ENV{LANG} = $different;
 
             # Can't turn off the warnings, so send them to /dev/null
-            fresh_perl_is(<<"EOF", "$difference", { stderr => "devnull" },
+            if (! fresh_perl_is(<<"EOF", "$difference", { stderr => "devnull" },
                 if (\$ENV{LC_ALL} ne "invalid") {
                     # Make the test pass if the sh didn't accept the ENV set
                     print "$difference\n";
@@ -227,7 +227,10 @@ EOF
                 my \$in = 4.2;
                 printf("%g", \$in);
 EOF
-            "LANG is used if LC_ALL, LC_NUMERIC are invalid");
+            "LANG is used if LC_ALL, LC_NUMERIC are invalid"))
+           {
+              note "To see details change this .t to not close STDERR";
+           }
         }
 
         SKIP: {
@@ -241,7 +244,7 @@ EOF
                 local $ENV{LANG} = "invalid";
 
                 # Can't turn off the warnings, so send them to /dev/null
-                fresh_perl_is(<<"EOF", 4.2, { stderr => "devnull" },
+                if (! fresh_perl_is(<<"EOF", 4.2, { stderr => "devnull" },
                     if (\$ENV{LC_ALL} ne "invalid") {
                         print "$difference\n";
                         exit 0;
@@ -252,7 +255,10 @@ EOF
                     my \$in = 4.2;
                     printf("%g", \$in);
 EOF
-                'C locale is used if LC_ALL, LC_NUMERIC, LANG are invalid');
+                'C locale is used if LC_ALL, LC_NUMERIC, LANG are invalid'))
+                {
+                    note "To see details change this .t to not close STDERR";
+                }
             }
         }