Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/usr.bin/make/unit-tests tests/make: test output channels for...
details: https://anonhg.NetBSD.org/src/rev/f8fb500b273e
branches: trunk
changeset: 359555:f8fb500b273e
user: rillig <rillig%NetBSD.org@localhost>
date: Sun Jan 09 15:05:21 2022 +0000
description:
tests/make: test output channels for parse errors and other errors
diffstat:
usr.bin/make/unit-tests/opt-debug-file.exp | 10 +++++++
usr.bin/make/unit-tests/opt-debug-file.mk | 40 +++++++++++++++++++++++++++---
2 files changed, 46 insertions(+), 4 deletions(-)
diffs (87 lines):
diff -r b3bcfb5fd183 -r f8fb500b273e usr.bin/make/unit-tests/opt-debug-file.exp
--- a/usr.bin/make/unit-tests/opt-debug-file.exp Sun Jan 09 15:05:16 2022 +0000
+++ b/usr.bin/make/unit-tests/opt-debug-file.exp Sun Jan 09 15:05:21 2022 +0000
@@ -1,2 +1,12 @@
+make: "opt-debug-file.mk" line 43: This goes to stderr only, once.
+make: "opt-debug-file.mk" line 45: This goes to stderr only, once.
+make: "opt-debug-file.mk" line 47: This goes to stderr, and in addition to the debug log.
+CondParser_Eval: ${:!cat opt-debug-file.debuglog!:Maddition:[#]} != 1
+lhs = 1.000000, rhs = 1.000000, op = !=
+make: Missing delimiter for modifier ':S'
+make: Missing delimiter for modifier ':S'
+make: Missing delimiter for modifier ':S'
+CondParser_Eval: ${:!cat opt-debug-file.debuglog!:Mdelimiter:[#]} != 1
+lhs = 1.000000, rhs = 1.000000, op = !=
Cannot open debug file "opt-debug-file.debuglog/file"
exit status 2
diff -r b3bcfb5fd183 -r f8fb500b273e usr.bin/make/unit-tests/opt-debug-file.mk
--- a/usr.bin/make/unit-tests/opt-debug-file.mk Sun Jan 09 15:05:16 2022 +0000
+++ b/usr.bin/make/unit-tests/opt-debug-file.mk Sun Jan 09 15:05:21 2022 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: opt-debug-file.mk,v 1.6 2021/12/28 01:04:04 rillig Exp $
+# $NetBSD: opt-debug-file.mk,v 1.7 2022/01/09 15:05:21 rillig Exp $
#
# Tests for the -dF command line option, which redirects the debug log
# to a file instead of writing it to stderr.
@@ -11,14 +11,16 @@
VAR= value ${:Uexpanded}
# Hide the logging output for the remaining actions.
-# As of 2020-10-03, it is not possible to disable debug logging again.
+# Before main.c 1.362 from 2020-10-03, it was not possible to disable debug
+# logging again. Since then, an easier way is the undocumented option '-d0'.
.MAKEFLAGS: -dF/dev/null
# Make sure that the debug logging file contains some logging.
DEBUG_OUTPUT:= ${:!cat opt-debug-file.debuglog!}
# Grmbl. Because of the := operator in the above line, the variable
# value contains ${:Uexpanded}. This variable expression is expanded
-# upon further processing. Therefore, don't read from untrusted input.
+# when it is used in the condition below. Therefore, be careful when storing
+# untrusted input in variables.
#.MAKEFLAGS: -dc -dFstderr
.if !${DEBUG_OUTPUT:tW:M*VAR = value expanded*}
. error ${DEBUG_OUTPUT}
@@ -26,11 +28,41 @@
# To get the unexpanded text that was actually written to the debug log
# file, the content of that log file must not be stored in a variable.
-# XXX: In the :M modifier, a dollar is escaped as '$$', not '\$'.
+#
+# XXX: In the :M modifier, a dollar is escaped using '$$', not '\$'. This
+# escaping scheme unnecessarily differs from all other modifiers.
.if !${:!cat opt-debug-file.debuglog!:tW:M*VAR = value $${:Uexpanded}*}
. error
.endif
+.MAKEFLAGS: -d0
+
+
+# See Parse_Error.
+.MAKEFLAGS: -dFstdout
+. info This goes to stderr only, once.
+.MAKEFLAGS: -dFstderr
+. info This goes to stderr only, once.
+.MAKEFLAGS: -dFopt-debug-file.debuglog
+. info This goes to stderr, and in addition to the debug log.
+.MAKEFLAGS: -dFstderr -d0c
+.if ${:!cat opt-debug-file.debuglog!:Maddition:[#]} != 1
+. error
+.endif
+
+
+# See ApplyModifier_Subst, which calls Error.
+.MAKEFLAGS: -dFstdout
+: This goes to stderr only, once. ${:U:S
+.MAKEFLAGS: -dFstderr
+: This goes to stderr only, once. ${:U:S
+.MAKEFLAGS: -dFopt-debug-file.debuglog
+: This goes to stderr, and in addition to the debug log. ${:U:S
+.MAKEFLAGS: -dFstderr -d0c
+.if ${:!cat opt-debug-file.debuglog!:Mdelimiter:[#]} != 1
+. error
+.endif
+
# If the debug log file cannot be opened, make prints an error message and
# exits immediately since the debug log file is usually selected from the
Home |
Main Index |
Thread Index |
Old Index