From d29cb3f3deda2ae55fbccfdaae3b2481410a0894 Mon Sep 17 00:00:00 2001
From: "Luke T. Shumaker" <lukeshu@lukeshu.com>
Date: Thu, 9 Jan 2025 23:29:30 -0700
Subject: Add basic smoke tests for the 9p server

---
 lib9p/tests/runtest | 45 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 45 insertions(+)
 create mode 100755 lib9p/tests/runtest

(limited to 'lib9p/tests/runtest')

diff --git a/lib9p/tests/runtest b/lib9p/tests/runtest
new file mode 100755
index 0000000..29d2089
--- /dev/null
+++ b/lib9p/tests/runtest
@@ -0,0 +1,45 @@
+#!/usr/bin/env bash
+# lib9p/tests/runtest - TODO
+#
+# Copyright (C) 2025  Luke T. Shumaker <lukeshu@lukeshu.com>
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+set -euE -o pipefail
+set -x
+
+valgrind --error-exitcode=2 ./tests/test_server/test_server &
+server_pid=$!
+# shellcheck disable=SC2064
+trap "kill $server_pid || true; wait $server_pid || true" EXIT
+server_addr='localhost:9000'
+
+client=(9p -a "$server_addr")
+
+expect_lines() (
+	{ set +x; } &>/dev/null
+	printf >&2 '+ diff -u expected.txt actual.txt\n'
+	diff -u <(printf '%s\n' "$@") <(printf '%s\n' "$out")
+)
+
+while [[ -d /proc/$server_pid && "$(readlink /proc/$server_pid/fd/4 2>/dev/null)" != socket:* ]]; do sleep 0.1; done
+
+out=$("${client[@]}" ls -l '')
+expect_lines \
+	'd-r-xr-xr-x M 0 root root  0 Oct  7 15:51 Documentation' \
+	'--r--r--r-- M 0 root root 14 Oct  7 15:51 README.md'
+
+out=$("${client[@]}" ls -l 'Documentation/')
+expect_lines \
+	'--r--r--r-- M 0 root root 4 Oct  7 15:51 x'
+
+out=$("${client[@]}" read 'README.md')
+expect_lines \
+	'Hello, world!'
+
+out=$("${client[@]}" read 'Documentation/x')
+expect_lines \
+	'foo'
+
+out=$("${client[@]}" stat 'Documentation/x')
+expect_lines \
+	"'x' 'root' 'root' 'root' q (0000000000000009 1 ) m 0444 at 1728337905 mt 1728337904 l 4 t 0 d 0"
-- 
cgit v1.2.3-2-g168b