~ubuntu-branches/debian/sid/make-doc-non-dfsg/sid

« back to all changes in this revision

Viewing changes to tests/scripts/features/escape

  • Committer: Package Import Robot
  • Author(s): Manoj Srivastava
  • Date: 2014-05-04 18:48:47 UTC
  • mfrom: (4.1.1 experimental)
  • Revision ID: package-import@ubuntu.com-20140504184847-50zxi1b08m22ehle
Tags: 4.0-2
Move to usntable, since the make binary package has been uploaded
there. No changes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
Make sure that backslash before non-special characters are kept.";
 
9
 
 
10
 
 
11
# TEST 1
 
12
 
 
13
run_make_test('
 
14
$(path)foo : ; @echo "touch ($@)"
 
15
 
 
16
foo\ bar: ; @echo "touch ($@)"
 
17
 
 
18
sharp: foo\#bar.ext
 
19
foo\#bar.ext: ; @echo "foo#bar.ext = ($@)"',
 
20
              '',
 
21
              'touch (foo)');
 
22
 
 
23
# TEST 2: This one should fail, since the ":" is unquoted.
 
24
 
 
25
run_make_test(undef,
 
26
              'path=pre:',
 
27
              "#MAKEFILE#:2: *** target pattern contains no '%'.  Stop.",
 
28
              512);
 
29
 
 
30
# TEST 3: This one should work, since we escape the ":".
 
31
 
 
32
run_make_test(undef,
 
33
              "'path=pre\\:'",
 
34
              'touch (pre:foo)');
 
35
 
 
36
# TEST 4: This one should fail, since the escape char is escaped.
 
37
 
 
38
run_make_test(undef,
 
39
              "'path=pre\\\\:'",
 
40
              "#MAKEFILE#:2: *** target pattern contains no '%'.  Stop.",
 
41
              512);
 
42
 
 
43
# TEST 5: This one should work
 
44
 
 
45
run_make_test(undef,
 
46
              "'foo bar'",
 
47
              'touch (foo bar)');
 
48
 
 
49
# TEST 6: Test escaped comments
 
50
 
 
51
run_make_test(undef,
 
52
              'sharp',
 
53
              'foo#bar.ext = (foo#bar.ext)');
 
54
 
 
55
# Test escaped colons in prerequisites
 
56
# Quoting of backslashes in q!! is kind of messy.
 
57
# Solaris sh does not properly handle backslashes even in '' so just
 
58
# check the output make prints, not what the shell interprets.
 
59
run_make_test(q!
 
60
foo: foo\\:bar foo\\\\\\:bar foo\\\\\\\\\\:bar
 
61
foo foo\\:bar foo\\\\\\:bar foo\\\\\\\\\\:bar: ; : '$@'
 
62
!,
 
63
              '', ": 'foo:bar'\n: 'foo\\:bar'\n: 'foo\\\\:bar'\n: 'foo'\n");
 
64
 
 
65
# Test backslash before non-special chars: should be kept as-is
 
66
 
 
67
run_make_test(q!
 
68
all: ..\foo
 
69
.DEFAULT: ; : '$@'
 
70
!,
 
71
              '', ": '..\\foo'\n");
 
72
 
 
73
# This tells the test driver that the perl test script executed properly.
 
74
1;