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