Module Name: src Committed By: rillig Date: Sat Sep 12 11:55:28 UTC 2020
Modified Files: src/usr.bin/make/unit-tests: varname-dot-parsedir.exp varname-dot-parsedir.mk varname-dot-parsefile.exp varname-dot-parsefile.mk Log Message: make(1): add test for .PARSEFILE To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/usr.bin/make/unit-tests/varname-dot-parsedir.exp \ src/usr.bin/make/unit-tests/varname-dot-parsefile.mk cvs rdiff -u -r1.3 -r1.4 src/usr.bin/make/unit-tests/varname-dot-parsedir.mk cvs rdiff -u -r1.1 -r1.2 \ src/usr.bin/make/unit-tests/varname-dot-parsefile.exp 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-parsedir.exp diff -u src/usr.bin/make/unit-tests/varname-dot-parsedir.exp:1.2 src/usr.bin/make/unit-tests/varname-dot-parsedir.exp:1.3 --- src/usr.bin/make/unit-tests/varname-dot-parsedir.exp:1.2 Sat Sep 12 11:45:47 2020 +++ src/usr.bin/make/unit-tests/varname-dot-parsedir.exp Sat Sep 12 11:55:28 2020 @@ -1,4 +1,5 @@ -make: "varname-dot-parsedir.mk" line 19: At this point, .PARSEDIR is undefined. -make: "/fake-absolute-path/varname-dot-parsedir.mk" line 24: The location can be faked. -make: "varname-dot-parsedir.mk" line 28: The location is no longer fake. +make: "varname-dot-parsedir.mk" line 28: At this point, .PARSEDIR is undefined. +make: "/fake-absolute-path/varname-dot-parsedir.mk" line 33: The location can be faked. +make: "varname-dot-parsedir.mk" line 37: The location is no longer fake. +At run time, .PARSEDIR is undefined. exit status 0 Index: src/usr.bin/make/unit-tests/varname-dot-parsefile.mk diff -u src/usr.bin/make/unit-tests/varname-dot-parsefile.mk:1.2 src/usr.bin/make/unit-tests/varname-dot-parsefile.mk:1.3 --- src/usr.bin/make/unit-tests/varname-dot-parsefile.mk:1.2 Sun Aug 16 14:25:16 2020 +++ src/usr.bin/make/unit-tests/varname-dot-parsefile.mk Sat Sep 12 11:55:28 2020 @@ -1,8 +1,35 @@ -# $NetBSD: varname-dot-parsefile.mk,v 1.2 2020/08/16 14:25:16 rillig Exp $ +# $NetBSD: varname-dot-parsefile.mk,v 1.3 2020/09/12 11:55:28 rillig Exp $ # -# Tests for the special .PARSEFILE variable. +# Tests for the special .PARSEFILE variable, which contains the basename part +# of the file that is currently parsed. -# TODO: Implementation +.if ${.PARSEFILE} != "varname-dot-parsefile.mk" +. error +.endif + +# During parsing, it is possible to undefine .PARSEFILE. +# Not that anyone would ever want to do this, but there's code in parse.c, +# function PrintLocation, that explicitly handles this situation. +.if !defined(.PARSEFILE) +. error +.endif +.undef .PARSEFILE +.if defined(.PARSEFILE) +. error +.endif + +# The variable .PARSEFILE is indirectly used by the .info directive, +# via PrintLocation. +.info At this point, .PARSEFILE is undefined. + +# There is absolutely no point in faking the location of the file that is +# being parsed. Technically, it's possible though. +.PARSEFILE = fake-parsefile +.info The location can be faked. + +# After including another file, .PARSEFILE is reset. +.include "/dev/null" +.info The location is no longer fake. all: - @:; + @echo At run time, .PARSEFILE is ${.PARSEFILE:Uundefined}. Index: src/usr.bin/make/unit-tests/varname-dot-parsedir.mk diff -u src/usr.bin/make/unit-tests/varname-dot-parsedir.mk:1.3 src/usr.bin/make/unit-tests/varname-dot-parsedir.mk:1.4 --- src/usr.bin/make/unit-tests/varname-dot-parsedir.mk:1.3 Sat Sep 12 11:45:47 2020 +++ src/usr.bin/make/unit-tests/varname-dot-parsedir.mk Sat Sep 12 11:55:28 2020 @@ -1,4 +1,4 @@ -# $NetBSD: varname-dot-parsedir.mk,v 1.3 2020/09/12 11:45:47 rillig Exp $ +# $NetBSD: varname-dot-parsedir.mk,v 1.4 2020/09/12 11:55:28 rillig Exp $ # # Tests for the special .PARSEDIR variable, which contains the directory part # of the file that is currently parsed. @@ -12,8 +12,17 @@ # During parsing, it is possible to undefine .PARSEDIR. # Not that anyone would ever want to do this, but there's code in parse.c, # function PrintLocation, that explicitly handles this situation. +.if !defined(.PARSEDIR) +. error +.endif .undef .PARSEDIR +.if defined(.PARSEDIR) +. error +.endif +# The variable .PARSEDIR is indirectly used by the .info directive, +# via PrintLocation. +# # The .rawout file contains the full path to the current directory. # In the .out file, it is filtered out. .info At this point, .PARSEDIR is undefined. @@ -28,4 +37,4 @@ .info The location is no longer fake. all: - @:; + @echo At run time, .PARSEDIR is ${.PARSEDIR:Uundefined}. Index: src/usr.bin/make/unit-tests/varname-dot-parsefile.exp diff -u src/usr.bin/make/unit-tests/varname-dot-parsefile.exp:1.1 src/usr.bin/make/unit-tests/varname-dot-parsefile.exp:1.2 --- src/usr.bin/make/unit-tests/varname-dot-parsefile.exp:1.1 Sun Aug 16 12:07:52 2020 +++ src/usr.bin/make/unit-tests/varname-dot-parsefile.exp Sat Sep 12 11:55:28 2020 @@ -1 +1,5 @@ +make: "varname-dot-parsefile.mk" line 23: At this point, .PARSEFILE is undefined. +make: "fake-parsefile" line 28: The location can be faked. +make: "varname-dot-parsefile.mk" line 32: The location is no longer fake. +At run time, .PARSEFILE is undefined. exit status 0