xref: /openbsd-src/gnu/usr.bin/perl/t/io/errno.t (revision f2da64fbbbf1b03f09f390ab01267c93dfd77c4c)
1#!./perl
2# vim: ts=4 sts=4 sw=4:
3
4# $! may not be set if EOF was reached without any error.
5# http://rt.perl.org/rt3/Ticket/Display.html?id=39060
6
7use strict;
8use Config;
9
10require './test.pl';
11
12plan( tests => 16 );
13
14my $test_prog = 'undef $!;while(<>){print}; print $!';
15my $saved_perlio;
16
17BEGIN {
18    $saved_perlio = $ENV{PERLIO};
19}
20END {
21    delete $ENV{PERLIO};
22    $ENV{PERLIO} = $saved_perlio if defined $saved_perlio;
23}
24
25for my $perlio ('perlio', 'stdio') {
26    $ENV{PERLIO} = $perlio;
27SKIP:
28    for my $test_in ("test\n", "test") {
29		skip("Guaranteed newline at EOF on VMS", 4) if $^O eq 'VMS' && $test_in eq 'test';
30                skip("[perl #71504] OpenBSD test failures in errno.t with ithreads and perlio", 8)
31                    if $^O eq 'openbsd' && $Config{useithreads} && $perlio eq 'stdio';
32		my $test_in_esc = $test_in;
33		$test_in_esc =~ s/\n/\\n/g;
34		for my $rs_code ('', '$/=undef', '$/=\2', '$/=\1024') {
35		    TODO:
36		    {
37			is( runperl( prog => "$rs_code; $test_prog",
38						 stdin => $test_in, stderr => 1),
39				$test_in,
40				"Wrong errno, PERLIO=$ENV{PERLIO} stdin='$test_in_esc', $rs_code");
41		    }
42		}
43    }
44}
45