summaryrefslogtreecommitdiff
path: root/lib9p/tests/testclient-p9p
blob: 9c9fb5e90ff3107fd662f2cc24381fcd7bd2f32e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/usr/bin/env bash
# lib9p/tests/testclient-p9p - Test the 9P `test_server` against Plan 9 Port's `9p` utility
#
# Copyright (C) 2025  Luke T. Shumaker <lukeshu@lukeshu.com>
# SPDX-License-Identifier: AGPL-3.0-or-later

set -euE -o pipefail

if [[ $# != 1 ]]; then
	echo >&2 "Usage: $0 SERVER_PORT"
	echo >&2 "Usage: ./runtest $0 EXPLOG"
	exit 2
fi

expect_lines() (
	{ set +x; } &>/dev/null
	printf >&2 '+ diff -u expected.txt actual.txt\n'
	diff -u <(printf '%s\n' "$@") <(printf '%s\n' "$out")
)

set -x
client=(unshare --user 9p -a "localhost:${1}")

out=$("${client[@]}" ls -l '')
expect_lines \
	'd-r-xr-xr-x M 0 root root   0 Oct  7  2024 Documentation' \
	'--r--r--r-- M 0 root root 166 Oct  7  2024 README.md' \
	'---w--w--w- M 0 root root   0 Oct  7  2024 shutdown' \
	'--r--r--r-- M 0 root root   6 Oct  7  2024 slowread' \
	'--r--r--r-- M 0 root root   6 Oct  7  2024 slowread-flushable' \
	'--r--r--r-- M 0 root root   9 Oct  7  2024 whoami'

out=$("${client[@]}" ls -l 'Documentation/')
expect_lines \
	'--r--r--r-- M 0 root root 166 Oct  7  2024 x'

out=$("${client[@]}" read 'README.md')
expect_lines \
	'<!--' \
	'  README.md - test static file' \
	'' \
	'  Copyright (C) 2024-2025  Luke T. Shumaker <lukeshu@lukeshu.com>' \
	'  SPDX-License-Identifier: AGPL-3.0-or-later' \
	'-->' \
	'Hello, world!'

out=$("${client[@]}" read 'Documentation/x')
expect_lines \
	'<!--' \
	'  Documentation/x.txt - test static file' \
	'' \
	'  Copyright (C) 2024-2025  Luke T. Shumaker <lukeshu@lukeshu.com>' \
	'  SPDX-License-Identifier: AGPL-3.0-or-later' \
	'-->' \
	'foo'

out=$("${client[@]}" stat 'Documentation/x')
expect_lines \
	"'x' 'root' 'root' 'root' q (0000000000000003 1 ) m 0444 at 1728337905 mt 1728337904 l 166 t 0 d 0"

out=$("${client[@]}" write 'shutdown' <<<1)
expect_lines ''