Module Name: src Committed By: rillig Date: Sun Dec 13 19:08:20 UTC 2020
Modified Files: src/usr.bin/make/unit-tests: compat-error.exp compat-error.mk varname-make_print_var_on_error-jobs.exp varname-make_print_var_on_error-jobs.mk varname-make_print_var_on_error.exp varname-make_print_var_on_error.mk Log Message: make(1): add tests for variable expansion in .ERROR handling To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/usr.bin/make/unit-tests/compat-error.exp \ src/usr.bin/make/unit-tests/compat-error.mk \ src/usr.bin/make/unit-tests/varname-make_print_var_on_error-jobs.exp \ src/usr.bin/make/unit-tests/varname-make_print_var_on_error-jobs.mk cvs rdiff -u -r1.2 -r1.3 \ src/usr.bin/make/unit-tests/varname-make_print_var_on_error.exp cvs rdiff -u -r1.4 -r1.5 \ src/usr.bin/make/unit-tests/varname-make_print_var_on_error.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/compat-error.exp diff -u src/usr.bin/make/unit-tests/compat-error.exp:1.1 src/usr.bin/make/unit-tests/compat-error.exp:1.2 --- src/usr.bin/make/unit-tests/compat-error.exp:1.1 Sun Dec 13 17:44:31 2020 +++ src/usr.bin/make/unit-tests/compat-error.exp Sun Dec 13 19:08:20 2020 @@ -1,15 +1,15 @@ : Making success1 out of nothing. : Making fail1 out of nothing. -false +false 'fail1' '${.TARGET}' '$${.TARGET}' *** Error code 1 (continuing) : Making success2 out of nothing. : Making fail2 out of nothing. -false +false 'fail2' '${.TARGET}' '$${.TARGET}' *** Error code 1 (continuing) : Making success3 out of nothing. Stop. make: stopped in unit-tests -target: success3 -command: +.ERROR target: <success3> +.ERROR command: <> exit status 1 Index: src/usr.bin/make/unit-tests/compat-error.mk diff -u src/usr.bin/make/unit-tests/compat-error.mk:1.1 src/usr.bin/make/unit-tests/compat-error.mk:1.2 --- src/usr.bin/make/unit-tests/compat-error.mk:1.1 Sun Dec 13 17:44:31 2020 +++ src/usr.bin/make/unit-tests/compat-error.mk Sun Dec 13 19:08:20 2020 @@ -1,4 +1,4 @@ -# $NetBSD: compat-error.mk,v 1.1 2020/12/13 17:44:31 rillig Exp $ +# $NetBSD: compat-error.mk,v 1.2 2020/12/13 19:08:20 rillig Exp $ # # Test detailed error handling in compat mode. # @@ -26,8 +26,8 @@ success1 success2 success3: fail1 fail2: : Making ${.TARGET} out of nothing. - false + false '${.TARGET}' '$${.TARGET}' '$$$${.TARGET}' .ERROR: - @echo target: ${.ERROR_TARGET} - @echo command: ${.ERROR_CMD} + @echo ${.TARGET} target: '<'${.ERROR_TARGET:Q}'>' + @echo ${.TARGET} command: '<'${.ERROR_CMD:Q}'>' Index: src/usr.bin/make/unit-tests/varname-make_print_var_on_error-jobs.exp diff -u src/usr.bin/make/unit-tests/varname-make_print_var_on_error-jobs.exp:1.1 src/usr.bin/make/unit-tests/varname-make_print_var_on_error-jobs.exp:1.2 --- src/usr.bin/make/unit-tests/varname-make_print_var_on_error-jobs.exp:1.1 Fri Oct 23 06:18:23 2020 +++ src/usr.bin/make/unit-tests/varname-make_print_var_on_error-jobs.exp Sun Dec 13 19:08:20 2020 @@ -1,7 +1,8 @@ -fail +echo fail all; false 'all' '${.TARGET}' '$${.TARGET}' +fail all *** [all] Error code 1 make: stopped in unit-tests .ERROR_TARGET='all' -.ERROR_CMD='@: command before @echo fail; false @: command after, with variable expressions expanded' +.ERROR_CMD='@: before '${.TARGET}' '${.TARGET}' '$${.TARGET}' echo fail ${.TARGET}; false '${.TARGET}' '${.TARGET}' '$${.TARGET}' @: after '${.TARGET}' '${.TARGET}' '$${.TARGET}'' exit status 1 Index: src/usr.bin/make/unit-tests/varname-make_print_var_on_error-jobs.mk diff -u src/usr.bin/make/unit-tests/varname-make_print_var_on_error-jobs.mk:1.1 src/usr.bin/make/unit-tests/varname-make_print_var_on_error-jobs.mk:1.2 --- src/usr.bin/make/unit-tests/varname-make_print_var_on_error-jobs.mk:1.1 Fri Oct 23 06:18:23 2020 +++ src/usr.bin/make/unit-tests/varname-make_print_var_on_error-jobs.mk Sun Dec 13 19:08:20 2020 @@ -1,4 +1,4 @@ -# $NetBSD: varname-make_print_var_on_error-jobs.mk,v 1.1 2020/10/23 06:18:23 rillig Exp $ +# $NetBSD: varname-make_print_var_on_error-jobs.mk,v 1.2 2020/12/13 19:08:20 rillig Exp $ # # Tests for the special MAKE_PRINT_VAR_ON_ERROR variable, which prints the # values of selected variables on error. @@ -9,6 +9,13 @@ # The commands in .ERROR_CMD are space-separated. Since each command usually # contains spaces as well, this value is only intended as a first hint to what # happened. For more details, use the debug options -de, -dj, -dl, -dn, -dx. +# +# See also: +# compat-error.mk + +# XXX: As of 2020-12-13, PrintOnError calls Var_Subst with VAR_GLOBAL, which +# does not expand the node-local variables like .TARGET. This results in the +# double '${.TARGET}' in the output. # As of 2020-10-23, .ERROR_CMD only works in parallel mode. .MAKEFLAGS: -j1 @@ -16,6 +23,6 @@ MAKE_PRINT_VAR_ON_ERROR= .ERROR_TARGET .ERROR_CMD all: - @: command before - @echo fail; false - @: command after${:U, with variable expressions expanded} + @: before '${.TARGET}' '$${.TARGET}' '$$$${.TARGET}' + echo fail ${.TARGET}; false '${.TARGET}' '$${.TARGET}' '$$$${.TARGET}' + @: after '${.TARGET}' '$${.TARGET}' '$$$${.TARGET}' Index: src/usr.bin/make/unit-tests/varname-make_print_var_on_error.exp diff -u src/usr.bin/make/unit-tests/varname-make_print_var_on_error.exp:1.2 src/usr.bin/make/unit-tests/varname-make_print_var_on_error.exp:1.3 --- src/usr.bin/make/unit-tests/varname-make_print_var_on_error.exp:1.2 Fri Oct 23 05:44:02 2020 +++ src/usr.bin/make/unit-tests/varname-make_print_var_on_error.exp Sun Dec 13 19:08:20 2020 @@ -1,4 +1,5 @@ -fail +echo fail all; false 'all' '${.TARGET}' '$${.TARGET}' +fail all *** Error code 1 (continuing) Stop. Index: src/usr.bin/make/unit-tests/varname-make_print_var_on_error.mk diff -u src/usr.bin/make/unit-tests/varname-make_print_var_on_error.mk:1.4 src/usr.bin/make/unit-tests/varname-make_print_var_on_error.mk:1.5 --- src/usr.bin/make/unit-tests/varname-make_print_var_on_error.mk:1.4 Fri Oct 23 06:18:23 2020 +++ src/usr.bin/make/unit-tests/varname-make_print_var_on_error.mk Sun Dec 13 19:08:20 2020 @@ -1,4 +1,4 @@ -# $NetBSD: varname-make_print_var_on_error.mk,v 1.4 2020/10/23 06:18:23 rillig Exp $ +# $NetBSD: varname-make_print_var_on_error.mk,v 1.5 2020/12/13 19:08:20 rillig Exp $ # # Tests for the special MAKE_PRINT_VAR_ON_ERROR variable, which prints the # values of selected variables on error. @@ -7,10 +7,17 @@ # since at the point where it is filled in PrintOnError, the first command in # gn->commands has been set to NULL already. This leaves .ERROR_CMD an empty # list. +# +# See also: +# compat-error.mk + +# XXX: As of 2020-12-13, PrintOnError calls Var_Subst with VAR_GLOBAL, which +# does not expand the node-local variables like .TARGET. This results in the +# double '${.TARGET}' in the output. MAKE_PRINT_VAR_ON_ERROR= .ERROR_TARGET .ERROR_CMD all: - @: command before - @echo fail; false - @: command after + @: before '${.TARGET}' '$${.TARGET}' '$$$${.TARGET}' + echo fail ${.TARGET}; false '${.TARGET}' '$${.TARGET}' '$$$${.TARGET}' + @: after '${.TARGET}' '$${.TARGET}' '$$$${.TARGET}'