@@ -130,13 +130,75 @@ EOF
130130 )
131131}
132132
133+ test_restart_restarts_systemd_and_kills_bridge_tmux () {
134+ (
135+ set -euo pipefail
136+ local tmp fakebin log_file
137+ tmp=" $( mktemp -d /tmp/baudbot-cli-test.XXXXXX) "
138+ trap ' rm -rf "$tmp"' EXIT
139+
140+ mkdir -p " $tmp /fakebin" " $tmp /bin/lib"
141+ fakebin=" $tmp /fakebin"
142+ log_file=" $tmp /calls.log"
143+
144+ printf ' {"version":"1.2.3"}\n' > " $tmp /package.json"
145+ cat > " $tmp /bin/lib/baudbot-runtime.sh" << 'EOF '
146+ #!/bin/bash
147+ has_systemd() { return 0; }
148+ cmd_status() { :; }
149+ cmd_logs() { :; }
150+ cmd_sessions() { :; }
151+ cmd_attach() { :; }
152+ EOF
153+
154+ cat > " $fakebin /id" << 'EOF '
155+ #!/bin/bash
156+ if [ "${1:-}" = "-u" ]; then
157+ echo 0
158+ else
159+ /usr/bin/id "$@"
160+ fi
161+ EOF
162+
163+ cat > " $fakebin /sudo" << 'EOF '
164+ #!/bin/bash
165+ if [ "${1:-}" = "-u" ]; then
166+ user="$2"
167+ shift 2
168+ fi
169+ echo "sudo $*" >> "${BAUDBOT_TEST_LOG}"
170+ exec "$@"
171+ EOF
172+
173+ cat > " $fakebin /tmux" << 'EOF '
174+ #!/bin/bash
175+ echo "tmux $*" >> "${BAUDBOT_TEST_LOG}"
176+ exit 0
177+ EOF
178+
179+ cat > " $fakebin /systemctl" << 'EOF '
180+ #!/bin/bash
181+ echo "systemctl $*" >> "${BAUDBOT_TEST_LOG}"
182+ exit 0
183+ EOF
184+
185+ chmod +x " $fakebin /id" " $fakebin /sudo" " $fakebin /tmux" " $fakebin /systemctl"
186+
187+ PATH=" $fakebin :$PATH " BAUDBOT_TEST_LOG=" $log_file " BAUDBOT_ROOT=" $tmp " bash " $CLI " restart
188+
189+ grep -q ' ^tmux kill-session -t slack-bridge$' " $log_file "
190+ grep -q ' ^systemctl restart baudbot$' " $log_file "
191+ )
192+ }
193+
133194echo " === baudbot cli tests ==="
134195echo " "
135196
136197run_test " version reads package.json" test_version_uses_package_json
137198run_test " status dispatches via runtime module" test_status_dispatches_via_runtime_module
138199run_test " attach requires root" test_attach_requires_root
139200run_test " broker register requires root" test_broker_register_requires_root
201+ run_test " restart kills bridge tmux then restarts systemd" test_restart_restarts_systemd_and_kills_bridge_tmux
140202
141203echo " "
142204echo " === $PASSED /$TOTAL passed, $FAILED failed ==="
0 commit comments