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 make(1): add test for the -dF option



details:   https://anonhg.NetBSD.org/src/rev/e874539b5b92
branches:  trunk
changeset: 955520:e874539b5b92
user:      rillig <rillig%NetBSD.org@localhost>
date:      Sat Oct 03 09:10:26 2020 +0000

description:
make(1): add test for the -dF option

diffstat:

 usr.bin/make/unit-tests/opt-debug-file.mk |  32 +++++++++++++++++++++++++++++-
 1 files changed, 30 insertions(+), 2 deletions(-)

diffs (43 lines):

diff -r bebe35678ff1 -r e874539b5b92 usr.bin/make/unit-tests/opt-debug-file.mk
--- a/usr.bin/make/unit-tests/opt-debug-file.mk Sat Oct 03 08:29:32 2020 +0000
+++ b/usr.bin/make/unit-tests/opt-debug-file.mk Sat Oct 03 09:10:26 2020 +0000
@@ -1,9 +1,37 @@
-# $NetBSD: opt-debug-file.mk,v 1.1 2020/09/05 06:20:51 rillig Exp $
+# $NetBSD: opt-debug-file.mk,v 1.2 2020/10/03 09:10:26 rillig Exp $
 #
 # Tests for the -dF command line option, which redirects the debug log
 # to a file instead of writing it to stderr.
 
-# TODO: Implementation
+# Enable debug logging for variable assignments and evaluation (-dv)
+# and redirect the debug logging to the given file.
+.MAKEFLAGS: -dvFopt-debug-file.debuglog
+
+# This output goes to the debug log file.
+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.
+.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.
+#.MAKEFLAGS: -dc -dFstderr
+.if !${DEBUG_OUTPUT:tW:M*VAR = value expanded*}
+.  error ${DEBUG_OUTPUT}
+.endif
+
+# 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 '\$'.
+.if !${:!cat opt-debug-file.debuglog!:tW:M*VAR = value $${:Uexpanded}*}
+.  error
+.endif
+
+_!=    rm opt-debug-file.debuglog
 
 all:
        @:;



Home | Main Index | Thread Index | Old Index