regress: start panes with /bin/sh, not the login shell

The Makefile runs each test under env -i, so SHELL is unset and the
server's default-shell is the login shell from the password file. It
runs every pane that has no command, as a login shell, and every pane
command given as one string, with -c. zsh takes HOME from the password
file when it is unset, so it reads the user's startup files and
history.

Twenty-six tests type a command into such a pane and give it a fixed
time: twenty-five type an attach to a second server and sleep for a
second, and session-ops.sh types a script and waits five seconds for
it. When the login shell is slow to give a prompt, the checks run
before the command has. zsh, for one, waits until a lock on a non-empty
history file is ten seconds old.

Set SHELL=/bin/sh in the environment the tests run in.
This commit is contained in:
ejc3
2026-10-14 00:55:42 +00:00
parent 9ad0056ca9
commit 4fd0875050

View File

@@ -32,7 +32,7 @@ $(TESTS): prepare
@base="$@"; base=$${base##*/}; \
log="$(LOGDIR)/$${base%.sh}.log"; \
start=$$(date +%s); \
env -i LC_CTYPE=C.UTF-8 MallocNanoZone=0 \
env -i LC_CTYPE=C.UTF-8 MallocNanoZone=0 SHELL=/bin/sh \
sh -x "$@" >"$$log" 2>&1; \
result=$$?; \
end=$$(date +%s); \