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 4991d5e..473261e 100644 (file)
@@ -3,28 +3,38 @@
 BEGIN {
     chdir 't' if -d 't';
     @INC = qw(. ../lib);
+    require './test.pl';
+    eval 'use Errno';
+    die $@ if $@ and !is_miniperl();
 }
 
-use Config;
 
-require "test.pl";
-plan(tests => 8);
+plan(tests => 9);
 
 ok( binmode(STDERR),            'STDERR made binary' );
-if ($Config{useperlio}) {
-  ok( binmode(STDERR, ":unix"),   '  with unix discipline' );
-} else {
-  ok(1,   '  skip unix discipline for -Uuseperlio' );
+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);
-if ($Config{useperlio}) {
-  ok( binmode(STDOUT, ":unix"),   '  with unix discipline' );
-} else {
-  ok(1,   '  skip unix discipline for -Uuseperlio' );
+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());
+}