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): enable test for .IMPSRC
details: https://anonhg.NetBSD.org/src/rev/de25b6e37f59
branches: trunk
changeset: 1012679:de25b6e37f59
user: rillig <rillig%NetBSD.org@localhost>
date: Fri Aug 07 13:43:50 2020 +0000
description:
make(1): enable test for .IMPSRC
Having this test disabled was very confusing since its content didn't
match the actual behavior, and this also differs from the GNU make
behavior.
diffstat:
usr.bin/make/unit-tests/Makefile | 4 ++--
usr.bin/make/unit-tests/impsrc.exp | 16 ++++++++--------
usr.bin/make/unit-tests/impsrc.mk | 29 +++++++++++++++++++++++------
3 files changed, 33 insertions(+), 16 deletions(-)
diffs (107 lines):
diff -r af2ca1056f21 -r de25b6e37f59 usr.bin/make/unit-tests/Makefile
--- a/usr.bin/make/unit-tests/Makefile Fri Aug 07 13:36:28 2020 +0000
+++ b/usr.bin/make/unit-tests/Makefile Fri Aug 07 13:43:50 2020 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.85 2020/08/06 16:23:52 sjg Exp $
+# $NetBSD: Makefile,v 1.86 2020/08/07 13:43:50 rillig Exp $
#
# Unit tests for make(1)
#
@@ -55,7 +55,7 @@
TESTS+= forloop
TESTS+= forsubst
TESTS+= hash
-TESTS+= # impsrc # broken by reverting POSIX changes
+TESTS+= impsrc
TESTS+= include-main
TESTS+= lint
TESTS+= misc
diff -r af2ca1056f21 -r de25b6e37f59 usr.bin/make/unit-tests/impsrc.exp
--- a/usr.bin/make/unit-tests/impsrc.exp Fri Aug 07 13:36:28 2020 +0000
+++ b/usr.bin/make/unit-tests/impsrc.exp Fri Aug 07 13:43:50 2020 +0000
@@ -1,13 +1,13 @@
-expected: source4
-actual: source4
+expected:
+actual:
expected: target1.x
actual: target1.x
expected: target1.y
actual: target1.y
-expected: source1
-actual: source1
-expected: source2
-actual: source2
-expected: source1
-actual: source1
+expected:
+actual:
+expected:
+actual:
+expected:
+actual:
exit status 0
diff -r af2ca1056f21 -r de25b6e37f59 usr.bin/make/unit-tests/impsrc.mk
--- a/usr.bin/make/unit-tests/impsrc.mk Fri Aug 07 13:36:28 2020 +0000
+++ b/usr.bin/make/unit-tests/impsrc.mk Fri Aug 07 13:43:50 2020 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: impsrc.mk,v 1.2 2014/08/30 22:21:07 sjg Exp $
+# $NetBSD: impsrc.mk,v 1.3 2020/08/07 13:43:50 rillig Exp $
# Does ${.IMPSRC} work properly?
# It should be set, in order of precedence, to ${.TARGET} of:
@@ -6,6 +6,8 @@
# 2) the first prerequisite from the dependency line of an explicit rule, or
# 3) the first prerequisite of an explicit rule.
#
+# Items 2 and 3 work in GNU make.
+# Items 2 and 3 are not required by POSIX 2018.
all: target1.z target2 target3 target4
@@ -19,25 +21,40 @@
@echo 'expected: target1.y'
@echo 'actual: $<'
+# (3) Making target1.z out of target1.y is done because of an inference rule.
+# Therefore $< is available here.
+
+# (2) This is an additional dependency on the inference rule .x.y.
+# The dependency target1.x comes from the inference rule,
+# therefore it is available as $<.
target1.y: source3
+# (1) This is an explicit dependency, not an inference rule.
+# Therefore POSIX does not specify that $< be available here.
target1.x: source4
- @echo 'expected: source4'
+ @echo 'expected: ' # either 'source4' or ''
@echo 'actual: $<'
+# (4) This is an explicit dependency, independent of any inference rule.
+# Therefore $< is not available here.
target2: source1 source2
- @echo 'expected: source1'
+ @echo 'expected: '
@echo 'actual: $<'
+# (5) These are two explicit dependency rules.
+# The first doesn't have any dependencies, only the second has.
+# If any, the value of $< would be 'source2'.
target3: source1
target3: source2 source3
- @echo 'expected: source2'
+ @echo 'expected: '
@echo 'actual: $<'
+# (6) The explicit rule does not have associated commands.
+# The value of $< might come from that rule,
+# but it's equally fine to leave $< undefined.
target4: source1
target4:
- @echo 'expected: source1'
+ @echo 'expected: '
@echo 'actual: $<'
source1 source2 source3 source4:
-
Home |
Main Index |
Thread Index |
Old Index