1 1.16 rillig # $NetBSD: cmd-errors-jobs.mk,v 1.16 2025/06/28 22:39:28 rillig Exp $ 2 1.1 rillig # 3 1.4 rillig # Demonstrate how errors in expressions affect whether the commands 4 1.1 rillig # are actually executed in jobs mode. 5 1.1 rillig 6 1.11 rillig RUN= @ run() { \ 7 1.11 rillig echo "begin $$*" \ 8 1.11 rillig && ${MAKE} -f ${MAKEFILE} -j1 "$$*" \ 9 1.11 rillig && echo "end $$* with status $$?" \ 10 1.11 rillig || echo "end $$* with status $$?" \ 11 1.11 rillig && echo; \ 12 1.11 rillig } && run 13 1.11 rillig 14 1.11 rillig all: 15 1.11 rillig ${RUN} undefined-direct 16 1.11 rillig ${RUN} undefined-indirect 17 1.11 rillig ${RUN} parse-error-direct 18 1.11 rillig ${RUN} parse-error-indirect 19 1.11 rillig ${RUN} begin-direct 20 1.11 rillig ${RUN} begin-indirect 21 1.11 rillig ${RUN} end-direct 22 1.11 rillig ${RUN} end-indirect 23 1.1 rillig 24 1.1 rillig 25 1.4 rillig # Undefined variables in expressions are not an error. They expand to empty 26 1.4 rillig # strings. 27 1.11 rillig # expect: : undefined-direct--eol 28 1.11 rillig # expect: end undefined-direct with status 0 29 1.11 rillig # expect: : undefined-direct--eol 30 1.11 rillig # expect: end undefined-indirect with status 0 31 1.11 rillig undefined-indirect: undefined-direct 32 1.11 rillig undefined-direct: 33 1.2 rillig : $@-${UNDEFINED}-eol 34 1.1 rillig 35 1.11 rillig 36 1.11 rillig parse-error-indirect: parse-error-direct 37 1.11 rillig parse-error-direct: parse-error-unclosed-expression 38 1.11 rillig parse-error-direct: parse-error-unclosed-modifier 39 1.11 rillig parse-error-direct: parse-error-unknown-modifier 40 1.11 rillig 41 1.11 rillig parse-error-unclosed-expression: 42 1.11 rillig : unexpected $@-${UNCLOSED 43 1.11 rillig 44 1.11 rillig parse-error-unclosed-modifier: 45 1.11 rillig : unexpected $@-${UNCLOSED: 46 1.11 rillig 47 1.11 rillig parse-error-unknown-modifier: 48 1.11 rillig : unexpected $@-${UNKNOWN:Z}-eol 49 1.11 rillig 50 1.14 rillig # expect-not-matches: ^: unexpected 51 1.13 rillig # expect: make: Unclosed variable "UNCLOSED" 52 1.14 rillig # expect: in command ": unexpected $@-${UNCLOSED" 53 1.16 rillig # expect: make: Unclosed expression, expecting "}" 54 1.15 rillig # expect: make: Unknown modifier ":Z" 55 1.11 rillig # expect: end parse-error-direct with status 2 56 1.13 rillig # expect: make: Unclosed variable "UNCLOSED" 57 1.16 rillig # expect: make: Unclosed expression, expecting "}" 58 1.15 rillig # expect: make: Unknown modifier ":Z" 59 1.11 rillig # expect: end parse-error-indirect with status 2 60 1.11 rillig 61 1.11 rillig 62 1.11 rillig .if make(begin-direct) 63 1.11 rillig begin-direct: 64 1.11 rillig .BEGIN: 65 1.11 rillig (exit 13) # $@ 66 1.11 rillig .endif 67 1.11 rillig # expect: begin begin-direct 68 1.11 rillig # expect: make: stopped making "begin-direct" in unit-tests 69 1.11 rillig # expect: end begin-direct with status 1 70 1.11 rillig 71 1.11 rillig 72 1.11 rillig .if make(begin-indirect) 73 1.11 rillig begin-indirect: 74 1.11 rillig .BEGIN: before-begin 75 1.9 rillig : Making $@ 76 1.11 rillig before-begin: 77 1.11 rillig (exit 13) # $@ 78 1.11 rillig .endif 79 1.11 rillig # expect: begin begin-indirect 80 1.11 rillig # expect: *** Error code 13 (continuing) 81 1.12 rillig # expect: make: stopped making "begin-indirect" in unit-tests 82 1.12 rillig # expect: end begin-indirect with status 1 83 1.9 rillig 84 1.1 rillig 85 1.11 rillig .if make(end-direct) 86 1.11 rillig end-direct: 87 1.9 rillig .END: 88 1.11 rillig (exit 13) # $@ 89 1.11 rillig .endif 90 1.11 rillig # expect: begin end-direct 91 1.11 rillig # expect: *** Error code 13 (continuing) 92 1.11 rillig # expect: Stop. 93 1.11 rillig # expect: make: stopped making "end-direct" in unit-tests 94 1.11 rillig # expect: end end-direct with status 1 95 1.11 rillig 96 1.11 rillig .if make(end-indirect) 97 1.11 rillig end-indirect: 98 1.11 rillig .END: before-end 99 1.11 rillig : Making $@ 100 1.11 rillig before-end: 101 1.11 rillig (exit 13) # $@ 102 1.11 rillig .endif 103 1.11 rillig # expect: begin end-indirect 104 1.11 rillig # expect: *** Error code 13 (continuing) 105 1.12 rillig # expect: make: stopped making "end-indirect" in unit-tests 106 1.12 rillig # expect: end end-indirect with status 1 107