6 unless (find PerlIO::Layer 'perlio') {
7 print "1..0 # Skip: not perlio\n";
11 if (($Config::Config{'extensions'} !~ m!\bPerlIO/via\b!) ){
12 print "1..0 # Skip -- Perl configured without PerlIO::via module\n";
22 use Test::More tests => 18;
25 my $a = join("", map { chr } 0..255) x 10;
28 BEGIN { use_ok('PerlIO::via::QuotedPrint'); }
30 ok( !open($fh,"<via(PerlIO::via::QuotedPrint)", $tmp), 'open QuotedPrint for input fails');
31 ok( open($fh,">via(PerlIO::via::QuotedPrint)", $tmp), 'open QuotedPrint for output');
32 ok( (print $fh $a), "print to output file");
33 ok( close($fh), 'close output file');
35 ok( open($fh,"<via(PerlIO::via::QuotedPrint)", $tmp), 'open QuotedPrint for input');
36 { local $/; $b = <$fh> }
37 ok( close($fh), "close input file");
39 is($a, $b, 'compare original data with filtered version');
44 local $SIG{__WARN__} = sub { $warnings = join '', @_ };
48 # Find fd number we should be using
49 my $fd = open($fh,">$tmp") && fileno($fh);
53 ok( ! open($fh,">via(Unknown::Module)", $tmp), 'open via Unknown::Module will fail');
54 like( $warnings, qr/^Cannot find package 'Unknown::Module'/, 'warn about unknown package' );
56 # Now open normally again to see if we get right fileno
57 my $fd2 = open($fh,"<$tmp") && fileno($fh);
58 is($fd2,$fd,"Wrong fd number after failed open");
62 is($data,"Hello\n","File clobbered by failed open");
67 package Incomplete::Module;
72 ok( ! open($fh,">via(Incomplete::Module)", $tmp), 'open via Incomplete::Module will fail');
73 is( $warnings, "", "don't warn about unknown package" );
77 ok( ! open($fh,">via(Unknown::Module)", $tmp), 'open via Unknown::Module will fail');
78 is( $warnings, "", "don't warn about unknown package" );
82 sub Foo::PUSHED { $obj = shift; -1; }
83 sub PerlIO::via::Bar::PUSHED { $obj = shift; -1; }
84 open $fh, '<:via(Foo)', "foo";
85 is( $obj, 'Foo', 'search for package Foo' );
86 open $fh, '<:via(Bar)', "bar";
87 is( $obj, 'PerlIO::via::Bar', 'search for package PerlIO::via::Bar' );