Module Name:    src
Committed By:   rillig
Date:           Mon Jul 22 18:02:51 UTC 2024

Modified Files:
        src/usr.bin/make/unit-tests: cmd-errors-jobs.exp cmd-errors-jobs.mk

Log Message:
tests/make: demonstrate wrong exit status for .END dependency


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/usr.bin/make/unit-tests/cmd-errors-jobs.exp
cvs rdiff -u -r1.10 -r1.11 src/usr.bin/make/unit-tests/cmd-errors-jobs.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/cmd-errors-jobs.exp
diff -u src/usr.bin/make/unit-tests/cmd-errors-jobs.exp:1.11 src/usr.bin/make/unit-tests/cmd-errors-jobs.exp:1.12
--- src/usr.bin/make/unit-tests/cmd-errors-jobs.exp:1.11	Sat Jul 20 14:09:27 2024
+++ src/usr.bin/make/unit-tests/cmd-errors-jobs.exp	Mon Jul 22 18:02:51 2024
@@ -1,9 +1,49 @@
-: undefined--eol
-make: in target "unclosed-expression": Unclosed variable "UNCLOSED"
-make: in target "unclosed-modifier": while evaluating variable "UNCLOSED" with value "": Unclosed expression, expecting '}'
-make: in target "unknown-modifier": while evaluating variable "UNKNOWN" with value "": Unknown modifier "Z"
-make: in target "depend-source": while evaluating variable "UNCLOSED" with value "": Unclosed expression, expecting '}'
-: end-eol
-: Making depend-target
-: .END-eol
-exit status 2
+begin undefined-direct
+: undefined-direct--eol
+end undefined-direct with status 0
+
+begin undefined-indirect
+: undefined-direct--eol
+end undefined-indirect with status 0
+
+begin parse-error-direct
+make: in target "parse-error-unclosed-expression": Unclosed variable "UNCLOSED"
+make: in target "parse-error-unclosed-modifier": while evaluating variable "UNCLOSED" with value "": Unclosed expression, expecting '}'
+make: in target "parse-error-unknown-modifier": while evaluating variable "UNKNOWN" with value "": Unknown modifier "Z"
+end parse-error-direct with status 2
+
+begin parse-error-indirect
+make: in target "parse-error-unclosed-expression": Unclosed variable "UNCLOSED"
+make: in target "parse-error-unclosed-modifier": while evaluating variable "UNCLOSED" with value "": Unclosed expression, expecting '}'
+make: in target "parse-error-unknown-modifier": while evaluating variable "UNKNOWN" with value "": Unknown modifier "Z"
+end parse-error-indirect with status 2
+
+begin begin-direct
+(exit 13) # .BEGIN
+*** Error code 13 (continuing)
+
+
+Stop.
+make: stopped making "begin-direct" in unit-tests
+end begin-direct with status 1
+
+begin begin-indirect
+(exit 13) # before-begin
+*** Error code 13 (continuing)
+end begin-indirect with status 0
+
+begin end-direct
+(exit 13) # .END
+*** Error code 13 (continuing)
+
+
+Stop.
+make: stopped making "end-direct" in unit-tests
+end end-direct with status 1
+
+begin end-indirect
+(exit 13) # before-end
+*** Error code 13 (continuing)
+end end-indirect with status 0
+
+exit status 0

Index: src/usr.bin/make/unit-tests/cmd-errors-jobs.mk
diff -u src/usr.bin/make/unit-tests/cmd-errors-jobs.mk:1.10 src/usr.bin/make/unit-tests/cmd-errors-jobs.mk:1.11
--- src/usr.bin/make/unit-tests/cmd-errors-jobs.mk:1.10	Sat Jul 20 14:09:27 2024
+++ src/usr.bin/make/unit-tests/cmd-errors-jobs.mk	Mon Jul 22 18:02:51 2024
@@ -1,51 +1,109 @@
-# $NetBSD: cmd-errors-jobs.mk,v 1.10 2024/07/20 14:09:27 rillig Exp $
+# $NetBSD: cmd-errors-jobs.mk,v 1.11 2024/07/22 18:02:51 rillig Exp $
 #
 # Demonstrate how errors in expressions affect whether the commands
 # are actually executed in jobs mode.
 
-.MAKEFLAGS: -j1
+RUN=	@ run() {					\
+		echo "begin $$*"			\
+		&& ${MAKE} -f ${MAKEFILE} -j1 "$$*"	\
+		&& echo "end $$* with status $$?"	\
+		|| echo "end $$* with status $$?"	\
+		&& echo;				\
+	} && run
+
+all:
+	${RUN} undefined-direct
+	${RUN} undefined-indirect
+	${RUN} parse-error-direct
+	${RUN} parse-error-indirect
+	${RUN} begin-direct
+	${RUN} begin-indirect
+	${RUN} end-direct
+	${RUN} end-indirect
 
-all: undefined unclosed-expression unclosed-modifier unknown-modifier
-all: depend-target
-all: end
 
 # Undefined variables in expressions are not an error.  They expand to empty
 # strings.
-# expect: : undefined--eol
-undefined:
+# expect: : undefined-direct--eol
+# expect: end undefined-direct with status 0
+# expect: : undefined-direct--eol
+# expect: end undefined-indirect with status 0
+undefined-indirect: undefined-direct
+undefined-direct:
 	: $@-${UNDEFINED}-eol
 
-unclosed-expression:
-# expect: make: in target "unclosed-expression": Unclosed variable "UNCLOSED"
-# expect-not: : unclosed-expression-
-	: $@-${UNCLOSED
-
-unclosed-modifier:
-# expect: make: in target "unclosed-modifier": while evaluating variable "UNCLOSED" with value "": Unclosed expression, expecting '}'
-# expect-not: : unclosed-modifier-
-	: $@-${UNCLOSED:
-
-unknown-modifier:
-# expect: make: in target "unknown-modifier": while evaluating variable "UNKNOWN" with value "": Unknown modifier "Z"
-# expect-not: : unknown-modifier--eol
-	: $@-${UNKNOWN:Z}-eol
-
-depend-target: depend-source
-# TODO: don't make the target, as its source failed to generate the commands.
-# expect: : Making depend-target
-# expect-reset
+
+parse-error-indirect: parse-error-direct
+parse-error-direct: parse-error-unclosed-expression
+parse-error-direct: parse-error-unclosed-modifier
+parse-error-direct: parse-error-unknown-modifier
+
+parse-error-unclosed-expression:
+	: unexpected $@-${UNCLOSED
+
+parse-error-unclosed-modifier:
+	: unexpected $@-${UNCLOSED:
+
+parse-error-unknown-modifier:
+	: unexpected $@-${UNKNOWN:Z}-eol
+
+# expect-not: : unexpected
+# expect: make: in target "parse-error-unclosed-expression": Unclosed variable "UNCLOSED"
+# expect: make: in target "parse-error-unclosed-modifier": while evaluating variable "UNCLOSED" with value "": Unclosed expression, expecting '}'
+# expect: make: in target "parse-error-unknown-modifier": while evaluating variable "UNKNOWN" with value "": Unknown modifier "Z"
+# expect: end parse-error-direct with status 2
+# expect: make: in target "parse-error-unclosed-expression": Unclosed variable "UNCLOSED"
+# expect: make: in target "parse-error-unclosed-modifier": while evaluating variable "UNCLOSED" with value "": Unclosed expression, expecting '}'
+# expect: make: in target "parse-error-unknown-modifier": while evaluating variable "UNKNOWN" with value "": Unknown modifier "Z"
+# expect: end parse-error-indirect with status 2
+
+
+.if make(begin-direct)
+begin-direct:
+.BEGIN:
+	(exit 13) # $@
+.endif
+# expect: begin begin-direct
+# expect: make: stopped making "begin-direct" in unit-tests
+# expect: end begin-direct with status 1
+
+
+.if make(begin-indirect)
+begin-indirect:
+.BEGIN: before-begin
 	: Making $@
+before-begin:
+	(exit 13) # $@
+.endif
+# expect: begin begin-indirect
+# TODO: Show the "stopped making" message.
+# expect-not: stopped making "begin-indirect"
+# expect: *** Error code 13 (continuing)
+# TODO: Exit with a non-zero status due to the failed target.
+# expect: end begin-indirect with status 0
 
-depend-source:
-# expect: make: in target "depend-source": while evaluating variable "UNCLOSED" with value "": Unclosed expression, expecting '}'
-	: $@-${UNCLOSED:
-
-# expect: : end-eol
-end:
-	: $@-eol
 
-# expect: : .END-eol
+.if make(end-direct)
+end-direct:
 .END:
-	: $@-eol
-
-# expect: exit status 2
+	(exit 13) # $@
+.endif
+# expect: begin end-direct
+# expect: *** Error code 13 (continuing)
+# expect: Stop.
+# expect: make: stopped making "end-direct" in unit-tests
+# expect: end end-direct with status 1
+
+.if make(end-indirect)
+end-indirect:
+.END: before-end
+	: Making $@
+before-end:
+	(exit 13) # $@
+.endif
+# expect: begin end-indirect
+# TODO: Show the "stopped making" message.
+# expect-not: stopped making "end-indirect"
+# expect: *** Error code 13 (continuing)
+# TODO: Exit with a non-zero status due to the failed target.
+# expect: end end-indirect with status 0

Reply via email to