File: 40-eumm-plan.t

package info (click to toggle)
libextutils-builder-perl 0.017-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 276 kB
  • sloc: perl: 1,351; makefile: 2
file content (70 lines) | stat: -rw-r--r-- 1,645 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#! perl

use strict;
use warnings;

use Test::More 0.89;

use Config;
use Cwd qw/getcwd/;
use File::Temp qw/tempdir/;
use ExtUtils::Builder::Util 'get_perl';
use ExtUtils::Manifest 'mkmanifest';

my $tempdir = tempdir(CLEANUP => 1, TEMPLATE => 'ExtUtilsBuilderXXXX');

my $pwd = getcwd;
chdir $tempdir;

open my $mfpl, '>', 'Makefile.PL';

my @touch_prefix = $^O eq 'MSWin32' || $^O eq 'VMS' ? (get_perl(), '-MExtUtils::Command', '-e') : ();
my $touch = join ', ', map { qq{'$_'} } @touch_prefix, 'touch';

printf $mfpl <<'END', $touch;
use ExtUtils::MakeMaker;
use ExtUtils::Builder::MakeMaker;
use ExtUtils::Builder::Util qw/command code/;


WriteMakefile(
	NAME => 'FOO',
	VERSION => 0.001,
	NO_MYMETA => 1,
	NO_META => 1,
);

sub MY::make_plans {
	my ($self, $planner, $config) = @_;
	my $action1 = command(%s, 'very_unlikely_name');
	my $action2 = code(code => 'open my $fh, "\\x{3e}", "other_unlikely_name"');
	$planner->create_node(target => 'foo', actions => [ $action1, $action2 ]);
	$planner->create_node(target => 'pure_all', dependencies => [ 'foo' ], phony => 1);
}

END

close $mfpl;

{
	local $ExtUtils::Manifest::Verbose = 0;
	mkmanifest;
}

system get_perl(), 'Makefile.PL';

ok(-e 'Makefile', 'Makefile exists');

open my $mf, '<', 'Makefile' or die "Couldn't open Makefile: $!";
my $content = do { local $/; <$mf> };

like($content, qr/^\t .* touch .* very_unlikely_name/xm, 'Makefile contains very_unlikely_name');

my $make = $ENV{MAKE} // $Config{make};
system $make;
ok(-e 'very_unlikely_name', "Unlikely file has been touched");
ok(-e 'other_unlikely_name', "Unlikely file has been touched");

chdir $pwd;

done_testing;