commit 23a912c214e3f9a8bbb2bf03e65c2d3a538f869f from: Omar Polo date: Thu Jan 20 00:01:19 2022 UTC add test of parsing and deserialization of gophermaps commit - 1bcb8303e1b913df31980ca332a5619424a72b01 commit + 23a912c214e3f9a8bbb2bf03e65c2d3a538f869f blob - a53c81059b97b7a452859d64d8ffce6e0f1981a8 blob + 9a744fc86400601b285b64cbdfccbc8f5528169a --- Makefile.am +++ Makefile.am @@ -1,3 +1,5 @@ +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 @@ -140,6 +140,7 @@ CC_ADD_CHECK_FLAGS([-Wno-unused-parameter]) 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 @@ -0,0 +1,10 @@ +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 @@ -0,0 +1 @@ +i\o/ error.host 1 blob - /dev/null blob + 8395c9322108a5a88073b4f01932b6d001338d72 (mode 644) --- /dev/null +++ test/gm-01 @@ -0,0 +1,6 @@ +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 @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2022 Omar Polo + * + * 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 +#include +#include + +#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 @@ -0,0 +1,8 @@ +#!/bin/sh + +set -e + +for f in gm-*; do + ./gmparser < "$f" > "$f.serialized" + diff -u "$f" "$f.serialized" +done