97a29941f8733636b3fe61669e8f7c6aee6bc1df
[platform/upstream/make.git] / tests / scripts / features / escape
1 #                                                                    -*-perl-*-
2 $description = "Test various types of escaping in makefiles.";
3
4 $details = "\
5 Make sure that escaping of `:' works in target names.
6 Make sure escaping of whitespace works in target names.
7 Make sure that escaping of '#' works.";
8
9
10 close(MAKEFILE);
11
12
13 # TEST 1
14
15 run_make_test('
16 $(path)foo : ; @echo "touch ($@)"
17
18 foo\ bar: ; @echo "touch ($@)"
19
20 sharp: foo\#bar.ext
21 foo\#bar.ext: ; @echo "foo#bar.ext = ($@)"',
22               '',
23               'touch (foo)');
24
25 # TEST 2: This one should fail, since the ":" is unquoted.
26
27 run_make_test(undef,
28               'path=pre:',
29               "#MAKEFILE#:2: *** target pattern contains no `%'.  Stop.",
30               512);
31
32 # TEST 3: This one should work, since we escape the ":".
33
34 run_make_test(undef,
35               "'path=pre\\:'",
36               'touch (pre:foo)');
37
38 # TEST 4: This one should fail, since the escape char is escaped.
39
40 run_make_test(undef,
41               "'path=pre\\\\:'",
42               "#MAKEFILE#:2: *** target pattern contains no `%'.  Stop.",
43               512);
44
45 # TEST 5: This one should work
46
47 run_make_test(undef,
48               "'foo bar'",
49               'touch (foo bar)');
50
51 # TEST 6: Test escaped comments
52
53 run_make_test(undef,
54               'sharp',
55               'foo#bar.ext = (foo#bar.ext)');
56
57 # This tells the test driver that the perl test script executed properly.
58 1;