This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
fix ExtUtils-CBuilder tests for Perl 5.6
[perl5.git] / dist / ExtUtils-CBuilder / t / 00-have-compiler.t
index 1661812..5148412 100644 (file)
@@ -26,14 +26,34 @@ ok( $b, "got CBuilder object" ) or diag $@;
 
 # test missing compiler
 {
-my $b1 = ExtUtils::CBuilder->new(quiet => 1);
-configure_fake_missing_compilers($b1);
-is( $b1->have_compiler, 0, "have_compiler: fake missing cc" );
+
+    my $b1 = ExtUtils::CBuilder->new(quiet => 1);
+
+    configure_fake_missing_compilers($b1);
+
+    # This will fork a child that will print
+    #    'Can't exec "djaadjfkadjkfajdf"'
+    # or similar on STDERR; so make sure fd2 is temporarily closed before
+    # the fork
+    open(OLDERR, ">&STDERR") or die "Can't dup STDERR: $!";
+    close(STDERR);
+    my $res = $b1->have_compiler;
+    open(STDERR, ">&OLDERR") or die "Can't restore STDERR: $!";
+    close(OLDERR);
+
+    is($res, 0, "have_compiler: fake missing cc" );
 }
 {
-my $b2 = ExtUtils::CBuilder->new(quiet => 1);
-configure_fake_missing_compilers($b2);
-is( $b2->have_cplusplus, 0, "have_cplusplus: fake missing c++" );
+    my $b2 = ExtUtils::CBuilder->new(quiet => 1);
+    configure_fake_missing_compilers($b2);
+
+    open(OLDERR, ">&STDERR") or die "Can't dup STDERR: $!";
+    close(STDERR);
+    my $res = $b2->have_cplusplus;
+    open(STDERR, ">&OLDERR") or die "Can't restore STDERR: $!";
+    close(OLDERR);
+
+    is($res, 0, "have_cplusplus: fake missing c++" );
 }
 
 # test found compiler