1 1.13 rillig # $NetBSD: cmd-errors-jobs.mk,v 1.13 2024/08/29 20:20:35 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.11 rillig # expect-not: : unexpected 51 1.13 rillig # expect: make: Unclosed variable "UNCLOSED" 52 1.13 rillig # expect: make: Unclosed expression, expecting '}' 53 1.13 rillig # expect: make: Unknown modifier "Z" 54 1.11 rillig # expect: end parse-error-direct with status 2 55 1.13 rillig # expect: make: Unclosed variable "UNCLOSED" 56 1.13 rillig # expect: make: Unclosed expression, expecting '}' 57 1.13 rillig # expect: make: Unknown modifier "Z" 58 1.11 rillig # expect: end parse-error-indirect with status 2 59 1.11 rillig 60 1.11 rillig 61 1.11 rillig .if make(begin-direct) 62 1.11 rillig begin-direct: 63 1.11 rillig .BEGIN: 64 1.11 rillig (exit 13) # $@ 65 1.11 rillig .endif 66 1.11 rillig # expect: begin begin-direct 67 1.11 rillig # expect: make: stopped making "begin-direct" in unit-tests 68 1.11 rillig # expect: end begin-direct with status 1 69 1.11 rillig 70 1.11 rillig 71 1.11 rillig .if make(begin-indirect) 72 1.11 rillig begin-indirect: 73 1.11 rillig .BEGIN: before-begin 74 1.9 rillig : Making $@ 75 1.11 rillig before-begin: 76 1.11 rillig (exit 13) # $@ 77 1.11 rillig .endif 78 1.11 rillig # expect: begin begin-indirect 79 1.11 rillig # expect: *** Error code 13 (continuing) 80 1.12 rillig # expect: make: stopped making "begin-indirect" in unit-tests 81 1.12 rillig # expect: end begin-indirect with status 1 82 1.9 rillig 83 1.1 rillig 84 1.11 rillig .if make(end-direct) 85 1.11 rillig end-direct: 86 1.9 rillig .END: 87 1.11 rillig (exit 13) # $@ 88 1.11 rillig .endif 89 1.11 rillig # expect: begin end-direct 90 1.11 rillig # expect: *** Error code 13 (continuing) 91 1.11 rillig # expect: Stop. 92 1.11 rillig # expect: make: stopped making "end-direct" in unit-tests 93 1.11 rillig # expect: end end-direct with status 1 94 1.11 rillig 95 1.11 rillig .if make(end-indirect) 96 1.11 rillig end-indirect: 97 1.11 rillig .END: before-end 98 1.11 rillig : Making $@ 99 1.11 rillig before-end: 100 1.11 rillig (exit 13) # $@ 101 1.11 rillig .endif 102 1.11 rillig # expect: begin end-indirect 103 1.11 rillig # expect: *** Error code 13 (continuing) 104 1.12 rillig # expect: make: stopped making "end-indirect" in unit-tests 105 1.12 rillig # expect: end end-indirect with status 1 106