#                                                                    -*-perl-*-
$description = "Test various types of escaping in makefiles.";

$details = "\
Make sure that escaping of ':' works in target names.
Make sure escaping of whitespace works in target names.
Make sure that escaping of '#' works.
Make sure that backslash before non-special characters are kept.";


# TEST 1

run_make_test(q!
ifdef NOESC
path = pre:
endif
ifdef ONEESC
path = pre\:
endif
ifdef TWOESC
path = pre\\\\:
endif

$(path)foo : ; @echo "touch ($@)"

foo\ bar: ; @echo "touch ($@)"

sharp: foo\#bar.ext
foo\#bar.ext: ; @echo "foo#bar.ext = ($@)"
!,
              '',
              'touch (foo)');

# TEST 2: This one should fail, since the ":" is unquoted.

run_make_test(undef,
              'NOESC=1',
              "#MAKEFILE#:12: *** target pattern contains no '%'.  Stop.",
              512);

# TEST 3: This one should work, since we escape the ":".

run_make_test(undef,
              'ONEESC=1',
              'touch (pre:foo)');

# TEST 4: This one should fail, since the escape char is escaped.

run_make_test(undef,
              'TWOESC=1',
              "#MAKEFILE#:12: *** target pattern contains no '%'.  Stop.",
              512);

# TEST 5: This one should work

run_make_test(undef,
              ['foo bar'],
              'touch (foo bar)');

# TEST 6: Test escaped comments

run_make_test(undef,
              'sharp',
              'foo#bar.ext = (foo#bar.ext)');

# Test escaped colons in prerequisites
# Quoting of backslashes in q!! is kind of messy.
# Solaris sh does not properly handle backslashes even in '' so just
# check the output make prints, not what the shell interprets.
run_make_test(q!
foo: foo\\:bar foo\\\\\\:bar foo\\\\\\\\\\:bar
foo foo\\:bar foo\\\\\\:bar foo\\\\\\\\\\:bar: ; : '$@'
!,
              '', ": 'foo:bar'\n: 'foo\\:bar'\n: 'foo\\\\:bar'\n: 'foo'\n");

# Test backslash before non-special chars: should be kept as-is

run_make_test(q!
all: ..\foo
.DEFAULT: ; : '$@'
!,
              '', ": '..\\foo'\n");

# Test escaped comments in variable assignments
run_make_test(q!
self = $1
foo := $(call self,#foo#)#foo
bar := $(call self,\#bar\#)#bar
all:;@echo '$(foo) $(bar)'
!,
               '',"#foo# \\#bar\\#");

# Test escaped comments in variable assignments in a variable
run_make_test(q!
C = \#
self = $1
foo := $(call self,$Cfoo$C)#foo
all:;@echo '$(foo)'
!,
               '',"#foo#");

# This tells the test driver that the perl test script executed properly.
1;
