xref: /freebsd/contrib/bmake/unit-tests/varmod-head.mk (revision d5b0e70f7e04d971691517ce1304d86a1e367e2e)
1# $NetBSD: varmod-head.mk,v 1.5 2022/07/10 21:11:49 rillig Exp $
2#
3# Tests for the :H variable modifier, which returns the dirname of
4# each of the words in the variable value.
5
6.if ${:U a/b/c :H} != "a/b"
7.  error
8.endif
9
10.if ${:U def :H} != "."
11.  error
12.endif
13
14.if ${:U a.b.c :H} != "."
15.  error
16.endif
17
18.if ${:U a.b/c :H} != "a.b"
19.  error
20.endif
21
22.if ${:U a :H} != "."
23.  error
24.endif
25
26.if ${:U a.a :H} != "."
27.  error
28.endif
29
30.if ${:U .gitignore :H} != "."
31.  error
32.endif
33
34.if ${:U trailing/ :H} != "trailing"
35.  error
36.endif
37
38.if ${:U /abs/dir/file :H} != "/abs/dir"
39.  error
40.endif
41
42.if ${:U rel/dir/file :H} != "rel/dir"
43.  error
44.endif
45
46# The head of "/" was an empty string before 2020.07.20.14.50.41, leading to
47# the output "before  after", with two spaces.  Since 2020.07.20.14.50.41, the
48# output is "before after", discarding the empty word.
49.if ${:U before/ / after/ :H} == "before after"
50# OK
51.elif ${:U before/ / after/ :H} == "before  after"
52# No '.info' to keep the file compatible with old make versions.
53_!=	echo "The modifier ':H' generates an empty word." 1>&2; echo
54.else
55.  error
56.endif
57
58# An empty list is split into a single empty word.
59# The dirname of this empty word is ".".
60.if ${:U :H} != "."
61.  error
62.endif
63
64all: .PHONY
65