This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
79a0b0c0eb8ac53abcda553f50e136a410bcee87
[perl5.git] / cpan / ExtUtils-CBuilder / t / 01-basic.t
1 #! perl -w
2
3 BEGIN {
4   if ($ENV{PERL_CORE}) {
5     chdir 't' if -d 't';
6     chdir '../lib/ExtUtils/CBuilder'
7       or die "Can't chdir to lib/ExtUtils/CBuilder: $!";
8     @INC = qw(../..);
9   }
10 }
11
12 use strict;
13 use Test::More;
14 BEGIN { 
15   if ($^O eq 'VMS') {
16     # So we can get the return value of system()
17     require vmsish;
18     import vmsish;
19   }
20 }
21 use ExtUtils::CBuilder;
22 use File::Spec;
23
24 # TEST doesn't like extraneous output
25 my $quiet = $ENV{PERL_CORE} && !$ENV{HARNESS_ACTIVE};
26 my ($source_file, $object_file, $lib_file);
27
28 my $b = ExtUtils::CBuilder->new(quiet => $quiet);
29
30 # test plan
31 if ( ! $b->have_compiler ) {
32   plan skip_all => "no compiler available for testing";
33 }
34 else {
35   plan tests => 10;
36 }
37
38 ok $b, "created EU::CB object";
39
40 ok $b->have_compiler, "have_compiler";
41
42 $source_file = File::Spec->catfile('t', 'compilet.c');
43 {
44   local *FH;
45   open FH, "> $source_file" or die "Can't create $source_file: $!";
46   print FH "int boot_compilet(void) { return 1; }\n";
47   close FH;
48 }
49 ok -e $source_file, "source file '$source_file' created";
50
51 $object_file = $b->object_file($source_file);
52 ok 1;
53
54 is $object_file, $b->compile(source => $source_file);
55
56 $lib_file = $b->lib_file($object_file);
57 ok 1;
58
59 my ($lib, @temps) = $b->link(objects => $object_file,
60                              module_name => 'compilet');
61 $lib =~ tr/"'//d;
62 is $lib_file, $lib;
63
64 for ($source_file, $object_file, $lib_file) {
65   tr/"'//d;
66   1 while unlink;
67 }
68
69 if ($^O eq 'VMS') {
70    1 while unlink 'COMPILET.LIS';
71    1 while unlink 'COMPILET.OPT';
72 }
73
74 my @words = $b->split_like_shell(' foo bar');
75
76 SKIP: {
77   skip "MSWindows", 3 if $^O =~ m/MSWin/;
78   is( @words, 2 );
79   is( $words[0], 'foo' );
80   is( $words[1], 'bar' );
81 }