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 .ifmake di...



details:   https://anonhg.NetBSD.org/src/rev/ec428fd6e661
branches:  trunk
changeset: 937987:ec428fd6e661
user:      rillig <rillig%NetBSD.org@localhost>
date:      Sat Aug 29 19:07:32 2020 +0000

description:
make(1): add test for the .ifmake directive

diffstat:

 usr.bin/make/unit-tests/Makefile             |   3 +-
 usr.bin/make/unit-tests/directive-ifmake.exp |   7 ++++
 usr.bin/make/unit-tests/directive-ifmake.mk  |  47 +++++++++++++++++++++++++--
 3 files changed, 51 insertions(+), 6 deletions(-)

diffs (83 lines):

diff -r ecfc03442f83 -r ec428fd6e661 usr.bin/make/unit-tests/Makefile
--- a/usr.bin/make/unit-tests/Makefile  Sat Aug 29 19:06:32 2020 +0000
+++ b/usr.bin/make/unit-tests/Makefile  Sat Aug 29 19:07:32 2020 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.127 2020/08/29 18:50:25 rillig Exp $
+# $NetBSD: Makefile,v 1.128 2020/08/29 19:07:32 rillig Exp $
 #
 # Unit tests for make(1)
 #
@@ -329,6 +329,7 @@
 # settings FLAGS.test=-dv here, since that is closer to the test code.
 FLAGS.archive=         -dA
 FLAGS.counter=         -dv
+FLAGS.directive-ifmake=        first second
 FLAGS.doterror=                # none
 FLAGS.envfirst=                -e
 FLAGS.export=          # none
diff -r ecfc03442f83 -r ec428fd6e661 usr.bin/make/unit-tests/directive-ifmake.exp
--- a/usr.bin/make/unit-tests/directive-ifmake.exp      Sat Aug 29 19:06:32 2020 +0000
+++ b/usr.bin/make/unit-tests/directive-ifmake.exp      Sat Aug 29 19:07:32 2020 +0000
@@ -1,1 +1,8 @@
+make: "directive-ifmake.mk" line 8: ok: positive condition works
+make: "directive-ifmake.mk" line 19: ok: negation works
+make: "directive-ifmake.mk" line 25: ok: double negation works
+make: "directive-ifmake.mk" line 32: ok: both mentioned
+make: "directive-ifmake.mk" line 39: ok: only those mentioned
+: first
+: second
 exit status 0
diff -r ecfc03442f83 -r ec428fd6e661 usr.bin/make/unit-tests/directive-ifmake.mk
--- a/usr.bin/make/unit-tests/directive-ifmake.mk       Sat Aug 29 19:06:32 2020 +0000
+++ b/usr.bin/make/unit-tests/directive-ifmake.mk       Sat Aug 29 19:07:32 2020 +0000
@@ -1,8 +1,45 @@
-# $NetBSD: directive-ifmake.mk,v 1.2 2020/08/16 14:25:16 rillig Exp $
+# $NetBSD: directive-ifmake.mk,v 1.3 2020/08/29 19:07:32 rillig Exp $
 #
-# Tests for the .ifmake directive.
+# Tests for the .ifmake directive, which provides a shortcut for asking
+# whether a certain target is requested to be made from the command line.
+
+# This is the most basic form.
+.ifmake first
+.info ok: positive condition works
+.else
+.warning positive condition fails
+.endif
+
+# The not operator works as expected.
+# An alternative interpretation were that this condition is asking whether
+# the target "!first" was requested.  To distinguish this, see the next test.
+.ifmake !first
+.warning unexpected
+.else
+.info ok: negation works
+.endif
 
-# TODO: Implementation
+# See if the exclamation mark really means "not", or if it is just part of
+# the target name.
+.ifmake !!first
+.info ok: double negation works
+.else
+.warning double negation fails
+.endif
 
-all:
-       @:;
+# Multiple targets can be combined using the && and || operators.
+.ifmake first && second
+.info ok: both mentioned
+.else
+.warning && does not work as expected
+.endif
+
+# Negation also works in complex conditions.
+.ifmake first && !unmentioned
+.info ok: only those mentioned
+.else
+.warning && with ! does not work as expected
+.endif
+
+first second unmentioned:
+       : $@



Home | Main Index | Thread Index | Old Index