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'