The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use t::GmakeDOM;

plan tests => blocks() * 2;

run_tests;

__DATA__

=== TEST 1: variable references in prereq list
--- src

a: foo.c  bar.h	$(baz) # hello!
	@echo ...

--- dom
MDOM::Document::Gmake
  MDOM::Rule::Simple
    MDOM::Token::Bare         'a'
    MDOM::Token::Separator    ':'
    MDOM::Token::Whitespace   ' '
    MDOM::Token::Bare         'foo.c'
    MDOM::Token::Whitespace   '  '
    MDOM::Token::Bare         'bar.h'
    MDOM::Token::Whitespace   '\t'
    MDOM::Token::Interpolation   '$(baz)'
    MDOM::Token::Whitespace      ' '
    MDOM::Token::Comment         '# hello!'
    MDOM::Token::Whitespace      '\n'
  MDOM::Command
    MDOM::Token::Separator    '\t'
    MDOM::Token::Modifier     '@'
    MDOM::Token::Bare         'echo ...'
    MDOM::Token::Whitespace   '\n'



=== TEST 2: variable interpolation cannot be escaped by \
--- src
all: ; echo \$a
--- dom
MDOM::Document::Gmake
  MDOM::Rule::Simple
    MDOM::Token::Bare               'all'
    MDOM::Token::Separator          ':'
    MDOM::Token::Whitespace         ' '
    MDOM::Command
      MDOM::Token::Separator        ';'
      MDOM::Token::Whitespace       ' '
      MDOM::Token::Bare             'echo \'
      MDOM::Token::Interpolation    '$a'
      MDOM::Token::Whitespace       '\n'



=== TEST 3: $@, $a, etc.
--- src
all: $a $(a) ${c}
	echo $@ $a ${a} ${abc} ${}
--- dom
MDOM::Document::Gmake
  MDOM::Rule::Simple
    MDOM::Token::Bare               'all'
    MDOM::Token::Separator          ':'
    MDOM::Token::Whitespace         ' '
    MDOM::Token::Interpolation      '$a'
    MDOM::Token::Whitespace         ' '
    MDOM::Token::Interpolation      '$(a)'
    MDOM::Token::Whitespace         ' '
    MDOM::Token::Interpolation      '${c}'
    MDOM::Token::Whitespace         '\n'
  MDOM::Command
    MDOM::Token::Separator          '\t'
    MDOM::Token::Bare               'echo '
    MDOM::Token::Interpolation      '$@'
    MDOM::Token::Bare               ' '
    MDOM::Token::Interpolation      '$a'
    MDOM::Token::Bare               ' '
    MDOM::Token::Interpolation      '${a}'
    MDOM::Token::Bare               ' '
    MDOM::Token::Interpolation      '${abc}'
    MDOM::Token::Bare               ' '
    MDOM::Token::Interpolation      '${}'
    MDOM::Token::Whitespace         '\n'