2 # $Id: piconv.t,v 0.1 2009/07/08 12:34:21 dankogai Exp $
6 if ( $ENV{'PERL_CORE'} ) {
7 print "1..0 # Skip: Don't know how to test this within perl's core\n";
15 use IPC::Open3 qw(open3);
23 File::Spec->catfile( $FindBin::RealBin, File::Spec->updir, 'blib' ) );
24 my $script = "$blib/script/piconv";
25 my @base_cmd = ( $^X, "-Mblib=$blib", $script );
30 my ( $st, $out, $err ) = run_cmd;
31 is( $st, 0, 'status for usage call' );
33 like( $err, qr{^piconv}, 'usage' );
37 my($st, $out, $err) = run_cmd [qw(-S foobar -f utf-8 -t ascii), $script];
38 like($err, qr{unknown scheme.*fallback}i, 'warning for unknown scheme');
42 my ( $st, $out, $err ) = run_cmd [qw(-f utf-8 -t ascii ./non-existing/file)];
43 like( $err, qr{can't open}i );
47 my ( $args, $in ) = @_;
50 my ( $in_fh, $out_fh, $err_fh );
53 gensym; # sigh... otherwise stderr gets just to $out_fh, not to $err_fh
54 my $pid = open3( $in_fh, $out_fh, $err_fh, @base_cmd, @$args )
55 or die "Can't run @base_cmd @$args: $!";
57 my $sel = IO::Select->new( $out_fh, $err_fh );
59 while ( my @ready = $sel->can_read ) {
63 last if !$sel->handles;
65 elsif ( $out_fh == $fh ) {
69 elsif ( $err_fh == $fh ) {