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 tests for .else and .fo...
details: https://anonhg.NetBSD.org/src/rev/a3d94531f678
branches: trunk
changeset: 1013526:a3d94531f678
user: rillig <rillig%NetBSD.org@localhost>
date: Sat Aug 29 18:50:25 2020 +0000
description:
make(1): add tests for .else and .for + .endif
diffstat:
distrib/sets/lists/tests/mi | 4 +-
usr.bin/make/unit-tests/Makefile | 3 +-
usr.bin/make/unit-tests/directive-else.exp | 9 ++++-
usr.bin/make/unit-tests/directive-else.mk | 28 +++++++++++++-
usr.bin/make/unit-tests/directive-for-generating-endif.exp | 7 +++
usr.bin/make/unit-tests/directive-for-generating-endif.mk | 25 ++++++++++++
6 files changed, 71 insertions(+), 5 deletions(-)
diffs (126 lines):
diff -r fccd7fdaec61 -r a3d94531f678 distrib/sets/lists/tests/mi
--- a/distrib/sets/lists/tests/mi Sat Aug 29 17:41:14 2020 +0000
+++ b/distrib/sets/lists/tests/mi Sat Aug 29 18:50:25 2020 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.913 2020/08/29 14:47:26 rillig Exp $
+# $NetBSD: mi,v 1.914 2020/08/29 18:50:25 rillig Exp $
#
# Note: don't delete entries from here - mark them as "obsolete" instead.
#
@@ -4730,6 +4730,8 @@
./usr/tests/usr.bin/make/unit-tests/directive-export-literal.mk tests-usr.bin-tests compattestfile,atf
./usr/tests/usr.bin/make/unit-tests/directive-export.exp tests-usr.bin-tests compattestfile,atf
./usr/tests/usr.bin/make/unit-tests/directive-export.mk tests-usr.bin-tests compattestfile,atf
+./usr/tests/usr.bin/make/unit-tests/directive-for-generating-endif.exp tests-usr.bin-tests compattestfile,atf
+./usr/tests/usr.bin/make/unit-tests/directive-for-generating-endif.mk tests-usr.bin-tests compattestfile,atf
./usr/tests/usr.bin/make/unit-tests/directive-if.exp tests-usr.bin-tests compattestfile,atf
./usr/tests/usr.bin/make/unit-tests/directive-if.mk tests-usr.bin-tests compattestfile,atf
./usr/tests/usr.bin/make/unit-tests/directive-ifdef.exp tests-usr.bin-tests compattestfile,atf
diff -r fccd7fdaec61 -r a3d94531f678 usr.bin/make/unit-tests/Makefile
--- a/usr.bin/make/unit-tests/Makefile Sat Aug 29 17:41:14 2020 +0000
+++ b/usr.bin/make/unit-tests/Makefile Sat Aug 29 18:50:25 2020 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.126 2020/08/29 14:47:26 rillig Exp $
+# $NetBSD: Makefile,v 1.127 2020/08/29 18:50:25 rillig Exp $
#
# Unit tests for make(1)
#
@@ -132,6 +132,7 @@
TESTS+= directive-export
TESTS+= directive-export-env
TESTS+= directive-export-literal
+TESTS+= directive-for-generating-endif
TESTS+= directive-if
TESTS+= directive-ifdef
TESTS+= directive-ifmake
diff -r fccd7fdaec61 -r a3d94531f678 usr.bin/make/unit-tests/directive-else.exp
--- a/usr.bin/make/unit-tests/directive-else.exp Sat Aug 29 17:41:14 2020 +0000
+++ b/usr.bin/make/unit-tests/directive-else.exp Sat Aug 29 18:50:25 2020 +0000
@@ -1,1 +1,8 @@
-exit status 0
+make: "directive-else.mk" line 10: ok
+make: "directive-else.mk" line 14: ok
+make: "directive-else.mk" line 20: if-less else
+make: "directive-else.mk" line 26: ok
+make: "directive-else.mk" line 27: warning: extra else
+make: Fatal errors encountered -- cannot continue
+make: stopped in unit-tests
+exit status 1
diff -r fccd7fdaec61 -r a3d94531f678 usr.bin/make/unit-tests/directive-else.mk
--- a/usr.bin/make/unit-tests/directive-else.mk Sat Aug 29 17:41:14 2020 +0000
+++ b/usr.bin/make/unit-tests/directive-else.mk Sat Aug 29 18:50:25 2020 +0000
@@ -1,8 +1,32 @@
-# $NetBSD: directive-else.mk,v 1.2 2020/08/16 14:25:16 rillig Exp $
+# $NetBSD: directive-else.mk,v 1.3 2020/08/29 18:50:25 rillig Exp $
#
# Tests for the .else directive.
-# TODO: Implementation
+# The .else directive does not take any arguments.
+# As of 2020-08-29, make doesn't warn about this.
+.if 0
+.warning must not be reached
+.else 123
+.info ok
+.endif
+
+.if 1
+.info ok
+.else 123
+.warning must not be reached
+.endif
+
+# An .else without a corresponding .if is an error.
+.else
+
+# Accidental extra .else directives are detected too.
+.if 0
+.warning must not be reached
+.else
+.info ok
+.else
+.info After an extra .else, everything is skipped.
+.endif
all:
@:;
diff -r fccd7fdaec61 -r a3d94531f678 usr.bin/make/unit-tests/directive-for-generating-endif.exp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usr.bin/make/unit-tests/directive-for-generating-endif.exp Sat Aug 29 18:50:25 2020 +0000
@@ -0,0 +1,7 @@
+make: "directive-for-generating-endif.mk" line 21: if-less endif
+make: "directive-for-generating-endif.mk" line 21: if-less endif
+make: "directive-for-generating-endif.mk" line 21: if-less endif
+make: "directive-for-generating-endif.mk" line 0: 3 open conditionals
+make: Fatal errors encountered -- cannot continue
+make: stopped in unit-tests
+exit status 1
diff -r fccd7fdaec61 -r a3d94531f678 usr.bin/make/unit-tests/directive-for-generating-endif.mk
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usr.bin/make/unit-tests/directive-for-generating-endif.mk Sat Aug 29 18:50:25 2020 +0000
@@ -0,0 +1,25 @@
+# $NetBSD: directive-for-generating-endif.mk,v 1.1 2020/08/29 18:50:25 rillig Exp $
+#
+# Test whether a .for loop can be used to generate multiple .endif
+# directives to close nested .if directives. Depending on the exact
+# implementation, this might have been possible.
+#
+# If it were possible, the 3 .if directives would perfectly match the
+# 3 .endif directives generated by the .for loop.
+#
+# After the "included file" from the .for loop, the 3 .if directives
+# are still open.
+#
+# See For_Run and ParseReadLine. Each .for loop is treated like a separately
+# included file, and in each included file the .if/.endif directives must be
+# balanced.
+
+.if 1
+. if 2
+. if 3
+.for i in 3 2 1
+.endif
+.endfor
+
+all:
+ @:;
Home |
Main Index |
Thread Index |
Old Index