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 -m option,...



details:   https://anonhg.NetBSD.org/src/rev/dbb34122b8d9
branches:  trunk
changeset: 1013626:dbb34122b8d9
user:      rillig <rillig%NetBSD.org@localhost>
date:      Tue Sep 01 20:14:34 2020 +0000

description:
make(1): add test for the -m option, the special .../ path

diffstat:

 usr.bin/make/unit-tests/opt-m-include-dir.exp |   1 +
 usr.bin/make/unit-tests/opt-m-include-dir.mk  |  72 ++++++++++++++++++++------
 2 files changed, 55 insertions(+), 18 deletions(-)

diffs (89 lines):

diff -r 2b7df1880d7c -r dbb34122b8d9 usr.bin/make/unit-tests/opt-m-include-dir.exp
--- a/usr.bin/make/unit-tests/opt-m-include-dir.exp     Tue Sep 01 19:17:58 2020 +0000
+++ b/usr.bin/make/unit-tests/opt-m-include-dir.exp     Tue Sep 01 20:14:34 2020 +0000
@@ -1,1 +1,2 @@
+ok
 exit status 0
diff -r 2b7df1880d7c -r dbb34122b8d9 usr.bin/make/unit-tests/opt-m-include-dir.mk
--- a/usr.bin/make/unit-tests/opt-m-include-dir.mk      Tue Sep 01 19:17:58 2020 +0000
+++ b/usr.bin/make/unit-tests/opt-m-include-dir.mk      Tue Sep 01 20:14:34 2020 +0000
@@ -1,25 +1,61 @@
-# $NetBSD: opt-m-include-dir.mk,v 1.3 2020/09/01 19:17:58 rillig Exp $
+# $NetBSD: opt-m-include-dir.mk,v 1.4 2020/09/01 20:14:34 rillig Exp $
+#
+# Tests for the -m command line option, which adds a directory to the
+# search path for the .include <...> directive.
+#
+# The .../canary.mk special argument starts searching in the current
+# directory and walks towards the file system root, until it finds a
+# directory that contains a file called canary.mk.
+#
+# To set up this scenario, the file step2.mk is created deep in a hierarchy
+# of subdirectories.  Another file called opt-m-step3.mk is created a few
+# steps up in the directory hierarchy, serving as the canary file.
 #
-# Tests for the -m command line option.
+# Next to the canary file, there is opt-m-step3.mk.  This file is found
+# by mentioning its simple name in an .include directive.  It defines the
+# target "step2" that is needed by "step2.mk".
+
+.if ${.PARSEFILE:T} == "opt-m-include-dir.mk"
+
+# Set up the other files needed for this test.
+
+TEST_DIR:=     ${.PARSEFILE:R}.tmp/sub/sub/sub/workdir
+CANARY_FILE:=  ${.PARSEFILE:R}.tmp/sub/opt-m-canary.mk
+ACTUAL_FILE:=  ${.PARSEFILE:R}.tmp/sub/opt-m-step3.mk
+
+_!=    mkdir -p ${TEST_DIR}
+_!=    > ${CANARY_FILE}
+_!=    cp ${MAKEFILE} ${TEST_DIR}/step2.mk
+_!=    cp ${MAKEFILE} ${ACTUAL_FILE}
 
-.MAKEFLAGS: -m .../buf.c
+step1:
+       @${.MAKE} -C ${TEST_DIR} -f step2.mk step2
+
+.END:
+       @rm -rf ${MAKEFILE:R}.tmp
+
+.elif ${.PARSEFILE:T} == "step2.mk"
+
+# This is the file deep in the directory hierarchy.  It sets up the
+# search path for the .include <...> directive and then includes a
+# single file from that search path.
+
+# This option adds .tmp/sub to the search path for .include <...>.
+.MAKEFLAGS: -m .../opt-m-canary.mk
+
+# This option does not add any directory to the search path since the
+# canary file does not exist.
 .MAKEFLAGS: -m .../does-not-exist
-.MAKEFLAGS: -m .../${.PARSEFILE:T}
+
+.include <opt-m-step3.mk>
+
+.elif ${.PARSEFILE:T} == "opt-m-step3.mk"
 
-# Whether or not buf.c exists depends on whether the source code of make
-# is available.  When running the tests in src/usr.bin/make, it succeeds,
-# and when running the tests in src/tests/usr.bin/make, it fails.
+# This file is included by step2.mk.
 
-# This file should never exist.
-.if exists(does-not-exist)
+step2:
+       @echo ok
+
+.else
 .  error
 .endif
-
-# This test assumes that this test is run in the same directory as the
-# test file.
-.if !exists(${.PARSEFILE})
-.  error
-.endif
-
-all:
-       @:;



Home | Main Index | Thread Index | Old Index