aboutsummaryrefslogtreecommitdiff
path: root/contrib/bmake/unit-tests/varmod-head.mk
blob: f1a135cb328d2234977e89ad4757e5e3f6156402 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# $NetBSD: varmod-head.mk,v 1.5 2022/07/10 21:11:49 rillig Exp $
#
# Tests for the :H variable modifier, which returns the dirname of
# each of the words in the variable value.

.if ${:U a/b/c :H} != "a/b"
.  error
.endif

.if ${:U def :H} != "."
.  error
.endif

.if ${:U a.b.c :H} != "."
.  error
.endif

.if ${:U a.b/c :H} != "a.b"
.  error
.endif

.if ${:U a :H} != "."
.  error
.endif

.if ${:U a.a :H} != "."
.  error
.endif

.if ${:U .gitignore :H} != "."
.  error
.endif

.if ${:U trailing/ :H} != "trailing"
.  error
.endif

.if ${:U /abs/dir/file :H} != "/abs/dir"
.  error
.endif

.if ${:U rel/dir/file :H} != "rel/dir"
.  error
.endif

# The head of "/" was an empty string before 2020.07.20.14.50.41, leading to
# the output "before  after", with two spaces.  Since 2020.07.20.14.50.41, the
# output is "before after", discarding the empty word.
.if ${:U before/ / after/ :H} == "before after"
# OK
.elif ${:U before/ / after/ :H} == "before  after"
# No '.info' to keep the file compatible with old make versions.
_!=	echo "The modifier ':H' generates an empty word." 1>&2; echo
.else
.  error
.endif

# An empty list is split into a single empty word.
# The dirname of this empty word is ".".
.if ${:U :H} != "."
.  error
.endif

all: .PHONY