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 numbers in co...



details:   https://anonhg.NetBSD.org/src/rev/f2f1f0a316b6
branches:  trunk
changeset: 938755:f2f1f0a316b6
user:      rillig <rillig%NetBSD.org@localhost>
date:      Mon Sep 14 06:22:59 2020 +0000

description:
make(1): add tests for numbers in conditions

diffstat:

 distrib/sets/lists/tests/mi                   |   4 +-
 usr.bin/make/unit-tests/Makefile              |   3 +-
 usr.bin/make/unit-tests/cond-cmp-unary.exp    |   1 +
 usr.bin/make/unit-tests/cond-cmp-unary.mk     |  43 ++++++++++++++++++++
 usr.bin/make/unit-tests/cond-token-number.exp |   9 +++-
 usr.bin/make/unit-tests/cond-token-number.mk  |  56 +++++++++++++++++++++++++-
 6 files changed, 109 insertions(+), 7 deletions(-)

diffs (164 lines):

diff -r a5845410ed97 -r f2f1f0a316b6 distrib/sets/lists/tests/mi
--- a/distrib/sets/lists/tests/mi       Mon Sep 14 05:04:05 2020 +0000
+++ b/distrib/sets/lists/tests/mi       Mon Sep 14 06:22:59 2020 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.922 2020/09/13 13:03:15 rillig Exp $
+# $NetBSD: mi,v 1.923 2020/09/14 06:22:59 rillig Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -4565,6 +4565,8 @@
 ./usr/tests/usr.bin/make/unit-tests/cond-cmp-numeric.mk                                tests-usr.bin-tests     compattestfile,atf
 ./usr/tests/usr.bin/make/unit-tests/cond-cmp-string.exp                                tests-usr.bin-tests     compattestfile,atf
 ./usr/tests/usr.bin/make/unit-tests/cond-cmp-string.mk                         tests-usr.bin-tests     compattestfile,atf
+./usr/tests/usr.bin/make/unit-tests/cond-cmp-unary.exp                         tests-usr.bin-tests     compattestfile,atf
+./usr/tests/usr.bin/make/unit-tests/cond-cmp-unary.mk                          tests-usr.bin-tests     compattestfile,atf
 ./usr/tests/usr.bin/make/unit-tests/cond-func-commands.exp                     tests-usr.bin-tests     compattestfile,atf
 ./usr/tests/usr.bin/make/unit-tests/cond-func-commands.mk                      tests-usr.bin-tests     compattestfile,atf
 ./usr/tests/usr.bin/make/unit-tests/cond-func-defined.exp                      tests-usr.bin-tests     compattestfile,atf
diff -r a5845410ed97 -r f2f1f0a316b6 usr.bin/make/unit-tests/Makefile
--- a/usr.bin/make/unit-tests/Makefile  Mon Sep 14 05:04:05 2020 +0000
+++ b/usr.bin/make/unit-tests/Makefile  Mon Sep 14 06:22:59 2020 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.140 2020/09/13 09:20:23 rillig Exp $
+# $NetBSD: Makefile,v 1.141 2020/09/14 06:22:59 rillig Exp $
 #
 # Unit tests for make(1)
 #
@@ -48,6 +48,7 @@
 TESTS+=                cond-cmp-numeric-lt
 TESTS+=                cond-cmp-numeric-ne
 TESTS+=                cond-cmp-string
+TESTS+=                cond-cmp-unary
 TESTS+=                cond-func
 TESTS+=                cond-func-commands
 TESTS+=                cond-func-defined
diff -r a5845410ed97 -r f2f1f0a316b6 usr.bin/make/unit-tests/cond-cmp-unary.exp
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/usr.bin/make/unit-tests/cond-cmp-unary.exp        Mon Sep 14 06:22:59 2020 +0000
@@ -0,0 +1,1 @@
+exit status 0
diff -r a5845410ed97 -r f2f1f0a316b6 usr.bin/make/unit-tests/cond-cmp-unary.mk
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/usr.bin/make/unit-tests/cond-cmp-unary.mk Mon Sep 14 06:22:59 2020 +0000
@@ -0,0 +1,43 @@
+# $NetBSD: cond-cmp-unary.mk,v 1.1 2020/09/14 06:22:59 rillig Exp $
+#
+# Tests for unary comparisons in .if conditions, that is, comparisons with
+# a single operand.  If the operand is a number, it is compared to zero,
+# if it is a string, it is tested for emptiness.
+
+# The number 0 evaluates to false.
+.if 0
+.  error
+.endif
+
+# Any other number evaluates to true.
+.if !12345
+.  error
+.endif
+
+# The empty string evaluates to false.
+.if ""
+.  error
+.endif
+
+# Any other string evaluates to true.
+.if !"0"
+.  error
+.endif
+
+# The empty string may come from a variable expression.
+.if ${:U}
+.  error
+.endif
+
+# A variable expression that is not surrounded by quotes is interpreted
+# as a number if possible, otherwise as a string.
+.if ${:U0}
+.  error
+.endif
+
+# A non-zero number from a variable expression evaluates to true.
+.if !${:U12345}
+.  error
+.endif
+
+all: # nothing
diff -r a5845410ed97 -r f2f1f0a316b6 usr.bin/make/unit-tests/cond-token-number.exp
--- a/usr.bin/make/unit-tests/cond-token-number.exp     Mon Sep 14 05:04:05 2020 +0000
+++ b/usr.bin/make/unit-tests/cond-token-number.exp     Mon Sep 14 06:22:59 2020 +0000
@@ -1,1 +1,8 @@
-exit status 0
+make: "cond-token-number.mk" line 13: Malformed conditional (-0)
+make: "cond-token-number.mk" line 21: Malformed conditional (+0)
+make: "cond-token-number.mk" line 29: Malformed conditional (!-1)
+make: "cond-token-number.mk" line 37: Malformed conditional (!+1)
+make: "cond-token-number.mk" line 54: End of the tests.
+make: Fatal errors encountered -- cannot continue
+make: stopped in unit-tests
+exit status 1
diff -r a5845410ed97 -r f2f1f0a316b6 usr.bin/make/unit-tests/cond-token-number.mk
--- a/usr.bin/make/unit-tests/cond-token-number.mk      Mon Sep 14 05:04:05 2020 +0000
+++ b/usr.bin/make/unit-tests/cond-token-number.mk      Mon Sep 14 06:22:59 2020 +0000
@@ -1,8 +1,56 @@
-# $NetBSD: cond-token-number.mk,v 1.2 2020/08/16 14:25:16 rillig Exp $
+# $NetBSD: cond-token-number.mk,v 1.3 2020/09/14 06:22:59 rillig Exp $
 #
 # Tests for number tokens in .if conditions.
 
-# TODO: Implementation
+.if 0
+.  error
+.endif
+
+# Even though -0 is a number and would be accepted by strtod, it is not
+# accepted by the condition parser.
+#
+# See the ch_isdigit call in CondParser_String.
+.if -0
+.  error
+.endif
+
+# Even though +0 is a number and would be accepted by strtod, it is not
+# accepted by the condition parser.
+#
+# See the ch_isdigit call in CondParser_String.
+.if +0
+.  error
+.endif
 
-all:
-       @:;
+# Even though -1 is a number and would be accepted by strtod, it is not
+# accepted by the condition parser.
+#
+# See the ch_isdigit call in CondParser_String.
+.if !-1
+.  error
+.endif
+
+# Even though +1 is a number and would be accepted by strtod, it is not
+# accepted by the condition parser.
+#
+# See the ch_isdigit call in CondParser_String.
+.if !+1
+.  error
+.endif
+
+# When the number comes from a variable expression though, it may be signed.
+# XXX: This is inconsistent.
+.if ${:U+0}
+.  error
+.endif
+
+# When the number comes from a variable expression though, it may be signed.
+# XXX: This is inconsistent.
+.if !${:U+1}
+.  error
+.endif
+
+# Ensure that parsing continues until here.
+.info End of the tests.
+
+all: # nothing



Home | Main Index | Thread Index | Old Index