This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Move IPC::Open2 from lib to ext
[perl5.git] / ext / IPC-Open2 / t / IPC-Open2.t
diff --git a/ext/IPC-Open2/t/IPC-Open2.t b/ext/IPC-Open2/t/IPC-Open2.t
new file mode 100644 (file)
index 0000000..fe49189
--- /dev/null
@@ -0,0 +1,59 @@
+#!./perl -w
+
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = '../lib';
+    require Config; import Config;
+    if (!$Config{'d_fork'}
+       # open2/3 supported on win32 (but not Borland due to CRT bugs)
+       && (($^O ne 'MSWin32' && $^O ne 'NetWare') || $Config{'cc'} =~ /^bcc/i))
+    {
+       print "1..0\n";
+       exit 0;
+    }
+    # make warnings fatal
+    $SIG{__WARN__} = sub { die @_ };
+}
+
+use strict;
+use IO::Handle;
+use IPC::Open2;
+#require 'open2.pl'; use subs 'open2';
+
+my $perl = './perl';
+
+sub ok {
+    my ($n, $result, $info) = @_;
+    if ($result) {
+       print "ok $n\n";
+    }
+    else {
+       print "not ok $n\n";
+       print "# $info\n" if $info;
+    }
+}
+
+sub cmd_line {
+       if ($^O eq 'MSWin32' || $^O eq 'NetWare') {
+               return qq/"$_[0]"/;
+       }
+       else {
+               return $_[0];
+       }
+}
+
+my ($pid, $reaped_pid);
+STDOUT->autoflush;
+STDERR->autoflush;
+
+print "1..7\n";
+
+ok 1, $pid = open2 'READ', 'WRITE', $perl, '-e',
+       cmd_line('print scalar <STDIN>');
+ok 2, print WRITE "hi kid\n";
+ok 3, <READ> =~ /^hi kid\r?\n$/;
+ok 4, close(WRITE), $!;
+ok 5, close(READ), $!;
+$reaped_pid = waitpid $pid, 0;
+ok 6, $reaped_pid == $pid, $reaped_pid;
+ok 7, $? == 0, $?;