summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2009-01-20 22:55:46 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2009-01-20 22:55:46 +0000
commit8c93af8e9eb62eb23b9862156fbb36edd225ed36 (patch)
treef7d458624e88d7c3e4c76fd3d0e224029fb4f872
parentc4da36392950a99306bb7aae41a441fdf8e9f48f (diff)
downloadmandoc-8c93af8e9eb62eb23b9862156fbb36edd225ed36.tar.gz
mandoc-8c93af8e9eb62eb23b9862156fbb36edd225ed36.tar.zst
mandoc-8c93af8e9eb62eb23b9862156fbb36edd225ed36.zip
Added regression tests (just for prologue, for now).
Minor fixes in parsing prologue.
-rw-r--r--Makefile36
-rw-r--r--action.c43
-rw-r--r--argv.c3
-rw-r--r--private.h3
-rw-r--r--regress/test.empty0
-rw-r--r--regress/test.prologue.004
-rw-r--r--regress/test.prologue.014
-rw-r--r--regress/test.prologue.024
-rw-r--r--regress/test.prologue.034
-rw-r--r--regress/test.prologue.044
-rw-r--r--regress/test.prologue.054
-rw-r--r--regress/test.prologue.064
-rw-r--r--regress/test.prologue.074
-rw-r--r--regress/test.prologue.084
-rw-r--r--regress/test.prologue.094
-rw-r--r--regress/test.prologue.104
-rw-r--r--regress/test.prologue.114
-rw-r--r--regress/test.prologue.124
-rw-r--r--regress/test.prologue.134
-rw-r--r--regress/test.prologue.144
-rw-r--r--regress/test.prologue.154
-rw-r--r--regress/test.prologue.164
-rw-r--r--regress/test.prologue.174
-rw-r--r--regress/test.prologue.184
-rw-r--r--regress/test.prologue.193
-rw-r--r--regress/test.prologue.204
-rw-r--r--regress/test.prologue.214
-rw-r--r--regress/test.prologue.224
-rw-r--r--regress/test.prologue.234
-rw-r--r--regress/test.prologue.244
-rw-r--r--strings.c12
-rw-r--r--xstd.c10
32 files changed, 166 insertions, 40 deletions
diff --git a/Makefile b/Makefile
index 4d5500f2..0497c41f 100644
--- a/Makefile
+++ b/Makefile
@@ -33,6 +33,34 @@ CLEAN = $(BINS) $(LNS) $(LLNS) $(LIBS) $(OBJS)
INSTALL = $(SRCS) $(HEADS) Makefile Makefile.port DESCR $(MANS)
+FAIL = regress/test.empty \
+ regress/test.prologue.00 \
+ regress/test.prologue.01 \
+ regress/test.prologue.02 \
+ regress/test.prologue.03 \
+ regress/test.prologue.04 \
+ regress/test.prologue.06 \
+ regress/test.prologue.13 \
+ regress/test.prologue.15 \
+ regress/test.prologue.16 \
+ regress/test.prologue.18 \
+ regress/test.prologue.19 \
+ regress/test.prologue.21 \
+ regress/test.prologue.22 \
+ regress/test.prologue.23 \
+ regress/test.prologue.24
+
+SUCCEED = regress/test.prologue.05 \
+ regress/test.prologue.07 \
+ regress/test.prologue.08 \
+ regress/test.prologue.09 \
+ regress/test.prologue.10 \
+ regress/test.prologue.11 \
+ regress/test.prologue.12 \
+ regress/test.prologue.14 \
+ regress/test.prologue.17 \
+ regress/test.prologue.20
+
all: $(BINS)
lint: $(LLNS)
@@ -44,6 +72,14 @@ dist: mdocml-$(VERSION).tar.gz
port: mdocml-oport-$(VERSION).tar.gz
+regress::
+ @for f in $(FAIL); do \
+ echo "./mdocml $$f" ; \
+ ./mdocml $$f 2>/dev/null || continue ; exit 1 ; done
+ @for f in $(SUCCEED); do \
+ echo "./mdocml $$f" ; \
+ ./mdocml $$f 2>/dev/null || exit 1 ; done
+
install:
mkdir -p $(PREFIX)/bin/
mkdir -p $(PREFIX)/include/mdoc/
diff --git a/action.c b/action.c
index 3d4e9ba5..40816488 100644
--- a/action.c
+++ b/action.c
@@ -1,4 +1,4 @@
-/* $Id: action.c,v 1.14 2009/01/20 13:44:05 kristaps Exp $ */
+/* $Id: action.c,v 1.15 2009/01/20 22:55:46 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -246,6 +246,8 @@ post_dt(struct mdoc *mdoc)
if (NULL == mdoc->meta.title)
mdoc->meta.title = xstrdup("untitled");
+ mdoc_msg(mdoc, "title: %s", mdoc->meta.title);
+
return(post_prologue(mdoc));
}
@@ -279,46 +281,21 @@ post_os(struct mdoc *mdoc)
static int
post_dd(struct mdoc *mdoc)
{
- char date[64];
- size_t sz;
- char *p;
- struct mdoc_node *n;
+ char buf[64];
assert(MDOC_ELEM == mdoc->last->type);
assert(MDOC_Dd == mdoc->last->tok);
- n = mdoc->last->child;
assert(0 == mdoc->meta.date);
- date[0] = 0;
-
- sz = 64;
-
- for ( ; 0 == mdoc->meta.date && n; n = n->next) {
- assert(MDOC_TEXT == n->type);
- p = n->data.text.string;
- if (xstrcmp(p, "$Mdocdate: January 20 2009 $")) {
- mdoc->meta.date = time(NULL);
- continue;
- } else if (xstrcmp(p, "$")) {
- mdoc->meta.date = mdoc_atotime(date);
- continue;
- } else if (xstrcmp(p, "$Mdocdate:"))
- continue;
+ if ( ! xstrlcats(buf, mdoc->last->child, 64))
+ return(mdoc_err(mdoc, "macro parameters too long"));
+ if (0 == (mdoc->meta.date = mdoc_atotime(buf)))
+ return(mdoc_err(mdoc, "invalid parameter syntax"));
- if ( ! xstrlcat(date, n->data.text.string, sz))
- return(mdoc_nerr(mdoc, n, "invalid parameter syntax"));
- if (n->next && ! xstrlcat(date, " ", sz))
- return(mdoc_nerr(mdoc, n, "invalid parameter syntax"));
- }
+ mdoc_msg(mdoc, "date: %u", mdoc->meta.date);
- if (mdoc->meta.date && NULL == n)
- return(post_prologue(mdoc));
- else if (n)
- return(mdoc_err(mdoc, "invalid parameter syntax"));
- if ((mdoc->meta.date = mdoc_atotime(date)))
- return(post_prologue(mdoc));
- return(mdoc_err(mdoc, "invalid parameter syntax"));
+ return(post_prologue(mdoc));
}
diff --git a/argv.c b/argv.c
index 95a38a48..63dfde9e 100644
--- a/argv.c
+++ b/argv.c
@@ -1,4 +1,4 @@
-/* $Id: argv.c,v 1.22 2009/01/20 20:56:21 kristaps Exp $ */
+/* $Id: argv.c,v 1.23 2009/01/20 22:55:46 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -169,7 +169,6 @@ mdoc_args(struct mdoc *mdoc, int line,
if (MDOC_It == tok) {
n = mdoc->last->parent;
/* FIXME: scan for ARGS_TABSEP. */
-
}
if (0 == buf[*pos])
diff --git a/private.h b/private.h
index b64bdb85..571fd0c7 100644
--- a/private.h
+++ b/private.h
@@ -1,4 +1,4 @@
-/* $Id: private.h,v 1.72 2009/01/20 20:56:21 kristaps Exp $ */
+/* $Id: private.h,v 1.73 2009/01/20 22:55:46 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -161,6 +161,7 @@ int xstrlcats(char *, const struct mdoc_node *, size_t);
int xstrlcat(char *, const char *, size_t);
int xstrlcpy(char *, const char *, size_t);
int xstrcmp(const char *, const char *);
+int xstrncmp(const char *, const char *, size_t);
void *xcalloc(size_t, size_t);
char *xstrdup(const char *);
diff --git a/regress/test.empty b/regress/test.empty
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/regress/test.empty
diff --git a/regress/test.prologue.00 b/regress/test.prologue.00
new file mode 100644
index 00000000..66976084
--- /dev/null
+++ b/regress/test.prologue.00
@@ -0,0 +1,4 @@
+.Dd $Mdocdate: May 31 2007
+.Dt
+.Os
+.Sh NAME
diff --git a/regress/test.prologue.01 b/regress/test.prologue.01
new file mode 100644
index 00000000..700e992f
--- /dev/null
+++ b/regress/test.prologue.01
@@ -0,0 +1,4 @@
+.Dd $Mdocdate: January 20 2009 $
+.Dt
+.Os
+.Sh NAME
diff --git a/regress/test.prologue.02 b/regress/test.prologue.02
new file mode 100644
index 00000000..561e3822
--- /dev/null
+++ b/regress/test.prologue.02
@@ -0,0 +1,4 @@
+.Dd $Mdocdate May 31 2007 $
+.Dt
+.Os
+.Sh NAME
diff --git a/regress/test.prologue.03 b/regress/test.prologue.03
new file mode 100644
index 00000000..5dfa5522
--- /dev/null
+++ b/regress/test.prologue.03
@@ -0,0 +1,4 @@
+.Dd $Mdocdat$
+.Dt
+.Os
+.Sh NAME
diff --git a/regress/test.prologue.04 b/regress/test.prologue.04
new file mode 100644
index 00000000..3c823948
--- /dev/null
+++ b/regress/test.prologue.04
@@ -0,0 +1,4 @@
+.Dd June 40 1999
+.Dt
+.Os
+.Sh NAME
diff --git a/regress/test.prologue.05 b/regress/test.prologue.05
new file mode 100644
index 00000000..d7fd5b66
--- /dev/null
+++ b/regress/test.prologue.05
@@ -0,0 +1,4 @@
+.Dd June 1999
+.Dt
+.Os
+.Sh NAME
diff --git a/regress/test.prologue.06 b/regress/test.prologue.06
new file mode 100644
index 00000000..cd461a7e
--- /dev/null
+++ b/regress/test.prologue.06
@@ -0,0 +1,4 @@
+.Dd
+.Dt
+.Os
+.Sh NAME
diff --git a/regress/test.prologue.07 b/regress/test.prologue.07
new file mode 100644
index 00000000..700e992f
--- /dev/null
+++ b/regress/test.prologue.07
@@ -0,0 +1,4 @@
+.Dd $Mdocdate: January 20 2009 $
+.Dt
+.Os
+.Sh NAME
diff --git a/regress/test.prologue.08 b/regress/test.prologue.08
new file mode 100644
index 00000000..e590b07c
--- /dev/null
+++ b/regress/test.prologue.08
@@ -0,0 +1,4 @@
+.Dd May 31 2007
+.Dt
+.Os
+.Sh NAME
diff --git a/regress/test.prologue.09 b/regress/test.prologue.09
new file mode 100644
index 00000000..d1e742fa
--- /dev/null
+++ b/regress/test.prologue.09
@@ -0,0 +1,4 @@
+.Dd May 31, 2007
+.Dt
+.Os
+.Sh NAME
diff --git a/regress/test.prologue.10 b/regress/test.prologue.10
new file mode 100644
index 00000000..700e992f
--- /dev/null
+++ b/regress/test.prologue.10
@@ -0,0 +1,4 @@
+.Dd $Mdocdate: January 20 2009 $
+.Dt
+.Os
+.Sh NAME
diff --git a/regress/test.prologue.11 b/regress/test.prologue.11
new file mode 100644
index 00000000..88f8034e
--- /dev/null
+++ b/regress/test.prologue.11
@@ -0,0 +1,4 @@
+.Dd $Mdocdate: January 20 2009 $
+.Dt test
+.Os
+.Sh NAME
diff --git a/regress/test.prologue.12 b/regress/test.prologue.12
new file mode 100644
index 00000000..64f5e592
--- /dev/null
+++ b/regress/test.prologue.12
@@ -0,0 +1,4 @@
+.Dd $Mdocdate: January 20 2009 $
+.Dt test 1
+.Os
+.Sh NAME
diff --git a/regress/test.prologue.13 b/regress/test.prologue.13
new file mode 100644
index 00000000..55456c29
--- /dev/null
+++ b/regress/test.prologue.13
@@ -0,0 +1,4 @@
+.Dd $Mdocdate: January 20 2009 $
+.Dt test 0
+.Os
+.Sh NAME
diff --git a/regress/test.prologue.14 b/regress/test.prologue.14
new file mode 100644
index 00000000..fd8b7fca
--- /dev/null
+++ b/regress/test.prologue.14
@@ -0,0 +1,4 @@
+.Dd $Mdocdate: January 20 2009 $
+.Dt test 1 alpha
+.Os
+.Sh NAME
diff --git a/regress/test.prologue.15 b/regress/test.prologue.15
new file mode 100644
index 00000000..15a46836
--- /dev/null
+++ b/regress/test.prologue.15
@@ -0,0 +1,4 @@
+.Dd $Mdocdate: January 20 2009 $
+.Dt test 0 alfalfa
+.Os
+.Sh NAME
diff --git a/regress/test.prologue.16 b/regress/test.prologue.16
new file mode 100644
index 00000000..15e486ef
--- /dev/null
+++ b/regress/test.prologue.16
@@ -0,0 +1,4 @@
+.Dd $Mdocdate: January 20 2009 $
+.Dt test alpha
+.Os
+.Sh NAME
diff --git a/regress/test.prologue.17 b/regress/test.prologue.17
new file mode 100644
index 00000000..78a5e6be
--- /dev/null
+++ b/regress/test.prologue.17
@@ -0,0 +1,4 @@
+.Dd $Mdocdate: January 20 2009 $
+.Dt test 1 AMD
+.Os
+.Sh NAME
diff --git a/regress/test.prologue.18 b/regress/test.prologue.18
new file mode 100644
index 00000000..8e541556
--- /dev/null
+++ b/regress/test.prologue.18
@@ -0,0 +1,4 @@
+.Dd $Mdocdate: January 20 2009 $
+.Dt test AMD
+.Os
+.Sh NAME
diff --git a/regress/test.prologue.19 b/regress/test.prologue.19
new file mode 100644
index 00000000..1d992e08
--- /dev/null
+++ b/regress/test.prologue.19
@@ -0,0 +1,3 @@
+.Dd $Mdocdate: January 20 2009 $
+.Dt test 1 AMD
+.Os
diff --git a/regress/test.prologue.20 b/regress/test.prologue.20
new file mode 100644
index 00000000..e0131e38
--- /dev/null
+++ b/regress/test.prologue.20
@@ -0,0 +1,4 @@
+.Dd $Mdocdate: January 20 2009 $
+.Dt test\ 1 1 AMD
+.Os
+.Sh NAME
diff --git a/regress/test.prologue.21 b/regress/test.prologue.21
new file mode 100644
index 00000000..770bf9c4
--- /dev/null
+++ b/regress/test.prologue.21
@@ -0,0 +1,4 @@
+.Dd $Mdocdate: January 20 2009 $
+.Dt test\ 1 1 AMD\
+.Os
+.Sh NAME
diff --git a/regress/test.prologue.22 b/regress/test.prologue.22
new file mode 100644
index 00000000..52200912
--- /dev/null
+++ b/regress/test.prologue.22
@@ -0,0 +1,4 @@
+.Dd $Mdocdate: January 20 2009 $
+.Dt test 1 ;
+.Os
+.Sh NAME
diff --git a/regress/test.prologue.23 b/regress/test.prologue.23
new file mode 100644
index 00000000..32220cef
--- /dev/null
+++ b/regress/test.prologue.23
@@ -0,0 +1,4 @@
+.Dd $Mdocdate: January 20 2009 $ ;
+.Dt test 1
+.Os
+.Sh NAME
diff --git a/regress/test.prologue.24 b/regress/test.prologue.24
new file mode 100644
index 00000000..754928ac
--- /dev/null
+++ b/regress/test.prologue.24
@@ -0,0 +1,4 @@
+.Dd $Mdocdate: January 20 2009 $ ;
+.Dt test "1"
+.Os
+.Sh NAME
diff --git a/strings.c b/strings.c
index d655677b..77312258 100644
--- a/strings.c
+++ b/strings.c
@@ -1,4 +1,4 @@
-/* $Id: strings.c,v 1.10 2009/01/20 13:49:36 kristaps Exp $ */
+/* $Id: strings.c,v 1.11 2009/01/20 22:55:46 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -124,12 +124,18 @@ time_t
mdoc_atotime(const char *p)
{
struct tm tm;
+ char *pp;
(void)memset(&tm, 0, sizeof(struct tm));
- if (0 == strptime(p, "%b %d %Y", &tm))
+ if (xstrcmp(p, "$Mdocdate: January 20 2009 $"))
+ return(time(NULL));
+ if ((pp = strptime(p, "$Mdocdate: January 20 2009 $", &tm)) && 0 == *pp)
return(mktime(&tm));
- if (0 == strptime(p, "%b %d, %Y", &tm))
+ /* XXX - this matches "June 1999", which is wrong. */
+ if ((pp = strptime(p, "%b %d %Y", &tm)) && 0 == *pp)
+ return(mktime(&tm));
+ if ((pp = strptime(p, "%b %d, %Y", &tm)) && 0 == *pp)
return(mktime(&tm));
return(0);
diff --git a/xstd.c b/xstd.c
index 163a0f27..6442da41 100644
--- a/xstd.c
+++ b/xstd.c
@@ -1,4 +1,4 @@
-/* $Id: xstd.c,v 1.4 2009/01/20 13:44:05 kristaps Exp $ */
+/* $Id: xstd.c,v 1.5 2009/01/20 22:55:46 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -33,6 +33,14 @@ extern size_t strlcat(char *, const char *, size_t);
extern size_t strlcpy(char *, const char *, size_t);
#endif
+
+int
+xstrncmp(const char *p1, const char *p2, size_t sz)
+{
+
+ return(0 == strncmp(p1, p2, sz));
+}
+
int
xstrcmp(const char *p1, const char *p2)
{