File: rule-simple.t

package info (click to toggle)
libmakefile-dom-perl 0.004-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 616 kB
  • ctags: 535
  • sloc: perl: 6,552; makefile: 2
file content (77 lines) | stat: -rw-r--r-- 1,634 bytes parent folder | download | duplicates (5)
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
use lib 'inc';
use Test::Base;
use MDOM::Document::Gmake;
#use Smart::Comments;

plan tests => 8 * blocks();

run {
    my $block = shift;
    my $name = $block->name;

    my $dom = MDOM::Document::Gmake->new(\$block->src);
    ok $dom, "DOM tree okay - $name";
    my $rule = $dom->child(0);

    ok $rule, "Assignment obj okay - $name";
    my @got_targets = $rule->targets;
    my @expected_targets = eval $block->targets;
    die "eval targets failed ($name) - $@" if $@;
    is fmt(@got_targets), fmt(@expected_targets), "targets array okay - $name";
    is
        join('', @{ scalar($rule->targets) }),
        join('', @expected_targets),
        "targets calar okay - $name";

    ok $rule, "Assignment obj okay - $name";
    my @got_prereqs = $rule->normal_prereqs;
    my @expected_prereqs = eval $block->prereqs;
    die "eval prereqs failed ($name) - $@" if $@;
    is fmt(@got_prereqs), fmt(@expected_prereqs), "prereqs array okay - $name";
    is
        join('', @{ scalar($rule->normal_prereqs) }),
        join('', @expected_prereqs),
        "prereqs calar okay - $name";

    is $rule->colon, $block->colon, "colon okay - $name";

};

sub fmt {
    join ', ', map { "'$_'" } @_;
}

__DATA__

=== TEST 1:
--- src
 a.c b.cpp : a.h dir/hello.h
--- targets
'a.c', ' ', 'b.cpp'
--- colon:  :
--- prereqs
'a.h', ' ', 'dir/hello.h'


=== TEST 2:
--- src
 abc:: hello, world # this is a comment
--- targets
'abc'
--- colon:  ::
--- prereqs
'hello,', ' ', 'world'



=== TEST 3:
--- src
%.a :: b \
    c \
        d
--- targets
'%.a'
--- colon:  ::
--- prereqs
'b', ' ', "\\\n", '    ', 'c', ' ', "\\\n", '        ', 'd'