This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Test that IPC::Open{2,3} correctly qualify file handles to their package.
authorNicholas Clark <nick@ccl4.org>
Mon, 6 Jun 2011 11:30:51 +0000 (13:30 +0200)
committerNicholas Clark <nick@ccl4.org>
Mon, 6 Jun 2011 19:49:47 +0000 (21:49 +0200)
ext/IPC-Open2/t/IPC-Open2.t
ext/IPC-Open3/t/IPC-Open3.t

index e97d8fb..c0ea920 100644 (file)
@@ -16,7 +16,7 @@ BEGIN {
 
 use strict;
 use IPC::Open2;
-use Test::More tests => 7;
+use Test::More tests => 14;
 
 my $perl = $^X;
 
@@ -41,3 +41,17 @@ ok(close(READ), "closing READ: $!");
 my $reaped_pid = waitpid $pid, 0;
 is($reaped_pid, $pid, "Reaped PID matches");
 is($?, 0, '$? should be zero');
+
+{
+    package SKREEEK;
+    my $pid = IPC::Open2::open2('KAZOP', 'WRITE', $perl, '-e',
+                               main::cmd_line('print scalar <STDIN>'));
+    main::cmp_ok($pid, '>', 1, 'got a sane process ID');
+    main::ok(print WRITE "hi kid\n");
+    main::like(<KAZOP>, qr/^hi kid\r?\n$/);
+    main::ok(close(WRITE), "closing WRITE: $!");
+    main::ok(close(KAZOP), "closing READ: $!");
+    my $reaped_pid = waitpid $pid, 0;
+    main::is($reaped_pid, $pid, "Reaped PID matches");
+    main::is($?, 0, '$? should be zero');
+}
index 2d86c7f..8ff4100 100644 (file)
@@ -14,7 +14,7 @@ BEGIN {
 }
 
 use strict;
-use Test::More tests => 23;
+use Test::More tests => 24;
 
 use IO::Handle;
 use IPC::Open3;
@@ -96,6 +96,16 @@ $pid = open3 'WRITE', '>&STDOUT', 'ERROR',
 print WRITE "ok $test\n";
 waitpid $pid, 0;
 
+{
+    package YAAH;
+    $pid = IPC::Open3::open3('QWACK_WAAK_WAAK', '>&STDOUT', 'ERROR',
+                            $perl, '-e', main::cmd_line('print scalar <STDIN>'));
+    ++$test;
+    no warnings 'once';
+    print QWACK_WAAK_WAAK "ok $test # filenames qualified to their package\n";
+    waitpid $pid, 0;
+}
+
 # dup error:  This particular case, duping stderr onto the existing
 # stdout but putting stdout somewhere else, is a good case because it
 # used not to work.