Module Name: src
Committed By: rillig
Date: Mon Dec 13 23:38:55 UTC 2021
Modified Files:
src/distrib/sets/lists/tests: mi
src/usr.bin/make/unit-tests: Makefile dep.exp dep.mk depsrc.exp
depsrc.mk deptgt-notparallel.exp deptgt-notparallel.mk
deptgt-order.exp deptgt-order.mk deptgt-path-suffix.exp
deptgt-path-suffix.mk deptgt.exp deptgt.mk directive.exp
directive.mk
Added Files:
src/usr.bin/make/unit-tests: parse.exp parse.mk
Log Message:
tests/make: extend tests for parsing makefiles
To generate a diff of this commit:
cvs rdiff -u -r1.1176 -r1.1177 src/distrib/sets/lists/tests/mi
cvs rdiff -u -r1.288 -r1.289 src/usr.bin/make/unit-tests/Makefile
cvs rdiff -u -r1.1 -r1.2 src/usr.bin/make/unit-tests/dep.exp \
src/usr.bin/make/unit-tests/deptgt-notparallel.exp \
src/usr.bin/make/unit-tests/deptgt-path-suffix.exp
cvs rdiff -u -r1.2 -r1.3 src/usr.bin/make/unit-tests/dep.mk \
src/usr.bin/make/unit-tests/depsrc.exp \
src/usr.bin/make/unit-tests/deptgt-notparallel.mk \
src/usr.bin/make/unit-tests/deptgt-order.exp \
src/usr.bin/make/unit-tests/deptgt-path-suffix.mk
cvs rdiff -u -r1.4 -r1.5 src/usr.bin/make/unit-tests/depsrc.mk \
src/usr.bin/make/unit-tests/directive.exp \
src/usr.bin/make/unit-tests/directive.mk
cvs rdiff -u -r1.3 -r1.4 src/usr.bin/make/unit-tests/deptgt-order.mk
cvs rdiff -u -r1.8 -r1.9 src/usr.bin/make/unit-tests/deptgt.exp
cvs rdiff -u -r1.11 -r1.12 src/usr.bin/make/unit-tests/deptgt.mk
cvs rdiff -u -r0 -r1.1 src/usr.bin/make/unit-tests/parse.exp \
src/usr.bin/make/unit-tests/parse.mk
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/distrib/sets/lists/tests/mi
diff -u src/distrib/sets/lists/tests/mi:1.1176 src/distrib/sets/lists/tests/mi:1.1177
--- src/distrib/sets/lists/tests/mi:1.1176 Sun Dec 12 22:16:48 2021
+++ src/distrib/sets/lists/tests/mi Mon Dec 13 23:38:54 2021
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.1176 2021/12/12 22:16:48 rillig Exp $
+# $NetBSD: mi,v 1.1177 2021/12/13 23:38:54 rillig Exp $
#
# Note: don't delete entries from here - mark them as "obsolete" instead.
#
@@ -5839,6 +5839,8 @@
./usr/tests/usr.bin/make/unit-tests/order.mk tests-usr.bin-tests compattestfile,atf
./usr/tests/usr.bin/make/unit-tests/parse-var.exp tests-usr.bin-tests compattestfile,atf
./usr/tests/usr.bin/make/unit-tests/parse-var.mk tests-usr.bin-tests compattestfile,atf
+./usr/tests/usr.bin/make/unit-tests/parse.exp tests-usr.bin-tests compattestfile,atf
+./usr/tests/usr.bin/make/unit-tests/parse.mk tests-usr.bin-tests compattestfile,atf
./usr/tests/usr.bin/make/unit-tests/phony-end.exp tests-usr.bin-tests compattestfile,atf
./usr/tests/usr.bin/make/unit-tests/phony-end.mk tests-usr.bin-tests compattestfile,atf
./usr/tests/usr.bin/make/unit-tests/posix.exp tests-usr.bin-tests compattestfile,atf
Index: src/usr.bin/make/unit-tests/Makefile
diff -u src/usr.bin/make/unit-tests/Makefile:1.288 src/usr.bin/make/unit-tests/Makefile:1.289
--- src/usr.bin/make/unit-tests/Makefile:1.288 Sun Dec 12 22:16:48 2021
+++ src/usr.bin/make/unit-tests/Makefile Mon Dec 13 23:38:54 2021
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.288 2021/12/12 22:16:48 rillig Exp $
+# $NetBSD: Makefile,v 1.289 2021/12/13 23:38:54 rillig Exp $
#
# Unit tests for make(1)
#
@@ -278,6 +278,7 @@ TESTS+= opt-warnings-as-errors
TESTS+= opt-where-am-i
TESTS+= opt-x-reduce-exported
TESTS+= order
+TESTS+= parse
TESTS+= parse-var
TESTS+= phony-end
TESTS+= posix
Index: src/usr.bin/make/unit-tests/dep.exp
diff -u src/usr.bin/make/unit-tests/dep.exp:1.1 src/usr.bin/make/unit-tests/dep.exp:1.2
--- src/usr.bin/make/unit-tests/dep.exp:1.1 Sun Aug 16 12:07:51 2020
+++ src/usr.bin/make/unit-tests/dep.exp Mon Dec 13 23:38:54 2021
@@ -1 +1,5 @@
-exit status 0
+make: "dep.mk" line 11: Inconsistent operator for only-colon
+make: "dep.mk" line 13: Inconsistent operator for only-colon
+make: Fatal errors encountered -- cannot continue
+make: stopped in unit-tests
+exit status 1
Index: src/usr.bin/make/unit-tests/deptgt-notparallel.exp
diff -u src/usr.bin/make/unit-tests/deptgt-notparallel.exp:1.1 src/usr.bin/make/unit-tests/deptgt-notparallel.exp:1.2
--- src/usr.bin/make/unit-tests/deptgt-notparallel.exp:1.1 Sun Aug 16 12:07:51 2020
+++ src/usr.bin/make/unit-tests/deptgt-notparallel.exp Mon Dec 13 23:38:54 2021
@@ -1 +1,9 @@
+: Making 1 out of nothing.
+: Making 2 out of nothing.
+: Making 3 out of nothing.
+: Making 4 out of nothing.
+: Making 5 out of nothing.
+: Making 6 out of nothing.
+: Making 7 out of nothing.
+: Making 8 out of nothing.
exit status 0
Index: src/usr.bin/make/unit-tests/deptgt-path-suffix.exp
diff -u src/usr.bin/make/unit-tests/deptgt-path-suffix.exp:1.1 src/usr.bin/make/unit-tests/deptgt-path-suffix.exp:1.2
--- src/usr.bin/make/unit-tests/deptgt-path-suffix.exp:1.1 Sun Aug 16 12:07:51 2020
+++ src/usr.bin/make/unit-tests/deptgt-path-suffix.exp Mon Dec 13 23:38:54 2021
@@ -1 +1,4 @@
-exit status 0
+make: "deptgt-path-suffix.mk" line 8: Suffix '.c' not defined (yet)
+make: Fatal errors encountered -- cannot continue
+make: stopped in unit-tests
+exit status 1
Index: src/usr.bin/make/unit-tests/dep.mk
diff -u src/usr.bin/make/unit-tests/dep.mk:1.2 src/usr.bin/make/unit-tests/dep.mk:1.3
--- src/usr.bin/make/unit-tests/dep.mk:1.2 Sun Aug 16 14:25:16 2020
+++ src/usr.bin/make/unit-tests/dep.mk Mon Dec 13 23:38:54 2021
@@ -1,8 +1,18 @@
-# $NetBSD: dep.mk,v 1.2 2020/08/16 14:25:16 rillig Exp $
+# $NetBSD: dep.mk,v 1.3 2021/12/13 23:38:54 rillig Exp $
#
# Tests for dependency declarations, such as "target: sources".
-# TODO: Implementation
+.MAIN: all
+
+# As soon as a target is defined using one of the dependency operators, it is
+# restricted to this dependency operator and cannot use the others anymore.
+only-colon:
+# expect+1: Inconsistent operator for only-colon
+only-colon!
+# expect+1: Inconsistent operator for only-colon
+only-colon::
+# Ensure that the target still has the original operator. If it hadn't, there
+# would be another error message.
+only-colon:
all:
- @:;
Index: src/usr.bin/make/unit-tests/depsrc.exp
diff -u src/usr.bin/make/unit-tests/depsrc.exp:1.2 src/usr.bin/make/unit-tests/depsrc.exp:1.3
--- src/usr.bin/make/unit-tests/depsrc.exp:1.2 Tue Dec 22 19:38:44 2020
+++ src/usr.bin/make/unit-tests/depsrc.exp Mon Dec 13 23:38:54 2021
@@ -1,4 +1,5 @@
: 'Undefined variables are expanded directly in the dependency'
: 'declaration. They are not preserved and maybe expanded later.'
: 'This is in contrast to local variables such as ${.TARGET}.'
+: Making .UNKNOWN from nothing.
exit status 0
Index: src/usr.bin/make/unit-tests/deptgt-notparallel.mk
diff -u src/usr.bin/make/unit-tests/deptgt-notparallel.mk:1.2 src/usr.bin/make/unit-tests/deptgt-notparallel.mk:1.3
--- src/usr.bin/make/unit-tests/deptgt-notparallel.mk:1.2 Sun Aug 16 14:25:16 2020
+++ src/usr.bin/make/unit-tests/deptgt-notparallel.mk Mon Dec 13 23:38:54 2021
@@ -1,8 +1,16 @@
-# $NetBSD: deptgt-notparallel.mk,v 1.2 2020/08/16 14:25:16 rillig Exp $
+# $NetBSD: deptgt-notparallel.mk,v 1.3 2021/12/13 23:38:54 rillig Exp $
#
-# Tests for the special target .NOTPARALLEL in dependency declarations.
+# Tests for the special target .NOTPARALLEL in dependency declarations, which
+# prevents the job module from doing anything in parallel, by setting the
+# maximum jobs to 1. This only applies to the current make, it is not
+# exported to submakes.
-# TODO: Implementation
+.MAKEFLAGS: -j4
-all:
- @:;
+# Set opts.maxJobs back to 1. Without this line, the output would be in
+# random order, interleaved with separators like '--- 1 ---'.
+.NOTPARALLEL:
+
+all: 1 2 3 4 5 6 7 8
+1 2 3 4 5 6 7 8: .PHONY
+ : Making ${.TARGET} out of nothing.
Index: src/usr.bin/make/unit-tests/deptgt-order.exp
diff -u src/usr.bin/make/unit-tests/deptgt-order.exp:1.2 src/usr.bin/make/unit-tests/deptgt-order.exp:1.3
--- src/usr.bin/make/unit-tests/deptgt-order.exp:1.2 Thu Jun 17 15:25:33 2021
+++ src/usr.bin/make/unit-tests/deptgt-order.exp Mon Dec 13 23:38:54 2021
@@ -1,3 +1,10 @@
+ParseReadLine (15): '.ORDER: three one'
+ParseDependency(.ORDER: three one)
+# ParseDependencySourceOrder: added Order dependency three - one
+# three, unmade, type OP_DEPENDS|OP_PHONY|OP_HAS_COMMANDS, flags none
+# one, unmade, type OP_DEPENDS|OP_PHONY, flags none
+ParseReadLine (16): '.MAKEFLAGS: -d0'
+ParseDependency(.MAKEFLAGS: -d0)
: 'Making two out of one.'
: 'Making three out of two.'
: 'Making all out of three.'
Index: src/usr.bin/make/unit-tests/deptgt-path-suffix.mk
diff -u src/usr.bin/make/unit-tests/deptgt-path-suffix.mk:1.2 src/usr.bin/make/unit-tests/deptgt-path-suffix.mk:1.3
--- src/usr.bin/make/unit-tests/deptgt-path-suffix.mk:1.2 Sun Aug 16 14:25:16 2020
+++ src/usr.bin/make/unit-tests/deptgt-path-suffix.mk Mon Dec 13 23:38:54 2021
@@ -1,8 +1,16 @@
-# $NetBSD: deptgt-path-suffix.mk,v 1.2 2020/08/16 14:25:16 rillig Exp $
+# $NetBSD: deptgt-path-suffix.mk,v 1.3 2021/12/13 23:38:54 rillig Exp $
#
# Tests for the special target .PATH.suffix in dependency declarations.
# TODO: Implementation
+# expect+1: Suffix '.c' not defined (yet)
+.PATH.c: ..
+
+.SUFFIXES: .c
+
+# Now the suffix is defined, and the path is recorded.
+.PATH.c: ..
+
all:
@:;
Index: src/usr.bin/make/unit-tests/depsrc.mk
diff -u src/usr.bin/make/unit-tests/depsrc.mk:1.4 src/usr.bin/make/unit-tests/depsrc.mk:1.5
--- src/usr.bin/make/unit-tests/depsrc.mk:1.4 Tue Dec 22 19:38:44 2020
+++ src/usr.bin/make/unit-tests/depsrc.mk Mon Dec 13 23:38:54 2021
@@ -1,7 +1,7 @@
-# $NetBSD: depsrc.mk,v 1.4 2020/12/22 19:38:44 rillig Exp $
+# $NetBSD: depsrc.mk,v 1.5 2021/12/13 23:38:54 rillig Exp $
#
# Tests for special sources (those starting with a dot, followed by
-# uppercase letters) in dependency declarations, such as .PHONY.
+# uppercase letters) in dependency declarations, such as '.PHONY'.
# TODO: Implementation
@@ -14,13 +14,19 @@ target: .PHONY source-${DEFINED_LATER}
DEFINED_LATER= later
#
source-: .PHONY
+ # This section applies.
: 'Undefined variables are expanded directly in the dependency'
: 'declaration. They are not preserved and maybe expanded later.'
: 'This is in contrast to local variables such as $${.TARGET}.'
source-later: .PHONY
+ # This section doesn't apply.
: 'Undefined variables are tried to be expanded in a dependency'
: 'declaration. If that fails because the variable is undefined,'
: 'the expression is preserved and tried to be expanded later.'
-all:
- @:;
+# Sources that look like keywords but are not known are interpreted as
+# ordinary sources.
+target: .UNKNOWN
+
+.UNKNOWN:
+ : Making ${.TARGET} from ${.ALLSRC:S,^$,nothing,W}.
Index: src/usr.bin/make/unit-tests/directive.exp
diff -u src/usr.bin/make/unit-tests/directive.exp:1.4 src/usr.bin/make/unit-tests/directive.exp:1.5
--- src/usr.bin/make/unit-tests/directive.exp:1.4 Mon Apr 5 13:35:41 2021
+++ src/usr.bin/make/unit-tests/directive.exp Mon Dec 13 23:38:54 2021
@@ -7,6 +7,8 @@ Global: .info = value
make: "directive.mk" line 26: := value
Global: .MAKEFLAGS = -r -k -d v -d
Global: .MAKEFLAGS = -r -k -d v -d 0
+make: "directive.mk" line 35: Invalid line type
+make: "directive.mk" line 38: Invalid line type
make: Fatal errors encountered -- cannot continue
make: stopped in unit-tests
exit status 1
Index: src/usr.bin/make/unit-tests/directive.mk
diff -u src/usr.bin/make/unit-tests/directive.mk:1.4 src/usr.bin/make/unit-tests/directive.mk:1.5
--- src/usr.bin/make/unit-tests/directive.mk:1.4 Sun Nov 15 11:57:00 2020
+++ src/usr.bin/make/unit-tests/directive.mk Mon Dec 13 23:38:54 2021
@@ -1,4 +1,4 @@
-# $NetBSD: directive.mk,v 1.4 2020/11/15 11:57:00 rillig Exp $
+# $NetBSD: directive.mk,v 1.5 2021/12/13 23:38:54 rillig Exp $
#
# Tests for the preprocessing directives, such as .if or .info.
@@ -31,5 +31,8 @@
# Not even the space after the '.info' can change anything about this.
.${:Uinfo} : source
-all:
- @:;
+# expect+1: Invalid line type
+target-without-colon
+
+# expect+1: Invalid line type
+target-without-colon another-target
Index: src/usr.bin/make/unit-tests/deptgt-order.mk
diff -u src/usr.bin/make/unit-tests/deptgt-order.mk:1.3 src/usr.bin/make/unit-tests/deptgt-order.mk:1.4
--- src/usr.bin/make/unit-tests/deptgt-order.mk:1.3 Thu Jun 17 15:25:33 2021
+++ src/usr.bin/make/unit-tests/deptgt-order.mk Mon Dec 13 23:38:54 2021
@@ -1,4 +1,4 @@
-# $NetBSD: deptgt-order.mk,v 1.3 2021/06/17 15:25:33 rillig Exp $
+# $NetBSD: deptgt-order.mk,v 1.4 2021/12/13 23:38:54 rillig Exp $
#
# Tests for the special target .ORDER in dependency declarations.
@@ -11,7 +11,9 @@ three: two
# This .ORDER creates a circular dependency since 'three' depends on 'one'
# but 'one' is supposed to be built after 'three'.
+.MAKEFLAGS: -dp
.ORDER: three one
+.MAKEFLAGS: -d0
# XXX: The circular dependency should be detected here.
all: three
Index: src/usr.bin/make/unit-tests/deptgt.exp
diff -u src/usr.bin/make/unit-tests/deptgt.exp:1.8 src/usr.bin/make/unit-tests/deptgt.exp:1.9
--- src/usr.bin/make/unit-tests/deptgt.exp:1.8 Sun Apr 4 10:13:09 2021
+++ src/usr.bin/make/unit-tests/deptgt.exp Mon Dec 13 23:38:54 2021
@@ -9,6 +9,9 @@ ParseReadLine (37): ' : command for empt
ParseReadLine (38): '.MAKEFLAGS: -d0'
ParseDependency(.MAKEFLAGS: -d0)
make: "deptgt.mk" line 46: Unknown modifier "Z"
+make: "deptgt.mk" line 49: warning: Extra target ignored
+make: "deptgt.mk" line 52: warning: Extra target (ordinary) ignored
+make: "deptgt.mk" line 55: warning: Special and mundane targets don't mix. Mundane ones ignored
make: Fatal errors encountered -- cannot continue
make: stopped in unit-tests
exit status 1
Index: src/usr.bin/make/unit-tests/deptgt.mk
diff -u src/usr.bin/make/unit-tests/deptgt.mk:1.11 src/usr.bin/make/unit-tests/deptgt.mk:1.12
--- src/usr.bin/make/unit-tests/deptgt.mk:1.11 Sun Apr 4 10:13:09 2021
+++ src/usr.bin/make/unit-tests/deptgt.mk Mon Dec 13 23:38:54 2021
@@ -1,4 +1,4 @@
-# $NetBSD: deptgt.mk,v 1.11 2021/04/04 10:13:09 rillig Exp $
+# $NetBSD: deptgt.mk,v 1.12 2021/12/13 23:38:54 rillig Exp $
#
# Tests for special targets like .BEGIN or .SUFFIXES in dependency
# declarations.
@@ -45,5 +45,14 @@ ${:U}: empty-source
# that nobody uses it.
$$$$$$$${:U:Z}:
+# expect+1: warning: Extra target ignored
+.END ordinary:
+
+# expect+1: warning: Extra target (ordinary) ignored
+.PATH ordinary:
+
+# expect+1: Special and mundane targets don't mix. Mundane ones ignored
+ordinary .PATH:
+
all:
@:;
Added files:
Index: src/usr.bin/make/unit-tests/parse.exp
diff -u /dev/null src/usr.bin/make/unit-tests/parse.exp:1.1
--- /dev/null Mon Dec 13 23:38:55 2021
+++ src/usr.bin/make/unit-tests/parse.exp Mon Dec 13 23:38:54 2021
@@ -0,0 +1,4 @@
+make: "parse.mk" line 7: Makefile appears to contain unresolved CVS/RCS/??? merge conflicts
+make: Fatal errors encountered -- cannot continue
+make: stopped in unit-tests
+exit status 1
Index: src/usr.bin/make/unit-tests/parse.mk
diff -u /dev/null src/usr.bin/make/unit-tests/parse.mk:1.1
--- /dev/null Mon Dec 13 23:38:55 2021
+++ src/usr.bin/make/unit-tests/parse.mk Mon Dec 13 23:38:54 2021
@@ -0,0 +1,7 @@
+# $NetBSD: parse.mk,v 1.1 2021/12/13 23:38:54 rillig Exp $
+#
+# Test those parts of the parsing that do not belong in any of the other
+# categories.
+
+# expect+1: Makefile appears to contain unresolved CVS/RCS/??? merge conflicts
+<<<<<< old