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