From: Stefano Brivio <sbrivio@redhat.com>
To: passt-dev@passt.top
Subject: [PATCH 05/12] tests: Don't globally set tmux default-shell
Date: Tue, 17 May 2022 14:36:07 +0200 [thread overview]
Message-ID: <20220517123614.1892316-6-sbrivio@redhat.com> (raw)
In-Reply-To: <20220517123614.1892316-1-sbrivio@redhat.com>
[-- Attachment #1: Type: text/plain, Size: 2331 bytes --]
From: David Gibson <david(a)gibson.dropbear.id.au>
run_term() uses tmux set-option -g to globally set the default shell.
Unfortunately this hits a chicken-and-egg problem that's common with many
of tmux's session options. If there isn't already a tmux server running,
we can't connect to set the option. If we attempt this after starting our
session (and therefore the server), then the session will already be
started with the previous default shell.
In any case it's not a good idea to set tmux global options, since that
might interfere with whatever else the user is doing in tmux. So, instead
set the default-shell option locally to the session after starting it. To
make sure we get the right shell for our initial script, explicitly invoke
/bin/sh to interpret it.
Signed-off-by: David Gibson <david(a)gibson.dropbear.id.au>
---
test/lib/term | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/test/lib/term b/test/lib/term
index 42b0020..7dd9826 100755
--- a/test/lib/term
+++ b/test/lib/term
@@ -542,26 +542,25 @@ pause_continue() {
# run_term() - Start tmux session, running entry point, with recording if needed
run_term() {
- export SHELL="/bin/sh"
- tmux set-option -g default-shell "/bin/sh"
-
TMUX="tmux new-session -s passt_test -ePCAP=$PCAP -eDEBUG=$DEBUG"
if [ ${CI} -eq 1 ]; then
printf '\e[8;50;240t'
- asciinema rec --overwrite ci.uncut -c "$TMUX ./ci from_term"
+ asciinema rec --overwrite ci.uncut -c "$TMUX /bin/sh -c './ci from_term'"
video_postprocess ci.uncut
elif [ ${DEMO} -eq 1 ]; then
printf '\e[8;40;130t'
- asciinema rec --overwrite demo.uncut -c "$TMUX ./run_demo from_term"
+ asciinema rec --overwrite demo.uncut -c "$TMUX /bin/sh -c './run_demo from_term'"
video_postprocess demo.uncut
else
- $TMUX ./run from_term
+ $TMUX /bin/sh -c './run from_term'
fi
}
# term() - Set up terminal window and panes for regular tests or CI
term() {
+ tmux set-option default-shell "/bin/sh"
+
tmux set status-interval 1
tmux rename-window ''
@@ -596,6 +595,8 @@ term() {
# term_demo() - Set up terminal window and panes for demo
term_demo() {
+ tmux set-option default-shell "/bin/sh"
+
tmux set status-interval 1
tmux rename-window ''
--
@@ -542,26 +542,25 @@ pause_continue() {
# run_term() - Start tmux session, running entry point, with recording if needed
run_term() {
- export SHELL="/bin/sh"
- tmux set-option -g default-shell "/bin/sh"
-
TMUX="tmux new-session -s passt_test -ePCAP=$PCAP -eDEBUG=$DEBUG"
if [ ${CI} -eq 1 ]; then
printf '\e[8;50;240t'
- asciinema rec --overwrite ci.uncut -c "$TMUX ./ci from_term"
+ asciinema rec --overwrite ci.uncut -c "$TMUX /bin/sh -c './ci from_term'"
video_postprocess ci.uncut
elif [ ${DEMO} -eq 1 ]; then
printf '\e[8;40;130t'
- asciinema rec --overwrite demo.uncut -c "$TMUX ./run_demo from_term"
+ asciinema rec --overwrite demo.uncut -c "$TMUX /bin/sh -c './run_demo from_term'"
video_postprocess demo.uncut
else
- $TMUX ./run from_term
+ $TMUX /bin/sh -c './run from_term'
fi
}
# term() - Set up terminal window and panes for regular tests or CI
term() {
+ tmux set-option default-shell "/bin/sh"
+
tmux set status-interval 1
tmux rename-window ''
@@ -596,6 +595,8 @@ term() {
# term_demo() - Set up terminal window and panes for demo
term_demo() {
+ tmux set-option default-shell "/bin/sh"
+
tmux set status-interval 1
tmux rename-window ''
--
2.35.1
next prev parent reply other threads:[~2022-05-17 12:36 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-17 12:36 [PATCH 00/12] Tests fixes and clean-ups Stefano Brivio
2022-05-17 12:36 ` [PATCH 01/12] tests: Update mbuto git URLs Stefano Brivio
2022-05-17 12:36 ` [PATCH 02/12] tests: Remove unused XVFB variable Stefano Brivio
2022-05-17 12:36 ` [PATCH 03/12] tests: Add some debugging output for the test scripts themselves Stefano Brivio
2022-05-17 12:36 ` [PATCH 04/12] tests: Don't use tmux update-environment Stefano Brivio
2022-05-17 12:36 ` Stefano Brivio [this message]
2022-05-17 12:36 ` [PATCH 06/12] tests: Improve control character filtering in pane_parse Stefano Brivio
2022-05-17 12:36 ` [PATCH 07/12] tests: Don't ignore errors during script Stefano Brivio
2022-05-17 12:36 ` [PATCH 08/12] tests: Add pane_status command to check for success of issued commands Stefano Brivio
2022-05-17 12:36 ` [PATCH 09/12] tests: Simplify *tools commands using pane_status Stefano Brivio
2022-05-17 12:36 ` [PATCH 10/12] tests: Simplify explicit checks for command success Stefano Brivio
2022-05-17 12:36 ` [PATCH 11/12] test/perf/pasta_udp: Drop redundant assignment of ::1 to loopback interface Stefano Brivio
2022-05-17 12:36 ` [PATCH 12/12] test/run: Return 0 from run(), exit value already reflects failures Stefano Brivio
2022-05-18 3:17 ` [PATCH 00/12] Tests fixes and clean-ups David Gibson
2022-05-18 5:40 ` Stefano Brivio
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220517123614.1892316-6-sbrivio@redhat.com \
--to=sbrivio@redhat.com \
--cc=passt-dev@passt.top \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://passt.top/passt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for IMAP folder(s).