]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/bmake/unit-tests/modword.mk
Update to bmake-20201101
[FreeBSD/FreeBSD.git] / contrib / bmake / unit-tests / modword.mk
1 # $NetBSD: modword.mk,v 1.4 2020/11/01 13:55:31 rillig Exp $
2 #
3 # Test behaviour of new :[] modifier
4
5 all: mod-squarebrackets mod-S-W mod-C-W mod-tW-tw
6
7 LIST=           one two three
8 LIST+=          four five six
9 LONGLIST=       1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
10
11 EMPTY=          # the space should be ignored
12 ESCAPEDSPACE=   \ # escaped space before the '#'
13 REALLYSPACE:=   ${EMPTY:C/^/ /W}
14 HASH=           \#
15 AT=             @
16 STAR=           *
17 ZERO=           0
18 ONE=            1
19 MINUSONE=       -1
20
21 mod-squarebrackets: mod-squarebrackets-0-star-at \
22         mod-squarebrackets-hash \
23         mod-squarebrackets-n \
24         mod-squarebrackets-start-end \
25         mod-squarebrackets-nested \
26         mod-squarebrackets-space
27
28 mod-squarebrackets-0-star-at:
29         @echo 'LIST:[]="${LIST:[]}" is an error'
30         @echo 'LIST:[0]="${LIST:[0]}"'
31         @echo 'LIST:[0x0]="${LIST:[0x0]}"'
32         @echo 'LIST:[000]="${LIST:[000]}"'
33         @echo 'LIST:[*]="${LIST:[*]}"'
34         @echo 'LIST:[@]="${LIST:[@]}"'
35         @echo 'LIST:[0]:C/ /,/="${LIST:[0]:C/ /,/}"'
36         @echo 'LIST:[0]:C/ /,/g="${LIST:[0]:C/ /,/g}"'
37         @echo 'LIST:[0]:C/ /,/1g="${LIST:[0]:C/ /,/1g}"'
38         @echo 'LIST:[*]:C/ /,/="${LIST:[*]:C/ /,/}"'
39         @echo 'LIST:[*]:C/ /,/g="${LIST:[*]:C/ /,/g}"'
40         @echo 'LIST:[*]:C/ /,/1g="${LIST:[*]:C/ /,/1g}"'
41         @echo 'LIST:[@]:C/ /,/="${LIST:[@]:C/ /,/}"'
42         @echo 'LIST:[@]:C/ /,/g="${LIST:[@]:C/ /,/g}"'
43         @echo 'LIST:[@]:C/ /,/1g="${LIST:[@]:C/ /,/1g}"'
44         @echo 'LIST:[@]:[0]:C/ /,/="${LIST:[@]:[0]:C/ /,/}"'
45         @echo 'LIST:[0]:[@]:C/ /,/="${LIST:[0]:[@]:C/ /,/}"'
46         @echo 'LIST:[@]:[*]:C/ /,/="${LIST:[@]:[*]:C/ /,/}"'
47         @echo 'LIST:[*]:[@]:C/ /,/="${LIST:[*]:[@]:C/ /,/}"'
48
49 mod-squarebrackets-hash:
50         @echo 'EMPTY="${EMPTY}"'
51         @echo 'EMPTY:[#]="${EMPTY:[#]}" == 1 ?'
52         @echo 'ESCAPEDSPACE="${ESCAPEDSPACE}"'
53         @echo 'ESCAPEDSPACE:[#]="${ESCAPEDSPACE:[#]}" == 1 ?'
54         @echo 'REALLYSPACE="${REALLYSPACE}"'
55         @echo 'REALLYSPACE:[#]="${REALLYSPACE:[#]}" == 1 ?'
56         @echo 'LIST:[#]="${LIST:[#]}"'
57         @echo 'LIST:[0]:[#]="${LIST:[0]:[#]}" == 1 ?'
58         @echo 'LIST:[*]:[#]="${LIST:[*]:[#]}" == 1 ?'
59         @echo 'LIST:[@]:[#]="${LIST:[@]:[#]}"'
60         @echo 'LIST:[1]:[#]="${LIST:[1]:[#]}"'
61         @echo 'LIST:[1..3]:[#]="${LIST:[1..3]:[#]}"'
62
63 mod-squarebrackets-n:
64         @echo 'EMPTY:[1]="${EMPTY:[1]}"'
65         @echo 'ESCAPEDSPACE="${ESCAPEDSPACE}"'
66         @echo 'ESCAPEDSPACE:[1]="${ESCAPEDSPACE:[1]}"'
67         @echo 'REALLYSPACE="${REALLYSPACE}"'
68         @echo 'REALLYSPACE:[1]="${REALLYSPACE:[1]}" == "" ?'
69         @echo 'REALLYSPACE:[*]:[1]="${REALLYSPACE:[*]:[1]}" == " " ?'
70         @echo 'LIST:[1]="${LIST:[1]}"'
71         @echo 'LIST:[1.]="${LIST:[1.]}" is an error'
72         @echo 'LIST:[1].="${LIST:[1].}" is an error'
73         @echo 'LIST:[2]="${LIST:[2]}"'
74         @echo 'LIST:[6]="${LIST:[6]}"'
75         @echo 'LIST:[7]="${LIST:[7]}"'
76         @echo 'LIST:[999]="${LIST:[999]}"'
77         @echo 'LIST:[-]="${LIST:[-]}" is an error'
78         @echo 'LIST:[--]="${LIST:[--]}" is an error'
79         @echo 'LIST:[-1]="${LIST:[-1]}"'
80         @echo 'LIST:[-2]="${LIST:[-2]}"'
81         @echo 'LIST:[-6]="${LIST:[-6]}"'
82         @echo 'LIST:[-7]="${LIST:[-7]}"'
83         @echo 'LIST:[-999]="${LIST:[-999]}"'
84         @echo 'LONGLIST:[17]="${LONGLIST:[17]}"'
85         @echo 'LONGLIST:[0x11]="${LONGLIST:[0x11]}"'
86         @echo 'LONGLIST:[021]="${LONGLIST:[021]}"'
87         @echo 'LIST:[0]:[1]="${LIST:[0]:[1]}"'
88         @echo 'LIST:[*]:[1]="${LIST:[*]:[1]}"'
89         @echo 'LIST:[@]:[1]="${LIST:[@]:[1]}"'
90         @echo 'LIST:[0]:[2]="${LIST:[0]:[2]}"'
91         @echo 'LIST:[*]:[2]="${LIST:[*]:[2]}"'
92         @echo 'LIST:[@]:[2]="${LIST:[@]:[2]}"'
93         @echo 'LIST:[*]:C/ /,/:[2]="${LIST:[*]:C/ /,/:[2]}"'
94         @echo 'LIST:[*]:C/ /,/:[*]:[2]="${LIST:[*]:C/ /,/:[*]:[2]}"'
95         @echo 'LIST:[*]:C/ /,/:[@]:[2]="${LIST:[*]:C/ /,/:[@]:[2]}"'
96         @echo 'LONGLIST:[012..0x12]="${LONGLIST:[012..0x12]}"'
97
98 mod-squarebrackets-start-end:
99         @echo 'LIST:[1.]="${LIST:[1.]}" is an error'
100         @echo 'LIST:[1..]="${LIST:[1..]}" is an error'
101         @echo 'LIST:[1..1]="${LIST:[1..1]}"'
102         @echo 'LIST:[1..1.]="${LIST:[1..1.]}" is an error'
103         @echo 'LIST:[1..2]="${LIST:[1..2]}"'
104         @echo 'LIST:[2..1]="${LIST:[2..1]}"'
105         @echo 'LIST:[3..-2]="${LIST:[3..-2]}"'
106         @echo 'LIST:[-4..4]="${LIST:[-4..4]}"'
107         @echo 'LIST:[0..1]="${LIST:[0..1]}" is an error'
108         @echo 'LIST:[-1..0]="${LIST:[-1..0]}" is an error'
109         @echo 'LIST:[-1..1]="${LIST:[-1..1]}"'
110         @echo 'LIST:[0..0]="${LIST:[0..0]}"'
111         @echo 'LIST:[3..99]="${LIST:[3..99]}"'
112         @echo 'LIST:[-3..-99]="${LIST:[-3..-99]}"'
113         @echo 'LIST:[-99..-3]="${LIST:[-99..-3]}"'
114
115 mod-squarebrackets-nested:
116         @echo 'HASH="${HASH}" == "#" ?'
117         @echo 'LIST:[$${HASH}]="${LIST:[${HASH}]}"'
118         @echo 'LIST:[$${ZERO}]="${LIST:[${ZERO}]}"'
119         @echo 'LIST:[$${ZERO}x$${ONE}]="${LIST:[${ZERO}x${ONE}]}"'
120         @echo 'LIST:[$${ONE}]="${LIST:[${ONE}]}"'
121         @echo 'LIST:[$${MINUSONE}]="${LIST:[${MINUSONE}]}"'
122         @echo 'LIST:[$${STAR}]="${LIST:[${STAR}]}"'
123         @echo 'LIST:[$${AT}]="${LIST:[${AT}]}"'
124         @echo 'LIST:[$${EMPTY}]="${LIST:[${EMPTY}]}" is an error'
125         @echo 'LIST:[$${LONGLIST:[21]:S/2//}]="${LIST:[${LONGLIST:[21]:S/2//}]}"'
126         @echo 'LIST:[$${LIST:[#]}]="${LIST:[${LIST:[#]}]}"'
127         @echo 'LIST:[$${LIST:[$${HASH}]}]="${LIST:[${LIST:[${HASH}]}]}"'
128
129 mod-squarebrackets-space:
130         # As of 2020-11-01, it is possible to have spaces before the numbers
131         # but not after them.  This is an unintended side-effect of using
132         # strtol for parsing the numbers.
133         @echo 'LIST:[  -1..   +3]="${LIST:[  -1..   +3]}"'
134
135 mod-C-W:
136         @echo 'LIST:C/ /,/="${LIST:C/ /,/}"'
137         @echo 'LIST:C/ /,/W="${LIST:C/ /,/W}"'
138         @echo 'LIST:C/ /,/gW="${LIST:C/ /,/gW}"'
139         @echo 'EMPTY:C/^/,/="${EMPTY:C/^/,/}"'
140         @echo 'EMPTY:C/^/,/W="${EMPTY:C/^/,/W}"'
141
142 mod-S-W:
143         @echo 'LIST:S/ /,/="${LIST:S/ /,/}"'
144         @echo 'LIST:S/ /,/W="${LIST:S/ /,/W}"'
145         @echo 'LIST:S/ /,/gW="${LIST:S/ /,/gW}"'
146         @echo 'EMPTY:S/^/,/="${EMPTY:S/^/,/}"'
147         @echo 'EMPTY:S/^/,/W="${EMPTY:S/^/,/W}"'
148
149 mod-tW-tw:
150         @echo 'LIST:tW="${LIST:tW}"'
151         @echo 'LIST:tw="${LIST:tw}"'
152         @echo 'LIST:tW:C/ /,/="${LIST:tW:C/ /,/}"'
153         @echo 'LIST:tW:C/ /,/g="${LIST:tW:C/ /,/g}"'
154         @echo 'LIST:tW:C/ /,/1g="${LIST:tW:C/ /,/1g}"'
155         @echo 'LIST:tw:C/ /,/="${LIST:tw:C/ /,/}"'
156         @echo 'LIST:tw:C/ /,/g="${LIST:tw:C/ /,/g}"'
157         @echo 'LIST:tw:C/ /,/1g="${LIST:tw:C/ /,/1g}"'
158         @echo 'LIST:tw:tW:C/ /,/="${LIST:tw:tW:C/ /,/}"'
159         @echo 'LIST:tW:tw:C/ /,/="${LIST:tW:tw:C/ /,/}"'