#!/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 # 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 \ '' \ 'Hello, world!' out=$("${client[@]}" read 'Documentation/x') expect_lines \ '' \ '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 ''