summaryrefslogtreecommitdiff
path: root/unit-tests/varname-dot-path.mk
blob: 85a6f264eb5a2be7fb6145d0da7c6eb29178cfb4 (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
# $NetBSD: varname-dot-path.mk,v 1.3 2020/10/02 18:46:54 rillig Exp $
#
# Tests for the special .PATH variable, which TODO: describe the purpose.

_!=	mkdir -p varname-dot-path.d

# By default, .PATH consists of "." and .CURDIR.
# XXX: Why both? Shouldn't they have the same effect?
.if ${.PATH} != ". ${.CURDIR}"
.  error ${.PATH}
.endif

# The special target .PATH adds a directory to the path.
.PATH: /
.if ${.PATH} != ". ${.CURDIR} /"
.  error ${.PATH}
.endif

# Only existing directories are added to the path, the others are ignored.
.PATH: /nonexistent
.if ${.PATH} != ". ${.CURDIR} /"
.  error ${.PATH}
.endif

# Only directories are added to the path, not regular files.
.PATH: ${.PARSEDIR}/${.PARSEFILE}
.if ${.PATH} != ". ${.CURDIR} /"
.  error ${.PATH}
.endif

# Relative directories can be added as well.
# Each directory is only added once to the path.
.PATH: varname-dot-path.d /
.if ${.PATH} != ". ${.CURDIR} / varname-dot-path.d"
.  error ${.PATH}
.endif

# The pathnames are not normalized before being added to the path.
.PATH: ./.
.if ${.PATH} != ". ${.CURDIR} / varname-dot-path.d ./."
.  error ${.PATH}
.endif

# The two default entries can be placed at the back of the path,
# by adding the special entry ".DOTLAST" somewhere in the path.
# The entry .DOTLAST, if any, is listed in the path, always at the
# very beginning, to make this magic less surprising.
.PATH: .DOTLAST
.if ${.PATH} != ".DOTLAST / varname-dot-path.d ./. . ${.CURDIR}"
.  error ${.PATH}
.endif

_!=	rmdir varname-dot-path.d

all:
	@:;