commit - 1bcb8303e1b913df31980ca332a5619424a72b01
commit + 23a912c214e3f9a8bbb2bf03e65c2d3a538f869f
blob - a53c81059b97b7a452859d64d8ffce6e0f1981a8
blob + 9a744fc86400601b285b64cbdfccbc8f5528169a
--- Makefile.am
+++ Makefile.am
+SUBDIRS = test
+
bin_PROGRAMS = telescope
EXTRA_telescope_SOURCES = compat/ohash.h compat/queue.h compat/imsg.h contrib
blob - 11c79c8a7b393f4f85bdb0507fa4fa3dc3a52377
blob + 7e1ac8f057fb305ae46a35ce56d4d4b26741a7f7
--- configure.ac
+++ configure.ac
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([
Makefile
+ test/Makefile
pages/about_new.gmi
pages/about_crash.gmi
])
blob - /dev/null
blob + 499ab52d3c45d5c81ffcf4e765fc8c2012141ce9 (mode 644)
--- /dev/null
+++ test/Makefile.am
+check_PROGRAMS = gmparser
+
+gmparser_SOURCES = gmparser.c \
+ $(top_srcdir)/compat.h \
+ $(top_srcdir)/parser.c \
+ $(top_srcdir)/parser.h \
+ $(top_srcdir)/parser_gophermap.c \
+ $(top_srcdir)/utils.c
+
+TESTS = test-gmparser
blob - /dev/null
blob + 858ea04c280b7be51e7979430f769c5e76142687 (mode 644)
--- /dev/null
+++ test/gm-00
+i\o/ error.host 1
blob - /dev/null
blob + 8395c9322108a5a88073b4f01932b6d001338d72 (mode 644)
--- /dev/null
+++ test/gm-01
+i\o/ error.host 1
+i error.host 1
+iServer uptime: error.host 1
+i error.host 1
+0gophermap~ 2022-Jan-19 23:31 0.1 KB /gophermap~ localhost 70
+0greetings.txt 2022-Jan-19 23:19 0.0 KB /greetings.txt localhost 70
blob - /dev/null
blob + dccf9cf766e339431a64cb72e3b617f60328af18 (mode 644)
--- /dev/null
+++ test/gmparser.c
+/*
+ * Copyright (c) 2022 Omar Polo <op@omarpolo.com>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include "compat.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "parser.h"
+#include "telescope.h"
+
+void
+erase_buffer(struct buffer *buffer)
+{
+ return;
+}
+
+int
+main(void)
+{
+ struct tab tab;
+ struct hist hist;
+ struct evbuffer *evb;
+ ssize_t r;
+ char buf[BUFSIZ];
+
+ memset(&tab, 0, sizeof(tab));
+ memset(&hist, 0, sizeof(hist));
+ tab.hist_cur = &hist;
+
+ parser_init(&tab, gophermap_initparser);
+ for (;;) {
+ if ((r = read(0, buf, sizeof(buf))) == -1)
+ err(1, "read");
+ if (r == 0)
+ break;
+ if (!parser_parse(&tab, buf, r))
+ err(1, "parser_parse");
+ }
+
+ if (!parser_free(&tab))
+ err(1, "parser_free");
+
+ if ((evb = evbuffer_new()) == NULL)
+ err(1, "evbuffer_new");
+
+ if (parser_serialize(&tab, evb) == -1)
+ err(1, "parser_serialize");
+
+ evbuffer_write(evb, 1);
+
+ evbuffer_free(evb);
+
+ return 0;
+}
blob - /dev/null
blob + 505d31a995ac800b5dc7e546c7dbb5efa2f87162 (mode 755)
--- /dev/null
+++ test/test-gmparser
+#!/bin/sh
+
+set -e
+
+for f in gm-*; do
+ ./gmparser < "$f" > "$f.serialized"
+ diff -u "$f" "$f.serialized"
+done