SMOLNET PORTAL home about changes
iinitial repo - geomyidae-tests - geomyidae tests	Err	bitreich.org	70
hgit clone git://bitreich.org/geomyidae-tests/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/geomyidae-tests/	URL:git://bitreich.org/geomyidae-tests/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/geomyidae-tests/	bitreich.org	70
1Log	/scm/geomyidae-tests/log.gph	bitreich.org	70
1Files	/scm/geomyidae-tests/files.gph	bitreich.org	70
1Refs	/scm/geomyidae-tests/refs.gph	bitreich.org	70
1Tags	/scm/geomyidae-tests/tag	bitreich.org	70
1README	/scm/geomyidae-tests/file/README.gph	bitreich.org	70
1LICENSE	/scm/geomyidae-tests/file/LICENSE.gph	bitreich.org	70
i---	Err	bitreich.org	70
1commit 77772ad44967239799ef0fa93ab220d8d133b15e	/scm/geomyidae-tests/commit/77772ad44967239799ef0fa93ab220d8d133b15e.gph	bitreich.org	70
hAuthor: Hiltjo Posthuma <hiltjo@codemadness.org>	URL:mailto:hiltjo@codemadness.org	bitreich.org	70
iDate:   Fri, 21 Jul 2023 13:58:55 +0200	Err	bitreich.org	70
i	Err	bitreich.org	70
iinitial repo	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  A Makefile                            |      13 +++++++++++++	Err	bitreich.org	70
i  A README                              |       7 +++++++	Err	bitreich.org	70
i  A env.c                               |      14 ++++++++++++++	Err	bitreich.org	70
i  A run.sh                              |      35 +++++++++++++++++++++++++++++++	Err	bitreich.org	70
i  A test.c                              |      97 ++++++++++++++++++++++++++++++	Err	bitreich.org	70
i  A tests                               |       7 +++++++	Err	bitreich.org	70
i	Err	bitreich.org	70
i6 files changed, 173 insertions(+), 0 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/Makefile b/Makefile	/scm/geomyidae-tests/file/Makefile.gph	bitreich.org	70
i@@ -0,0 +1,13 @@	Err	bitreich.org	70
i+build: clean	Err	bitreich.org	70
i+        ${CC} -o test.cgi test.c -static	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+setup:	Err	bitreich.org	70
i+        mkdir -p results	Err	bitreich.org	70
i+        rm -f test_counter.txt	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+clean-results:	Err	bitreich.org	70
i+        rm -rf results	Err	bitreich.org	70
i+        rm -f test_counter.txt	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+clean:	Err	bitreich.org	70
i+        rm -f test.cgi	Err	bitreich.org	70
1diff --git a/README b/README	/scm/geomyidae-tests/file/README.gph	bitreich.org	70
i@@ -0,0 +1,7 @@	Err	bitreich.org	70
i+geomyidae testsuite initial prototype	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+steps to run:	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+as root: ./run.sh	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+make sure geomyidae is not running	Err	bitreich.org	70
1diff --git a/env.c b/env.c	/scm/geomyidae-tests/file/env.c.gph	bitreich.org	70
i@@ -0,0 +1,14 @@	Err	bitreich.org	70
i+#include <stdio.h>	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+extern char **environ;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+int	Err	bitreich.org	70
i+main(void)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        char **p;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        for (p = environ; p && *p; p++)	Err	bitreich.org	70
i+                puts(*p);	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        return 0;	Err	bitreich.org	70
i+}	Err	bitreich.org	70
1diff --git a/run.sh b/run.sh	/scm/geomyidae-tests/file/run.sh.gph	bitreich.org	70
i@@ -0,0 +1,35 @@	Err	bitreich.org	70
i+#!/bin/sh	Err	bitreich.org	70
i+bin="/home/hiltjo/p/geomyidae/geomyidae"	Err	bitreich.org	70
i+host="127.0.0.1"	Err	bitreich.org	70
i+port="7070"	Err	bitreich.org	70
i+base="$(pwd)"	Err	bitreich.org	70
i+user="hiltjo"	Err	bitreich.org	70
i+group="hiltjo"	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+run_tests() {	Err	bitreich.org	70
i+        while read -r line; do	Err	bitreich.org	70
i+                printf '%s\r\n' "$line" | nc "$host" "$port"	Err	bitreich.org	70
i+        done < tests	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+uid=$(id -u)	Err	bitreich.org	70
i+if test "$uid" != "0"; then	Err	bitreich.org	70
i+        echo "needs to be run as root to be able to chroot the daemon, etc" >&2	Err	bitreich.org	70
i+        exit 1	Err	bitreich.org	70
i+fi	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+# clean previous tests	Err	bitreich.org	70
i+rm -rf results	Err	bitreich.org	70
i+mkdir -p results	Err	bitreich.org	70
i+chown "$user:$group" results	Err	bitreich.org	70
i+rm -f test_counter.txt	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+"$bin" -4 -d -b "$base" -p "$port" -o "$port" -h "$host" -u "$user" -g "$group" &	Err	bitreich.org	70
i+run_tests	Err	bitreich.org	70
i+pkill geomyidae	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+"$bin" -4 -c -d -b "$base" -p "$port" -o "$port" -h "$host" -u "$user" -g "$group" &	Err	bitreich.org	70
i+run_tests	Err	bitreich.org	70
i+pkill geomyidae	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+# TOOD: test TLS	Err	bitreich.org	70
1diff --git a/test.c b/test.c	/scm/geomyidae-tests/file/test.c.gph	bitreich.org	70
i@@ -0,0 +1,97 @@	Err	bitreich.org	70
i+#include <errno.h>	Err	bitreich.org	70
i+#include <limits.h>	Err	bitreich.org	70
i+#include <stdio.h>	Err	bitreich.org	70
i+#include <stdlib.h>	Err	bitreich.org	70
i+#include <string.h>	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+const char *counter_path = "test_counter.txt";	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+/* read counter */	Err	bitreich.org	70
i+long	Err	bitreich.org	70
i+get_test_counter(void)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        FILE *fp;	Err	bitreich.org	70
i+        char buf[32];	Err	bitreich.org	70
i+        size_t n;	Err	bitreich.org	70
i+        long counter;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        fp = fopen(counter_path, "rb+");	Err	bitreich.org	70
i+        if (!fp)	Err	bitreich.org	70
i+                return 0;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        n = fread(buf, 1, sizeof(buf), fp);	Err	bitreich.org	70
i+        if (n < 0 || ferror(fp))	Err	bitreich.org	70
i+                return 0;	Err	bitreich.org	70
i+        buf[n] = '\0';	Err	bitreich.org	70
i+        counter = strtol(buf, NULL, 10);	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        return counter;	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+/* write new counter */	Err	bitreich.org	70
i+int	Err	bitreich.org	70
i+write_test_counter(long counter)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        FILE *fp;	Err	bitreich.org	70
i+        char buf[32];	Err	bitreich.org	70
i+        size_t n;	Err	bitreich.org	70
i+        int ret;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        fp = fopen(counter_path, "wb+");	Err	bitreich.org	70
i+        if (!fp) {	Err	bitreich.org	70
i+                fprintf(stderr, "error opening path for writing counter: %s",	Err	bitreich.org	70
i+                        strerror(errno));	Err	bitreich.org	70
i+                return -1;	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+                	Err	bitreich.org	70
i+        snprintf(buf, sizeof(buf), "%ld", counter);	Err	bitreich.org	70
i+        fwrite(buf, 1, strlen(buf), fp);	Err	bitreich.org	70
i+        ret = (fflush(fp) || ferror(fp)) ? -1 : 0;	Err	bitreich.org	70
i+        fclose(fp);	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        return ret;	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+int	Err	bitreich.org	70
i+main(void)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        FILE *fp;	Err	bitreich.org	70
i+        char path[PATH_MAX];	Err	bitreich.org	70
i+        const char *envs[] = {	Err	bitreich.org	70
i+                "PATH_INFO",	Err	bitreich.org	70
i+                "PATH_TRANSLATED",	Err	bitreich.org	70
i+                "QUERY_STRING",	Err	bitreich.org	70
i+                "SCRIPT_NAME",	Err	bitreich.org	70
i+                /* TLS */	Err	bitreich.org	70
i+                "SERVER_PROTOCOL",	Err	bitreich.org	70
i+                "HTTPS",	Err	bitreich.org	70
i+                /* gopher-specific: */	Err	bitreich.org	70
i+                "SEARCHREQUEST",	Err	bitreich.org	70
i+                "X_GOPHER_SEARCH"	Err	bitreich.org	70
i+        };	Err	bitreich.org	70
i+        char *p;	Err	bitreich.org	70
i+        int i;	Err	bitreich.org	70
i+        long counter;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        counter = get_test_counter();	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        snprintf(path, sizeof(path), "results/%lld.txt", counter);	Err	bitreich.org	70
i+        fp = fopen(path, "wb+");	Err	bitreich.org	70
i+        if (!fp) {	Err	bitreich.org	70
i+                fprintf(stderr, "error writing result to path: %s: %s\n",	Err	bitreich.org	70
i+                        path, strerror(errno));	Err	bitreich.org	70
i+                return 1;	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        for (i = 0; i < sizeof(envs) / sizeof(envs[0]); i++) {	Err	bitreich.org	70
i+                p = getenv(envs[i]);	Err	bitreich.org	70
i+                if (!p)	Err	bitreich.org	70
i+                        p = "(null)";	Err	bitreich.org	70
i+                fprintf(fp, "%s = %s\n", envs[i], p);	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+        fclose(fp);	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        write_test_counter(counter + 1);	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        return 0;	Err	bitreich.org	70
i+}	Err	bitreich.org	70
1diff --git a/tests b/tests	/scm/geomyidae-tests/file/tests.gph	bitreich.org	70
i@@ -0,0 +1,7 @@	Err	bitreich.org	70
i+test.cgi	Err	bitreich.org	70
i+/test.cgi	Err	bitreich.org	70
i+//test.cgi	Err	bitreich.org	70
i+/?query	Err	bitreich.org	70
i+/test.cgi?query	Err	bitreich.org	70
i+/test.cgi?query=test	Err	bitreich.org	70
i+/test.cgi?query=/test	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/geomyidae-tests/commit/77772a...
Content-Typetext/plain; charset=utf-8