Module Name: src
Committed By: rillig
Date: Fri Oct 2 18:46:54 UTC 2020
Modified Files:
src/usr.bin/make/unit-tests: varname-dot-path.mk
Log Message:
make(1): add test for the special .PATH target and variable
To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/usr.bin/make/unit-tests/varname-dot-path.mk
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/usr.bin/make/unit-tests/varname-dot-path.mk
diff -u src/usr.bin/make/unit-tests/varname-dot-path.mk:1.2 src/usr.bin/make/unit-tests/varname-dot-path.mk:1.3
--- src/usr.bin/make/unit-tests/varname-dot-path.mk:1.2 Sun Aug 16 14:25:16 2020
+++ src/usr.bin/make/unit-tests/varname-dot-path.mk Fri Oct 2 18:46:54 2020
@@ -1,8 +1,56 @@
-# $NetBSD: varname-dot-path.mk,v 1.2 2020/08/16 14:25:16 rillig Exp $
+# $NetBSD: varname-dot-path.mk,v 1.3 2020/10/02 18:46:54 rillig Exp $
#
-# Tests for the special .PATH variable.
+# Tests for the special .PATH variable, which TODO: describe the purpose.
-# TODO: Implementation
+_!= 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:
@:;