Eric Bower
·
2026-04-24
test_helper.bash
1# test_helper.bash — shared setup/teardown for zmx BATS tests
2
3REPO_DIR="$(cd "$BATS_TEST_DIRNAME/.." && pwd)"
4
5setup() {
6 # Build once per test suite (skips if already built)
7 if [[ ! -x "$REPO_DIR/zig-out/bin/zmx" ]]; then
8 cd "$REPO_DIR" && zig build
9 fi
10 ZMX="$REPO_DIR/zig-out/bin/zmx"
11
12 # Isolate socket dir so tests don't interfere with real sessions or each other
13 export ZMX_DIR="$BATS_TEST_TMPDIR/zmx-sockets"
14 mkdir -p "$ZMX_DIR"
15}
16
17teardown() {
18 # Kill any sessions created during this test
19 if [[ -d "$ZMX_DIR" ]]; then
20 local sessions
21 sessions=$("$ZMX" list --short 2>/dev/null) || true
22 if [[ -n "$sessions" ]]; then
23 echo "$sessions" | xargs "$ZMX" kill --force 2>/dev/null || true
24 fi
25 fi
26}
27
28# Helper: wait for a session to appear in list (up to N seconds)
29wait_for_session() {
30 local name="$1" timeout="${2:-5}" i=0
31 while (( i < timeout * 10 )); do
32 if "$ZMX" list --short 2>/dev/null | grep -qx "$name"; then
33 return 0
34 fi
35 sleep 0.1
36 (( i++ )) || true
37 done
38 echo "Timed out waiting for session '$name'" >&2
39 return 1
40}