Skip to content

Commit 8e9ea56

Browse files
authored
ci: smoke-test baudbot CLI flows on droplets (#145)
1 parent c3ba835 commit 8e9ea56

3 files changed

Lines changed: 82 additions & 0 deletions

File tree

bin/ci/setup-arch.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,9 @@ test -x /home/baudbot_agent/.varlock/bin/varlock
6464
sudo -u baudbot_agent bash -c 'export PATH="$HOME/.varlock/bin:$HOME/opt/node-v22.14.0-linux-x64/bin:$PATH" && cd ~ && varlock load --path ~/.config/'
6565
echo " ✓ bootstrap + install verification passed"
6666

67+
echo "=== Running CLI smoke checks ==="
68+
bash /home/baudbot_admin/baudbot/bin/ci/smoke-cli.sh
69+
6770
echo "=== Installing test dependencies ==="
6871
export PATH="/home/baudbot_agent/opt/node-v22.14.0-linux-x64/bin:$PATH"
6972
cd /home/baudbot_admin/baudbot

bin/ci/setup-ubuntu.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,9 @@ test -x /home/baudbot_agent/.varlock/bin/varlock
102102
sudo -u baudbot_agent bash -c 'export PATH="$HOME/.varlock/bin:$HOME/opt/node-v22.14.0-linux-x64/bin:$PATH" && cd ~ && varlock load --path ~/.config/'
103103
echo " ✓ bootstrap + install verification passed"
104104

105+
echo "=== Running CLI smoke checks ==="
106+
bash /home/baudbot_admin/baudbot/bin/ci/smoke-cli.sh
107+
105108
echo "=== Installing test dependencies ==="
106109
export PATH="/home/baudbot_agent/opt/node-v22.14.0-linux-x64/bin:$PATH"
107110
cd /home/baudbot_admin/baudbot

bin/ci/smoke-cli.sh

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
#!/bin/bash
2+
# Smoke-test high-value baudbot CLI flows in droplet CI.
3+
# Intended to run as root after `baudbot install` completes.
4+
5+
set -euo pipefail
6+
7+
TOTAL=0
8+
PASSED=0
9+
FAILED=0
10+
11+
run_expect() {
12+
local name="$1"
13+
local timeout_seconds="$2"
14+
local expected_csv="$3"
15+
shift 3
16+
17+
TOTAL=$((TOTAL + 1))
18+
printf " %-44s " "$name"
19+
20+
local out rc=0
21+
out="$(mktemp /tmp/baudbot-smoke.XXXXXX)"
22+
23+
if [ "$timeout_seconds" -gt 0 ]; then
24+
timeout "$timeout_seconds" "$@" >"$out" 2>&1 || rc=$?
25+
else
26+
"$@" >"$out" 2>&1 || rc=$?
27+
fi
28+
29+
local expected_ok=1 expected
30+
IFS=',' read -r -a expected <<< "$expected_csv"
31+
expected_ok=0
32+
for code in "${expected[@]}"; do
33+
if [ "$rc" -eq "$code" ]; then
34+
expected_ok=1
35+
break
36+
fi
37+
done
38+
39+
if [ "$expected_ok" -eq 1 ]; then
40+
echo ""
41+
PASSED=$((PASSED + 1))
42+
else
43+
echo "✗ FAILED (exit $rc, expected $expected_csv)"
44+
tail -40 "$out" | sed 's/^/ /'
45+
FAILED=$((FAILED + 1))
46+
fi
47+
48+
rm -f "$out"
49+
}
50+
51+
echo "=== CLI smoke checks ==="
52+
53+
# Basic dispatcher/help paths.
54+
run_expect "baudbot --version" 15 0 baudbot --version
55+
run_expect "baudbot --help" 15 0 baudbot --help
56+
run_expect "baudbot env --help" 15 0 baudbot env --help
57+
58+
# Always-on PR CI flows.
59+
run_expect "sudo baudbot start" 60 0 sudo baudbot start
60+
run_expect "sudo baudbot status" 30 0 sudo baudbot status
61+
run_expect "sudo baudbot sessions" 30 0 sudo baudbot sessions
62+
run_expect "sudo baudbot logs (timeout expected)" 8 124 sudo baudbot logs
63+
run_expect "sudo baudbot doctor" 60 0 sudo baudbot doctor
64+
# audit can legitimately return 1 (warn) or 2 (critical) while still proving command execution.
65+
run_expect "sudo baudbot audit --deep" 90 0,1,2 sudo baudbot audit --deep
66+
run_expect "sudo baudbot restart" 60 0 sudo baudbot restart
67+
run_expect "sudo baudbot stop" 60 0 sudo baudbot stop
68+
run_expect "sudo baudbot start (again)" 60 0 sudo baudbot start
69+
run_expect "sudo baudbot uninstall --dry-run" 60 0 sudo baudbot uninstall --dry-run
70+
71+
echo ""
72+
echo "=== CLI smoke checks: $PASSED/$TOTAL passed, $FAILED failed ==="
73+
74+
if [ "$FAILED" -gt 0 ]; then
75+
exit 1
76+
fi

0 commit comments

Comments
 (0)