forked from hdp/module-build
-
Notifications
You must be signed in to change notification settings - Fork 0
/
basic.t
93 lines (76 loc) · 2.4 KB
/
basic.t
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
######################### We start with some black magic to print on failure.
use strict;
use Test;
BEGIN { plan tests => 19 }
use Module::Build;
ok(1);
use File::Spec;
require File::Spec->catfile('t', 'common.pl');
######################### End of black magic.
ok $INC{'Module/Build.pm'}, '/blib/', "Make sure Module::Build was loaded from blib/";
chdir 't';
# Test object creation
{
my $build = new Module::Build
(
module_name => 'ModuleBuildOne',
);
ok $build;
ok $build->module_name, 'ModuleBuildOne';
}
# Make sure actions are defined, and known_actions works as class method
{
my %actions = map {$_, 1} Module::Build->known_actions;
ok $actions{clean}, 1;
ok $actions{distdir}, 1;
}
# Test prerequisite checking
{
local @INC = (@INC, 'lib');
my $flagged = 0;
local $SIG{__WARN__} = sub { $flagged = 1 if $_[0] =~ /ModuleBuildOne/};
my $m = new Module::Build
(
module_name => 'ModuleBuildOne',
requires => {ModuleBuildOne => 0},
);
ok $flagged, 0;
ok !$m->prereq_failures;
$m->dispatch('realclean');
$flagged = 0;
$m = new Module::Build
(
module_name => 'ModuleBuildOne',
requires => {ModuleBuildOne => 3},
);
ok $flagged, 1;
ok $m->prereq_failures;
ok $m->prereq_failures->{requires}{ModuleBuildOne};
ok $m->prereq_failures->{requires}{ModuleBuildOne}{have}, 0.01;
ok $m->prereq_failures->{requires}{ModuleBuildOne}{need}, 3;
$m->dispatch('realclean');
# Make sure check_installed_status() works as a class method
my $info = Module::Build->check_installed_status('File::Spec', 0);
ok $info->{ok}, 1;
ok $info->{have}, $File::Spec::VERSION;
# Make sure check_installed_status() works with an advanced spec
my $info = Module::Build->check_installed_status('File::Spec', '> 0');
ok $info->{ok}, 1;
local $Foo::Module::VERSION = '1.01_02';
my $info = Module::Build->check_installed_status('Foo::Module', '1.01_02');
ok $info->{ok}, 1;
print $info->{message}, "\n";
}
# Test verbosity
{
require Cwd;
my $cwd = Cwd::cwd();
chdir 'Sample';
my $m = new Module::Build(module_name => 'Sample');
$m->add_to_cleanup('save_out');
# Use uc() so we don't confuse the current test output
ok uc(stdout_of( sub {$m->dispatch('test', verbose => 1)} )), qr/^OK 2/m;
ok uc(stdout_of( sub {$m->dispatch('test', verbose => 0)} )), qr/\.\.OK/;
$m->dispatch('realclean');
chdir $cwd or die "Can't change back to $cwd: $!";
}