This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Added config.w32 to win32/.gitignore
[perl5.git] / t / io / binmode.t
index 76fd5a7..41eff4a 100644 (file)
@@ -2,19 +2,41 @@
 
 BEGIN {
     chdir 't' if -d 't';
-    @INC = '../lib';
+    @INC = qw(. ../lib);
+    require './test.pl';
 }
 
-
-use Test::More tests => 8;
+use Config;
+BEGIN {
+    eval {require Errno; Errno->import;};
+}
+plan(tests => 9);
 
 ok( binmode(STDERR),            'STDERR made binary' );
-ok( binmode(STDERR, ":unix"),   '  with unix discipline' );
+if (find PerlIO::Layer 'perlio') {
+  ok( binmode(STDERR, ":unix"),   '  with unix discipline' );
+} else {
+  ok(1,   '  skip unix discipline without PerlIO layers' );
+}
 ok( binmode(STDERR, ":raw"),    '  raw' );
 ok( binmode(STDERR, ":crlf"),   '  and crlf' );
 
 # If this one fails, we're in trouble.  So we just bail out.
 ok( binmode(STDOUT),            'STDOUT made binary' )      || exit(1);
-ok( binmode(STDOUT, ":unix"),   '  with unix discipline' );
-ok( binmode(STDERR, ":raw"),    '  raw' );
-ok( binmode(STDERR, ":crlf"),   '  and crlf' );
+if (find PerlIO::Layer 'perlio') {
+  ok( binmode(STDOUT, ":unix"),   '  with unix discipline' );
+} else {
+  ok(1,   '  skip unix discipline without PerlIO layers' );
+}
+ok( binmode(STDOUT, ":raw"),    '  raw' );
+ok( binmode(STDOUT, ":crlf"),   '  and crlf' );
+
+SKIP: {
+    skip "minitest", 1 if $ENV{PERL_CORE_MINITEST};
+    skip "no EBADF", 1 if (!exists &Errno::EBADF);
+
+    no warnings 'io', 'once';
+    $! = 0;
+    binmode(B);
+    ok($! == &Errno::EBADF);
+}