This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Prevent ExtUtils-CBuilder leaving test output on Windows
[perl5.git] / dist / ExtUtils-CBuilder / t / 00-have-compiler.t
1 #! perl -w
2
3 use File::Spec;
4 my $perl;
5 BEGIN {
6   $perl = File::Spec->rel2abs($^X);
7 }
8
9 use strict;
10 use Test::More;
11 BEGIN { 
12   if ($^O eq 'VMS') {
13     # So we can get the return value of system()
14     require vmsish;
15     import vmsish;
16   }
17 }
18
19 plan tests => 7;
20
21 require_ok "ExtUtils::CBuilder";
22
23 my $b = eval { ExtUtils::CBuilder->new(quiet => 1) };
24 ok( $b, "got CBuilder object" ) or diag $@;
25
26 # test missing compiler
27 {
28 my $b1 = ExtUtils::CBuilder->new(quiet => 1);
29 configure_fake_missing_compilers($b1);
30 is( $b1->have_compiler, 0, "have_compiler: fake missing cc" );
31 }
32 {
33 my $b2 = ExtUtils::CBuilder->new(quiet => 1);
34 configure_fake_missing_compilers($b2);
35 is( $b2->have_cplusplus, 0, "have_cplusplus: fake missing c++" );
36 }
37
38 # test found compiler
39 {
40 my $b3 = ExtUtils::CBuilder->new(quiet => 1);
41 configure_fake_present_compilers($b3);
42 is( $b3->have_compiler, 1, "have_compiler: fake present cc" );
43 }
44 {
45 my $b4 = ExtUtils::CBuilder->new(quiet => 1);
46 configure_fake_present_compilers($b4);
47 is( $b4->have_cplusplus, 1, "have_cpp_compiler: fake present c++" );
48 }
49
50 # test missing cpp compiler
51
52 # test one non-exported subroutine
53 {
54     my $type = ExtUtils::CBuilder::os_type();
55     if ($type) {
56         pass( "OS type $type located for $^O" );
57     }
58     else {
59         pass( "OS type not yet listed for $^O" );
60     }
61 }
62
63 sub configure_fake_missing_compilers {
64     my $b = shift;
65     my $bogus_path = 'djaadjfkadjkfajdf';
66     $b->{config}{cc} = $bogus_path;
67     $b->{config}{ld} = $bogus_path;
68     $b->{have_cc} = undef;
69     $b->{have_cxx} = undef;
70 }
71
72 sub configure_fake_present_compilers {
73     my $b = shift;
74     my $run_perl = "$perl -e1 --";
75     $b->{config}{cc} = $run_perl;
76     $b->{config}{ld} = $run_perl;
77     $b->{config}{cxx} = $run_perl;
78     $b->{have_cc} = undef;
79     $b->{have_cxx} = undef;
80 }