82dee7de92a0bd35 failed to add ext/lib/Makefile.PL. Oops.
[p5sagit/p5-mst-13.2.git] / ext / ExtUtils-MakeMaker / t / recurs.t
CommitLineData
5e719f03 1#!/usr/bin/perl -w
2
3# This tests MakeMaker against recursive builds
4
5BEGIN {
b78fd716 6 unshift @INC, 't/lib';
5e719f03 7}
8
9use strict;
10use Config;
11
277189c8 12use Test::More tests => 26;
5e719f03 13use MakeMaker::Test::Utils;
14use MakeMaker::Test::Setup::Recurs;
15
16# 'make disttest' sets a bunch of environment variables which interfere
17# with our testing.
18delete @ENV{qw(PREFIX LIB MAKEFLAGS)};
19
20my $perl = which_perl();
21my $Is_VMS = $^O eq 'VMS';
22
23chdir('t');
24
25perl_lib;
26
27my $Touch_Time = calibrate_mtime();
28
29$| = 1;
30
31ok( setup_recurs(), 'setup' );
32END {
33 ok( chdir File::Spec->updir );
34 ok( teardown_recurs(), 'teardown' );
35}
36
37ok( chdir('Recurs'), q{chdir'd to Recurs} ) ||
38 diag("chdir failed: $!");
39
40
41# Check recursive Makefile building.
42my @mpl_out = run(qq{$perl Makefile.PL});
43
44cmp_ok( $?, '==', 0, 'Makefile.PL exited with zero' ) ||
45 diag(@mpl_out);
46
47my $makefile = makefile_name();
48
49ok( -e $makefile, 'Makefile written' );
50ok( -e File::Spec->catfile('prj2',$makefile), 'sub Makefile written' );
51
52my $make = make_run();
53
7292dc67 54my $make_out = run("$make");
55is( $?, 0, 'recursive make exited normally' ) || diag $make_out;
5e719f03 56
57ok( chdir File::Spec->updir );
58ok( teardown_recurs(), 'cleaning out recurs' );
59ok( setup_recurs(), ' setting up fresh copy' );
60ok( chdir('Recurs'), q{chdir'd to Recurs} ) ||
61 diag("chdir failed: $!");
62
63
64# Check NORECURS
65@mpl_out = run(qq{$perl Makefile.PL "NORECURS=1"});
66
67cmp_ok( $?, '==', 0, 'Makefile.PL NORECURS=1 exited with zero' ) ||
68 diag(@mpl_out);
69
70$makefile = makefile_name();
71
72ok( -e $makefile, 'Makefile written' );
73ok( !-e File::Spec->catfile('prj2',$makefile), 'sub Makefile not written' );
74
75$make = make_run();
76
77run("$make");
78is( $?, 0, 'recursive make exited normally' );
79
80
81ok( chdir File::Spec->updir );
82ok( teardown_recurs(), 'cleaning out recurs' );
83ok( setup_recurs(), ' setting up fresh copy' );
84ok( chdir('Recurs'), q{chdir'd to Recurs} ) ||
85 diag("chdir failed: $!");
86
87
88# Check that arguments aren't stomped when they have .. prepended
89# [rt.perl.org 4345]
90@mpl_out = run(qq{$perl Makefile.PL "INST_SCRIPT=cgi"});
91
92cmp_ok( $?, '==', 0, 'Makefile.PL exited with zero' ) ||
93 diag(@mpl_out);
94
95$makefile = makefile_name();
96my $submakefile = File::Spec->catfile('prj2',$makefile);
97
98ok( -e $makefile, 'Makefile written' );
99ok( -e $submakefile, 'sub Makefile written' );
100
101my $inst_script = File::Spec->catdir(File::Spec->updir, 'cgi');
102ok( open(MAKEFILE, $submakefile) ) || diag("Can't open $submakefile: $!");
103{ local $/;
104 like( <MAKEFILE>, qr/^\s*INST_SCRIPT\s*=\s*\Q$inst_script\E/m,
105 'prepend .. not stomping WriteMakefile args' )
106}
107close MAKEFILE;
277189c8 108
109
110{
111 # Quiet "make test" failure noise
112 close *STDERR;
113
114 my $test_out = run("$make test");
115 isnt $?, 0, 'test failure in a subdir causes make to fail';
b78fd716 116}