1#!./perl 2# vim: ts=4 sts=4 sw=4: 3 4# $! may not be set if EOF was reached without any error. 5# https://github.com/Perl/perl5/issues/8431 6 7use strict; 8use Config; 9 10chdir 't' if -d 't'; 11require './test.pl'; 12 13plan( tests => 16 ); 14 15my $test_prog = 'undef $!;while(<>){print}; print $!'; 16my $saved_perlio; 17 18BEGIN { 19 $saved_perlio = $ENV{PERLIO}; 20} 21END { 22 delete $ENV{PERLIO}; 23 $ENV{PERLIO} = $saved_perlio if defined $saved_perlio; 24} 25 26for my $perlio ('perlio', 'stdio') { 27 $ENV{PERLIO} = $perlio; 28SKIP: 29 for my $test_in ("test\n", "test") { 30 skip("Guaranteed newline at EOF on VMS", 4) if $^O eq 'VMS' && $test_in eq 'test'; 31 # perl #71504 added skip in openbsd+threads+stdio; 32 # then commit 23705063 made -lpthread the default. 33 skip("[perl #71504] OpenBSD test failures in errno.t with ithreads and perlio]; [perl #126306: openbsd t/io/errno.t tests fail randomly]", 8) 34 if $^O eq 'openbsd' && $perlio eq 'stdio'; 35 my $test_in_esc = $test_in; 36 $test_in_esc =~ s/\n/\\n/g; 37 for my $rs_code ('', '$/=undef', '$/=\2', '$/=\1024') { 38 TODO: 39 { 40 is( runperl( prog => "$rs_code; $test_prog", 41 stdin => $test_in, stderr => 1), 42 $test_in, 43 "Wrong errno, PERLIO=$ENV{PERLIO} stdin='$test_in_esc', $rs_code"); 44 } 45 } 46 } 47} 48