t/io/eintr.t: Make this pass on my ppc64 box
authorÆvar Arnfjörð Bjarmason <avar@cpan.org>
Tue, 7 Oct 2014 19:57:59 +0000 (19:57 +0000)
committerÆvar Arnfjörð Bjarmason <avar@cpan.org>
Tue, 7 Oct 2014 19:57:59 +0000 (19:57 +0000)
See the "Test failures in blead on ppc64" thread on perl5-porters for
details. I'd fail on the previous value, this passes every time.

t/io/eintr.t

index 9ea9cc7..32f109d 100644 (file)
@@ -95,11 +95,16 @@ alarm(0);
 ok(!$st, 'read/die: read status');
 ok(close($in), 'read/die: close status');
 
+# This used to be 1_000_000, but on Linux/ppc64 (POWER7) this kept
+# consistently failing. At exactly 0x100000 it started passing
+# again. We're hoping this number is bigger than any pipe buffer.
+my $surely_this_arbitrary_number_is_fine = 0x100000;
+
 # close during print
 
 fresh_io;
 $SIG{ALRM} = sub { $sigst = close($out) ? "ok" : "nok" };
-$buf = "a" x 1_000_000 . "\n"; # bigger than any pipe buffer hopefully
+$buf = "a" x $surely_this_arbitrary_number_is_fine . "\n";
 select $out; $| = 1; select STDOUT;
 alarm(1);
 $st = print $out $buf;
@@ -112,7 +117,7 @@ ok(!close($out), 'print/close: close status');
 
 fresh_io;
 $SIG{ALRM} = sub { die };
-$buf = "a" x 1_000_000 . "\n"; # bigger than any pipe buffer hopefully
+$buf = "a" x $surely_this_arbitrary_number_is_fine . "\n";
 select $out; $| = 1; select STDOUT;
 alarm(1);
 $st = eval { print $out $buf };