Imported Upstream version 4.0
[platform/upstream/make.git] / tests / scripts / features / escape
index 97a2994..bf069df 100644 (file)
@@ -2,12 +2,10 @@
 $description = "Test various types of escaping in makefiles.";
 
 $details = "\
-Make sure that escaping of `:' works in target names.
+Make sure that escaping of ':' works in target names.
 Make sure escaping of whitespace works in target names.
-Make sure that escaping of '#' works.";
-
-
-close(MAKEFILE);
+Make sure that escaping of '#' works.
+Make sure that backslash before non-special characters are kept.";
 
 
 # TEST 1
@@ -26,7 +24,7 @@ foo\#bar.ext: ; @echo "foo#bar.ext = ($@)"',
 
 run_make_test(undef,
              'path=pre:',
-             "#MAKEFILE#:2: *** target pattern contains no `%'.  Stop.",
+             "#MAKEFILE#:2: *** target pattern contains no '%'.  Stop.",
              512);
 
 # TEST 3: This one should work, since we escape the ":".
@@ -39,7 +37,7 @@ run_make_test(undef,
 
 run_make_test(undef,
              "'path=pre\\\\:'",
-             "#MAKEFILE#:2: *** target pattern contains no `%'.  Stop.",
+             "#MAKEFILE#:2: *** target pattern contains no '%'.  Stop.",
              512);
 
 # TEST 5: This one should work
@@ -54,5 +52,23 @@ 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");
+
 # This tells the test driver that the perl test script executed properly.
 1;