xref: /freebsd/contrib/bmake/unit-tests/cond-cmp-string.mk (revision 96474d2a3fa895fb9636183403fc8ca7ccf60216)
1# $NetBSD: cond-cmp-string.mk,v 1.3 2020/08/20 18:43:19 rillig Exp $
2#
3# Tests for string comparisons in .if conditions.
4
5# This is a simple comparison of string literals.
6# Nothing surprising here.
7.if "str" != "str"
8.error
9.endif
10
11# The right-hand side of the comparison may be written without quotes.
12.if "str" != str
13.error
14.endif
15
16# The left-hand side of the comparison must be enclosed in quotes.
17# This one is not enclosed in quotes and thus generates an error message.
18.if str != str
19.error
20.endif
21
22# The left-hand side of the comparison requires a defined variable.
23# The variable named "" is not defined, but applying the :U modifier to it
24# makes it "kind of defined" (see VAR_KEEP).  Therefore it is ok here.
25.if ${:Ustr} != "str"
26.error
27.endif
28
29# Any character in a string literal may be escaped using a backslash.
30# This means that "\n" does not mean a newline but a simple "n".
31.if "string" != "\s\t\r\i\n\g"
32.error
33.endif
34
35# It is not possible to concatenate two string literals to form a single
36# string.
37.if "string" != "str""ing"
38.error
39.endif
40