File: GmakeDOM.pm

package info (click to toggle)
libmakefile-dom-perl 0.008-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, buster
  • size: 680 kB
  • ctags: 620
  • sloc: perl: 7,616; makefile: 2
file content (47 lines) | stat: -rw-r--r-- 1,350 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
package t::GmakeDOM;

use lib 'inc';
use Test::Base -Base;

use MDOM::Document::Gmake;
use MDOM::Dumper;

our @EXPORT = qw( run_tests );

sub run_test ($) {
    my $block = shift;
    my $name = $block->name;
    my $src = $block->src;
    my $dom = MDOM::Document::Gmake->new( \$src );
    ok $dom, "$name - DOM defined";
    my $dumper = MDOM::Dumper->new($dom);
    my $got = $dumper->string;
    my $expected = $block->dom;

    # canonicalize the whitespace:
    $got =~ s/(?x) ^ ( \s* [\w:]+ ) [ \t]+/$1\t\t/gm;
    $expected =~  s/(?x) ^ ( \s* [\w:]+ ) [ \t]+/$1\t\t/gm;
    # process abbreviations:
    $expected =~ s/\bM::D::G\b/MDOM::Document::Gmake/gs;
    $expected =~ s/\bM::D\b/MDOM::Directive/gs;
    $expected =~ s/\bM::R::S\b/MDOM::Rule::Simple/gs;
    $expected =~ s/\bM::T::C\b/MDOM::Token::Comment/gs;
    $expected =~ s/\bM::T::W\b/MDOM::Token::Whitespace/gs;
    $expected =~ s/\bM::T::S\b/MDOM::Token::Separator/gs;
    $expected =~ s/\bM::T::B\b/MDOM::Token::Bare/gs;
    $expected =~ s/\bM::T::M\b/MDOM::Token::Modifier/gs;
    $expected =~ s/\bM::T::I\b/MDOM::Token::Interpolation/gs;
    $expected =~ s/\bM::C\b/MDOM::Command/gs;

    is $got, $expected, "$name - DOM structure ok";
    #warn $dumper->string if $name =~ /TEST 0/;
}

sub run_tests () {
    for my $block (blocks()) {
        run_test($block);
    }
}

1;