summaryrefslogtreecommitdiffstats
path: root/regress
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2018-08-24 23:12:33 +0000
committerIngo Schwarze <schwarze@openbsd.org>2018-08-24 23:12:33 +0000
commitf5133ff5de286c3849ba772719280fcec35ca374 (patch)
treed010611a454ce17650edf5bc7d26c9d237d10c00 /regress
parent0278f391fed9ab1da96a2f7737b052872f5ced71 (diff)
downloadmandoc-f5133ff5de286c3849ba772719280fcec35ca374.tar.gz
Rudimentary implementation of the roff(7) .while request.
Needed for example by groff_hdtbl(7). There are two limitations: It does not support nested .while requests yet, and each .while loop must start and end in the same scope. The roff_parseln() return codes are now more flexible and allow OR'ing options.
Diffstat (limited to 'regress')
-rw-r--r--regress/roff/Makefile5
-rw-r--r--regress/roff/while/Makefile13
-rw-r--r--regress/roff/while/badargs.in14
-rw-r--r--regress/roff/while/badargs.out_ascii13
-rw-r--r--regress/roff/while/badargs.out_lint3
-rw-r--r--regress/roff/while/basic.in30
-rw-r--r--regress/roff/while/basic.out_ascii16
-rw-r--r--regress/roff/while/into.in20
-rw-r--r--regress/roff/while/into.out_ascii9
-rw-r--r--regress/roff/while/into.out_lint2
-rw-r--r--regress/roff/while/nesting.in19
-rw-r--r--regress/roff/while/nesting.out_ascii9
-rw-r--r--regress/roff/while/nesting.out_lint2
-rw-r--r--regress/roff/while/outof.in18
-rw-r--r--regress/roff/while/outof.out_ascii9
-rw-r--r--regress/roff/while/outof.out_lint2
16 files changed, 182 insertions, 2 deletions
diff --git a/regress/roff/Makefile b/regress/roff/Makefile
index 7c6f5e16..f338f83d 100644
--- a/regress/roff/Makefile
+++ b/regress/roff/Makefile
@@ -1,7 +1,8 @@
-# $OpenBSD: Makefile,v 1.25 2018/08/23 14:16:12 schwarze Exp $
+# $OpenBSD: Makefile,v 1.26 2018/08/24 22:56:37 schwarze Exp $
SUBDIR = args cond esc scale string
-SUBDIR += br cc de ds ft ig it ll na nr po ps return rm rn shift sp ta ti tr
+SUBDIR += br cc de ds ft ig it ll na nr po ps
+SUBDIR += return rm rn shift sp ta ti tr while
.include "../Makefile.sub"
.include <bsd.subdir.mk>
diff --git a/regress/roff/while/Makefile b/regress/roff/while/Makefile
new file mode 100644
index 00000000..ed970474
--- /dev/null
+++ b/regress/roff/while/Makefile
@@ -0,0 +1,13 @@
+# $OpenBSD: Makefile,v 1.1 2018/08/24 22:56:37 schwarze Exp $
+
+REGRESS_TARGETS = basic badargs into nesting outof
+LINT_TARGETS = badargs into nesting outof
+
+# mandoc defects:
+# - if a while loop extends into a scope, mandoc may close it there
+# - mandoc does not support nested .while loops
+# - mandoc does not support .while loops extending out of the current scope
+
+SKIP_GROFF = into nesting outof
+
+.include <bsd.regress.mk>
diff --git a/regress/roff/while/badargs.in b/regress/roff/while/badargs.in
new file mode 100644
index 00000000..1ad05a71
--- /dev/null
+++ b/regress/roff/while/badargs.in
@@ -0,0 +1,14 @@
+.\" $OpenBSD: badargs.in,v 1.1 2018/08/24 22:56:37 schwarze Exp $
+.Dd $Mdocdate$
+.Dt WHILE-BADARGS 1
+.Os
+.Sh NAME
+.Nm while-badargs
+.Nd dubious arguments for the while request
+.Sh DESCRIPTION
+while does not support next line scope:
+.nr cnt 2 1
+.while \n-[cnt]
+\n[cnt]
+.Pp
+final text
diff --git a/regress/roff/while/badargs.out_ascii b/regress/roff/while/badargs.out_ascii
new file mode 100644
index 00000000..6affcf5e
--- /dev/null
+++ b/regress/roff/while/badargs.out_ascii
@@ -0,0 +1,13 @@
+WHILE-BADARGS(1) General Commands Manual WHILE-BADARGS(1)
+
+NNAAMMEE
+ wwhhiillee--bbaaddaarrggss - dubious arguments for the while request
+
+DDEESSCCRRIIPPTTIIOONN
+ while does not support next line scope:
+
+ 0
+
+ final text
+
+OpenBSD August 24, 2018 OpenBSD
diff --git a/regress/roff/while/badargs.out_lint b/regress/roff/while/badargs.out_lint
new file mode 100644
index 00000000..293ecc0a
--- /dev/null
+++ b/regress/roff/while/badargs.out_lint
@@ -0,0 +1,3 @@
+mandoc: badargs.in:11:2: WARNING: conditional request controls empty scope: while
+mandoc: badargs.in:11:9: WARNING: blank line in fill mode, using .sp
+mandoc: badargs.in:11:2: WARNING: conditional request controls empty scope: while
diff --git a/regress/roff/while/basic.in b/regress/roff/while/basic.in
new file mode 100644
index 00000000..07cd1282
--- /dev/null
+++ b/regress/roff/while/basic.in
@@ -0,0 +1,30 @@
+.\" $OpenBSD: basic.in,v 1.1 2018/08/24 22:56:37 schwarze Exp $
+.Dd $Mdocdate$
+.Dt WHILE-BASIC 1
+.Os
+.Sh NAME
+.Nm while-basic
+.Nd the while request
+.Sh DESCRIPTION
+Loop with single-line scope:
+.nr cnt 11 1
+.de mym
+\\n-[cnt]
+..
+.while \n[cnt] .mym
+.Pp
+Loop with multi-line scope, text line closure:
+.nr cnt 11
+.while \n[cnt] \{\
+.nr cnt -1
+\n[cnt]\},
+boom.
+.Pp
+Loop with multi-line scope, macro line closure:
+.nr cnt 11
+.while \n[cnt] \{\
+.nr cnt -1
+\n[cnt]
+.\}
+.Pp
+final text
diff --git a/regress/roff/while/basic.out_ascii b/regress/roff/while/basic.out_ascii
new file mode 100644
index 00000000..920a9d28
--- /dev/null
+++ b/regress/roff/while/basic.out_ascii
@@ -0,0 +1,16 @@
+WHILE-BASIC(1) General Commands Manual WHILE-BASIC(1)
+
+NNAAMMEE
+ wwhhiillee--bbaassiicc - the while request
+
+DDEESSCCRRIIPPTTIIOONN
+ Loop with single-line scope: 10 9 8 7 6 5 4 3 2 1 0
+
+ Loop with multi-line scope, text line closure: 10, 9, 8, 7, 6, 5, 4, 3,
+ 2, 1, 0, boom.
+
+ Loop with multi-line scope, macro line closure: 10 9 8 7 6 5 4 3 2 1 0
+
+ final text
+
+OpenBSD August 24, 2018 OpenBSD
diff --git a/regress/roff/while/into.in b/regress/roff/while/into.in
new file mode 100644
index 00000000..6a3bc064
--- /dev/null
+++ b/regress/roff/while/into.in
@@ -0,0 +1,20 @@
+.\" $OpenBSD: into.in,v 1.1 2018/08/24 22:56:37 schwarze Exp $
+.Dd $Mdocdate$
+.Dt WHILE-INTO 1
+.Os
+.Sh NAME
+.Nm while-into
+.Nd while request extending into a macro
+.Sh DESCRIPTION
+.nr cnt 10
+.de closeloop
+.nr cnt -1
+.\}
+..
+initial text
+.while \n[cnt] \{\
+\n[cnt]
+.closeloop
+after macro
+.\}
+final text
diff --git a/regress/roff/while/into.out_ascii b/regress/roff/while/into.out_ascii
new file mode 100644
index 00000000..3785c1a7
--- /dev/null
+++ b/regress/roff/while/into.out_ascii
@@ -0,0 +1,9 @@
+WHILE-INTO(1) General Commands Manual WHILE-INTO(1)
+
+NNAAMMEE
+ wwhhiillee--iinnttoo - while request extending into a macro
+
+DDEESSCCRRIIPPTTIIOONN
+ initial text 10 after macro final text
+
+OpenBSD August 24, 2018 OpenBSD
diff --git a/regress/roff/while/into.out_lint b/regress/roff/while/into.out_lint
new file mode 100644
index 00000000..04a75220
--- /dev/null
+++ b/regress/roff/while/into.out_lint
@@ -0,0 +1,2 @@
+mandoc: into.in:17:5: UNSUPP: end of .while loop in inner scope
+mandoc: into.in:20:1: UNSUPP: end of scope with open .while loop
diff --git a/regress/roff/while/nesting.in b/regress/roff/while/nesting.in
new file mode 100644
index 00000000..c91e8198
--- /dev/null
+++ b/regress/roff/while/nesting.in
@@ -0,0 +1,19 @@
+.\" $OpenBSD: nesting.in,v 1.1 2018/08/24 22:56:37 schwarze Exp $
+.Dd $Mdocdate$
+.Dt WHILE-NESTING 1
+.Os
+.Sh NAME
+.Nm while-nesting
+.Nd nested while requests
+.Sh DESCRIPTION
+initial text
+.nr c1 3
+.while \n(c1 \{\
+. nr c2 3
+. while \n(c2 \{\
+. nop \n(c1\n(c2
+. nr c2 -1
+. \}
+. nr c1 -1
+.\}
+final text
diff --git a/regress/roff/while/nesting.out_ascii b/regress/roff/while/nesting.out_ascii
new file mode 100644
index 00000000..03055341
--- /dev/null
+++ b/regress/roff/while/nesting.out_ascii
@@ -0,0 +1,9 @@
+WHILE-NESTING(1) General Commands Manual WHILE-NESTING(1)
+
+NNAAMMEE
+ wwhhiillee--nneessttiinngg - nested while requests
+
+DDEESSCCRRIIPPTTIIOONN
+ initial text 33 32 31 final text
+
+OpenBSD August 24, 2018 OpenBSD
diff --git a/regress/roff/while/nesting.out_lint b/regress/roff/while/nesting.out_lint
new file mode 100644
index 00000000..7ea34bad
--- /dev/null
+++ b/regress/roff/while/nesting.out_lint
@@ -0,0 +1,2 @@
+mandoc: nesting.in:14:37: UNSUPP: nested .while loops
+mandoc: nesting.in:18:4: UNSUPP: cannot continue this .while loop
diff --git a/regress/roff/while/outof.in b/regress/roff/while/outof.in
new file mode 100644
index 00000000..f505c0c6
--- /dev/null
+++ b/regress/roff/while/outof.in
@@ -0,0 +1,18 @@
+.\" $OpenBSD: outof.in,v 1.1 2018/08/24 22:56:37 schwarze Exp $
+.Dd $Mdocdate$
+.Dt WHILE-OUTOF 1
+.Os
+.Sh NAME
+.Nm while-outof
+.Nd while request starting in a macro
+.Sh DESCRIPTION
+.nr cnt 10
+.de mym
+. while \\n[cnt] \{\
+. nop \\n[cnt]
+..
+initial text
+.mym
+. nr cnt -1
+.\}
+final text
diff --git a/regress/roff/while/outof.out_ascii b/regress/roff/while/outof.out_ascii
new file mode 100644
index 00000000..ae193201
--- /dev/null
+++ b/regress/roff/while/outof.out_ascii
@@ -0,0 +1,9 @@
+WHILE-OUTOF(1) General Commands Manual WHILE-OUTOF(1)
+
+NNAAMMEE
+ wwhhiillee--oouuttooff - while request starting in a macro
+
+DDEESSCCRRIIPPTTIIOONN
+ initial text 10 final text
+
+OpenBSD August 24, 2018 OpenBSD
diff --git a/regress/roff/while/outof.out_lint b/regress/roff/while/outof.out_lint
new file mode 100644
index 00000000..6ab0c9fd
--- /dev/null
+++ b/regress/roff/while/outof.out_lint
@@ -0,0 +1,2 @@
+mandoc: outof.in:15:1: UNSUPP: end of scope with open .while loop
+mandoc: outof.in:17:4: UNSUPP: cannot continue this .while loop