Module Name:    src
Committed By:   rillig
Date:           Thu Oct  7 18:07:25 UTC 2021

Modified Files:
        src/distrib/sets/lists/tests: mi
        src/tests/usr.bin/indent: Makefile
        src/usr.bin/indent: args.c
Added Files:
        src/tests/usr.bin/indent: opt.0 opt.0.pro opt.0.stdout

Log Message:
tests/indent: test parsing of command line options in profile file


To generate a diff of this commit:
cvs rdiff -u -r1.1132 -r1.1133 src/distrib/sets/lists/tests/mi
cvs rdiff -u -r1.12 -r1.13 src/tests/usr.bin/indent/Makefile
cvs rdiff -u -r0 -r1.1 src/tests/usr.bin/indent/opt.0 \
    src/tests/usr.bin/indent/opt.0.pro src/tests/usr.bin/indent/opt.0.stdout
cvs rdiff -u -r1.46 -r1.47 src/usr.bin/indent/args.c

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.1132 src/distrib/sets/lists/tests/mi:1.1133
--- src/distrib/sets/lists/tests/mi:1.1132	Tue Oct  5 17:09:45 2021
+++ src/distrib/sets/lists/tests/mi	Thu Oct  7 18:07:25 2021
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.1132 2021/10/05 17:09:45 rillig Exp $
+# $NetBSD: mi,v 1.1133 2021/10/07 18:07:25 rillig Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -4985,6 +4985,9 @@
 ./usr/tests/usr.bin/indent/opt-v.0					tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/indent/opt-v.0.pro					tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/indent/opt-v.0.stdout				tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/indent/opt.0					tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/indent/opt.0.pro					tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/indent/opt.0.stdout					tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/indent/parens.0					tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/indent/parens.0.pro					tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/indent/parens.0.stdout				tests-usr.bin-tests	compattestfile,atf

Index: src/tests/usr.bin/indent/Makefile
diff -u src/tests/usr.bin/indent/Makefile:1.12 src/tests/usr.bin/indent/Makefile:1.13
--- src/tests/usr.bin/indent/Makefile:1.12	Tue Oct  5 17:09:45 2021
+++ src/tests/usr.bin/indent/Makefile	Thu Oct  7 18:07:25 2021
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.12 2021/10/05 17:09:45 rillig Exp $
+#	$NetBSD: Makefile,v 1.13 2021/10/07 18:07:25 rillig Exp $
 
 .include <bsd.own.mk>
 
@@ -261,6 +261,9 @@ FILES+=		opt-ut.0.stdout
 FILES+=		opt-v.0
 FILES+=		opt-v.0.pro
 FILES+=		opt-v.0.stdout
+FILES+=		opt.0
+FILES+=		opt.0.pro
+FILES+=		opt.0.stdout
 FILES+=		parens.0
 FILES+=		parens.0.stdout
 FILES+=		parens.0.pro

Index: src/usr.bin/indent/args.c
diff -u src/usr.bin/indent/args.c:1.46 src/usr.bin/indent/args.c:1.47
--- src/usr.bin/indent/args.c:1.46	Thu Oct  7 17:38:21 2021
+++ src/usr.bin/indent/args.c	Thu Oct  7 18:07:25 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: args.c,v 1.46 2021/10/07 17:38:21 rillig Exp $	*/
+/*	$NetBSD: args.c,v 1.47 2021/10/07 18:07:25 rillig Exp $	*/
 
 /*-
  * SPDX-License-Identifier: BSD-4-Clause
@@ -43,7 +43,7 @@ static char sccsid[] = "@(#)args.c	8.1 (
 
 #include <sys/cdefs.h>
 #if defined(__NetBSD__)
-__RCSID("$NetBSD: args.c,v 1.46 2021/10/07 17:38:21 rillig Exp $");
+__RCSID("$NetBSD: args.c,v 1.47 2021/10/07 18:07:25 rillig Exp $");
 #elif defined(__FreeBSD__)
 __FBSDID("$FreeBSD: head/usr.bin/indent/args.c 336318 2018-07-15 21:04:21Z pstef $");
 #endif
@@ -282,9 +282,10 @@ set_option(const char *arg)
     errx(1, "%s: unknown parameter \"%s\"", option_source, arg - 1);
 
 found:
-    if (p->p_is_bool)
+    if (p->p_is_bool) {
+	/* XXX: Trailing garbage in param_start is silently ignored. */
 	*(bool *)p->p_var = p->p_may_negate ? arg[0] != 'n' : p->p_bool_value;
-    else {
+    } else {
 	if (!isdigit((unsigned char)*param_start))
 	    errx(1, "%s: ``%s'' requires a parameter",
 		option_source, p->p_name);

Added files:

Index: src/tests/usr.bin/indent/opt.0
diff -u /dev/null src/tests/usr.bin/indent/opt.0:1.1
--- /dev/null	Thu Oct  7 18:07:25 2021
+++ src/tests/usr.bin/indent/opt.0	Thu Oct  7 18:07:25 2021
@@ -0,0 +1,12 @@
+/* $NetBSD: opt.0,v 1.1 2021/10/07 18:07:25 rillig Exp $ */
+/* $FreeBSD$ */
+
+/*
+ * Test parsing of command line options from a profile file.
+ */
+
+int global_var;
+
+int function(int expr) {
+switch (expr) { case 1: return 1; default: return 0; }
+}
Index: src/tests/usr.bin/indent/opt.0.pro
diff -u /dev/null src/tests/usr.bin/indent/opt.0.pro:1.1
--- /dev/null	Thu Oct  7 18:07:25 2021
+++ src/tests/usr.bin/indent/opt.0.pro	Thu Oct  7 18:07:25 2021
@@ -0,0 +1,27 @@
+/* $NetBSD: opt.0.pro,v 1.1 2021/10/07 18:07:25 rillig Exp $ */
+/* $FreeBSD$ */
+
+/* The latter of the two options wins. */
+-di5
+-di12
+
+/* It is possible to embed comments in the options, but nobody does that. */
+-/* comment */bacc
+-T/* define a type */custom_type
+
+/*
+ * For int or float options, trailing garbage is ignored.
+ *
+ * See atoi, atof.
+ */
+-i3garbage
+-cli3.5garbage
+
+-b/*/acc	/* The comment is '/' '*' '/', making the option '-bacc'. */
+
+/*
+ * For boolean options, trailing garbage is ignored.
+ *
+ * See strncmp
+ */
+-bacchus	/* Is interpreted as '-bacc'. */
Index: src/tests/usr.bin/indent/opt.0.stdout
diff -u /dev/null src/tests/usr.bin/indent/opt.0.stdout:1.1
--- /dev/null	Thu Oct  7 18:07:25 2021
+++ src/tests/usr.bin/indent/opt.0.stdout	Thu Oct  7 18:07:25 2021
@@ -0,0 +1,24 @@
+/* $NetBSD: opt.0.stdout,v 1.1 2021/10/07 18:07:25 rillig Exp $ */
+/* $FreeBSD$ */
+
+/*
+ * Test parsing of command line options from a profile file.
+ */
+
+/* $ The variable name is indented by 12 characters due to -di12. */
+int	    global_var;
+
+int
+function(int expr)
+{
+   switch (expr) {
+/* $ The indentation is 3 + (int)(3.5 * 3), so 3 + 10.5, so 13. */
+/* $ See parse.c, function parse, 'case switch_expr'. */
+	     case 1:
+/* $ The indentation is 3 + (int)3.5 * 3 + 3, so 3 + 9 + 3, so 15. */
+/* $ See parse.c, function parse, 'case switch_expr'. */
+	       return 1;
+	     default:
+	       return 0;
+   }
+}

Reply via email to