This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Tidy t/io/binmode.t
[perl5.git] / t / io / binmode.t
index 76fd5a7..473261e 100644 (file)
@@ -2,19 +2,39 @@
 
 BEGIN {
     chdir 't' if -d 't';
-    @INC = '../lib';
+    @INC = qw(. ../lib);
+    require './test.pl';
+    eval 'use Errno';
+    die $@ if $@ and !is_miniperl();
 }
 
 
-use Test::More tests => 8;
+plan(tests => 9);
 
 ok( binmode(STDERR),            'STDERR made binary' );
-ok( binmode(STDERR, ":unix"),   '  with unix discipline' );
+SKIP: {
+    skip('skip unix discipline without PerlIO layers', 1)
+       unless find PerlIO::Layer 'perlio';
+    ok( binmode(STDERR, ":unix"),   '  with unix discipline' );
+}
 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' );
+SKIP: {
+    skip('skip unix discipline without PerlIO layers', 1)
+       unless find PerlIO::Layer 'perlio';
+    ok( binmode(STDOUT, ":unix"),   '  with unix discipline' );
+}
+ok( binmode(STDOUT, ":raw"),    '  raw' );
+ok( binmode(STDOUT, ":crlf"),   '  and crlf' );
+
+SKIP: {
+    skip "no EBADF", 1 unless exists &Errno::EBADF;
+
+    no warnings 'io', 'once';
+    $! = 0;
+    binmode(B);
+    cmp_ok($!, '==', Errno::EBADF());
+}