Module Name:    src
Committed By:   rillig
Date:           Mon Apr 18 14:38:24 UTC 2022

Modified Files:
        src/usr.bin/make/unit-tests: depsrc-use.exp depsrc-use.mk
            depsrc-usebefore.exp depsrc-usebefore.mk

Log Message:
tests/make: extend tests for .USE and .USEBEFORE


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/usr.bin/make/unit-tests/depsrc-use.exp \
    src/usr.bin/make/unit-tests/depsrc-usebefore.exp
cvs rdiff -u -r1.5 -r1.6 src/usr.bin/make/unit-tests/depsrc-use.mk
cvs rdiff -u -r1.7 -r1.8 src/usr.bin/make/unit-tests/depsrc-usebefore.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/depsrc-use.exp
diff -u src/usr.bin/make/unit-tests/depsrc-use.exp:1.3 src/usr.bin/make/unit-tests/depsrc-use.exp:1.4
--- src/usr.bin/make/unit-tests/depsrc-use.exp:1.3	Sat Aug 22 12:30:57 2020
+++ src/usr.bin/make/unit-tests/depsrc-use.exp	Mon Apr 18 14:38:24 2022
@@ -2,5 +2,9 @@ first 1
 first 2
 second 1
 second 2
+first-first 1
+first-first 2
+first-second 1
+first-second 2
 directly
 exit status 0
Index: src/usr.bin/make/unit-tests/depsrc-usebefore.exp
diff -u src/usr.bin/make/unit-tests/depsrc-usebefore.exp:1.3 src/usr.bin/make/unit-tests/depsrc-usebefore.exp:1.4
--- src/usr.bin/make/unit-tests/depsrc-usebefore.exp:1.3	Sat Aug 22 11:53:18 2020
+++ src/usr.bin/make/unit-tests/depsrc-usebefore.exp	Mon Apr 18 14:38:24 2022
@@ -1,6 +1,42 @@
-first 1
-first 2
-second 1
-second 2
-directly
+after-2-before-2 1
+after-2-before-2 2
+after-2-before-1 1
+after-2-before-1 2
+after-1-before-2 1
+after-1-before-2 2
+after-1-before-1 1
+after-1-before-1 2
+before-2-before-2 1
+before-2-before-2 2
+before-2-before-1 1
+before-2-before-1 2
+before-1-before-2 1
+before-1-before-2 2
+before-1-before-1 1
+before-1-before-1 2
+before-2 1
+before-2 2
+before-1 1
+before-1 2
+after-1 1
+after-1 2
+after-2 1
+after-2 2
+before-1-after-1 1
+before-1-after-1 2
+before-1-after-2 1
+before-1-after-2 2
+before-2-after-1 1
+before-2-after-1 2
+before-2-after-2 1
+before-2-after-2 2
+after-1-after-1 1
+after-1-after-1 2
+after-1-after-2 1
+after-1-after-2 2
+after-2-after-1 1
+after-2-after-1 2
+after-2-after-2 1
+after-2-after-2 2
+`directly' is up to date.
 exit status 0

Index: src/usr.bin/make/unit-tests/depsrc-use.mk
diff -u src/usr.bin/make/unit-tests/depsrc-use.mk:1.5 src/usr.bin/make/unit-tests/depsrc-use.mk:1.6
--- src/usr.bin/make/unit-tests/depsrc-use.mk:1.5	Tue Dec 28 14:22:51 2021
+++ src/usr.bin/make/unit-tests/depsrc-use.mk	Mon Apr 18 14:38:24 2022
@@ -1,7 +1,11 @@
-# $NetBSD: depsrc-use.mk,v 1.5 2021/12/28 14:22:51 rillig Exp $
+# $NetBSD: depsrc-use.mk,v 1.6 2022/04/18 14:38:24 rillig Exp $
 #
 # Tests for the special source .USE in dependency declarations,
 # which allows to append common commands to other targets.
+#
+# See also:
+#	.USEBEFORE
+#	depsrc-usebefore.mk
 
 # Before make.h 1.280 from 2021-12-28, a .USEBEFORE target was accidentally
 # regarded as a candidate for the main target.  On the other hand, a .USE
@@ -10,9 +14,15 @@ not-a-main-candidate: .USE
 
 all: action directly
 
-first: .USE
+first: .USE first-first first-second
 	@echo first 1		# Using ${.TARGET} here would expand to "action"
 	@echo first 2
+first-first: .USE
+	@echo first-first 1
+	@echo first-first 2
+first-second: .USE
+	@echo first-second 1
+	@echo first-second 2
 
 second: .USE
 	@echo second 1
@@ -22,7 +32,7 @@ second: .USE
 # This may happen as the result of expanding a .for loop.
 empty: .USE
 
-# It's possible but uncommon to directly make a .USEBEFORE target.
+# It's possible but uncommon to directly make a .USE target.
 directly: .USE
 	@echo directly
 

Index: src/usr.bin/make/unit-tests/depsrc-usebefore.mk
diff -u src/usr.bin/make/unit-tests/depsrc-usebefore.mk:1.7 src/usr.bin/make/unit-tests/depsrc-usebefore.mk:1.8
--- src/usr.bin/make/unit-tests/depsrc-usebefore.mk:1.7	Tue Dec 28 14:22:51 2021
+++ src/usr.bin/make/unit-tests/depsrc-usebefore.mk	Mon Apr 18 14:38:24 2022
@@ -1,8 +1,12 @@
-# $NetBSD: depsrc-usebefore.mk,v 1.7 2021/12/28 14:22:51 rillig Exp $
+# $NetBSD: depsrc-usebefore.mk,v 1.8 2022/04/18 14:38:24 rillig Exp $
 #
 # Tests for the special source .USEBEFORE in dependency declarations,
 # which allows to prepend common commands to other targets.
 #
+# If a target depends on several .USE or .USEBEFORE targets, the commands get
+# appended in declaration order.  For .USE targets, this is the expected
+# order, for .USEBEFORE targets the order is somewhat reversed.
+#
 # See also:
 #	.USE
 #	depsrc-use.mk
@@ -12,22 +16,98 @@
 # target was not.
 not-a-main-candidate: .USEBEFORE
 
-all: action directly
-
-first: .USEBEFORE
-	@echo first 1		# Using ${.TARGET} here would expand to "action"
-	@echo first 2		# Using ${.TARGET} here would expand to "action"
-
-second: .USEBEFORE
-	@echo second 1
-	@echo second 2
+all:
+	@${MAKE} -r -f ${MAKEFILE} ordering
+	@${MAKE} -r -f ${MAKEFILE} directly
+
+ordering: before-1 before-2 after-1 after-2
+
+before-1: .USEBEFORE before-1-before-1 before-1-before-2 before-1-after-1 before-1-after-2
+	@echo before-1 1
+	@echo before-1 2
+
+before-1-before-1: .USEBEFORE
+	@echo before-1-before-1 1
+	@echo before-1-before-1 2
+
+before-1-before-2: .USEBEFORE
+	@echo before-1-before-2 1
+	@echo before-1-before-2 2
+
+before-1-after-1: .USE
+	@echo before-1-after-1 1
+	@echo before-1-after-1 2
+
+before-1-after-2: .USE
+	@echo before-1-after-2 1
+	@echo before-1-after-2 2
+
+before-2: .USEBEFORE before-2-before-1 before-2-before-2 before-2-after-1 before-2-after-2
+	@echo before-2 1
+	@echo before-2 2
+
+before-2-before-1: .USEBEFORE
+	@echo before-2-before-1 1
+	@echo before-2-before-1 2
+
+before-2-before-2: .USEBEFORE
+	@echo before-2-before-2 1
+	@echo before-2-before-2 2
+
+before-2-after-1: .USE
+	@echo before-2-after-1 1
+	@echo before-2-after-1 2
+
+before-2-after-2: .USE
+	@echo before-2-after-2 1
+	@echo before-2-after-2 2
+
+after-1: .USE after-1-before-1 after-1-before-2 after-1-after-1 after-1-after-2
+	@echo after-1 1
+	@echo after-1 2
+
+after-1-before-1: .USEBEFORE
+	@echo after-1-before-1 1
+	@echo after-1-before-1 2
+
+after-1-before-2: .USEBEFORE
+	@echo after-1-before-2 1
+	@echo after-1-before-2 2
+
+after-1-after-1: .USE
+	@echo after-1-after-1 1
+	@echo after-1-after-1 2
+
+after-1-after-2: .USE
+	@echo after-1-after-2 1
+	@echo after-1-after-2 2
+
+after-2: .USE after-2-before-1 after-2-before-2 after-2-after-1 after-2-after-2
+	@echo after-2 1
+	@echo after-2 2
+
+after-2-before-1: .USEBEFORE
+	@echo after-2-before-1 1
+	@echo after-2-before-1 2
+
+after-2-before-2: .USEBEFORE
+	@echo after-2-before-2 1
+	@echo after-2-before-2 2
+
+after-2-after-1: .USE
+	@echo after-2-after-1 1
+	@echo after-2-after-1 2
+
+after-2-after-2: .USE
+	@echo after-2-after-2 1
+	@echo after-2-after-2 2
 
 # It is possible but uncommon to have a .USEBEFORE target with no commands.
 # This may happen as the result of expanding a .for loop.
 empty: .USEBEFORE
 
-# It is possible but uncommon to directly make a .USEBEFORE target.
+# It is technically possible to directly make a .USEBEFORE target, but it
+# doesn't make sense since GNode_IsOODate considers such a target to always be
+# up to date.
 directly: .USEBEFORE
 	@echo directly
-
-action: second first empty

Reply via email to