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