-
Notifications
You must be signed in to change notification settings - Fork 491
Expand file tree
/
Copy pathtest_claude_strategy.sh
More file actions
executable file
·128 lines (101 loc) · 3.1 KB
/
test_claude_strategy.sh
File metadata and controls
executable file
·128 lines (101 loc) · 3.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#!/usr/bin/env bash
# Tests for Claude Code session restore support:
# - claude_session.sh strategy script behavior
# - claude in default_proc_list (variables.sh)
# - claude strategy registration (resurrect.tmux)
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
ROOT_DIR="$CURRENT_DIR/.."
STRATEGY="$ROOT_DIR/strategies/claude_session.sh"
VARIABLES="$ROOT_DIR/scripts/variables.sh"
RESURRECT_TMUX="$ROOT_DIR/resurrect.tmux"
pass_count=0
fail_count=0
pass() {
local desc="$1"
echo " PASS: $desc"
((pass_count++))
}
fail() {
local desc="$1"
local detail="$2"
echo " FAIL: $desc"
echo " $detail"
((fail_count++))
}
assert_strategy_output() {
local desc="$1"
local input_command="$2"
local input_dir="$3"
local expected="$4"
local actual
actual="$($STRATEGY "$input_command" "$input_dir")"
if [ "$actual" = "$expected" ]; then
pass "$desc"
else
fail "$desc" "expected '$expected', got '$actual'"
fi
}
# ---------- Strategy script tests ----------
echo "Strategy: claude_session.sh"
assert_strategy_output \
"plain 'claude' appends --continue" \
"claude" "/some/dir" \
"claude --continue"
assert_strategy_output \
"'claude --continue' is returned as-is (no duplication)" \
"claude --continue" "/some/dir" \
"claude --continue"
assert_strategy_output \
"'claude --resume <id>' is preserved" \
"claude --resume abc123" "/some/dir" \
"claude --resume abc123"
assert_strategy_output \
"'claude --model opus' preserves flags and appends --continue" \
"claude --model opus" "/some/dir" \
"claude --model opus --continue"
assert_strategy_output \
"multiple flags are preserved with --continue appended" \
"claude --verbose --model sonnet" "/some/dir" \
"claude --verbose --model sonnet --continue"
assert_strategy_output \
"--continue with other flags is returned as-is" \
"claude --model opus --continue" "/some/dir" \
"claude --model opus --continue"
assert_strategy_output \
"--resume with other flags is preserved" \
"claude --resume abc123 --verbose --model opus" "/some/dir" \
"claude --resume abc123 --verbose --model opus"
assert_strategy_output \
"flags without resume/continue get --continue appended" \
"claude --debug --allowedTools Bash Edit" "/some/dir" \
"claude --debug --allowedTools Bash Edit --continue"
# ---------- Wiring tests ----------
echo ""
echo "Wiring: variables.sh"
if grep -q "'.*claude.*'" "$VARIABLES"; then
pass "claude is in default_proc_list"
else
fail "claude is in default_proc_list" "not found in $VARIABLES"
fi
echo ""
echo "Wiring: resurrect.tmux"
if grep -q 'claude.*"session"' "$RESURRECT_TMUX"; then
pass "claude strategy registered as 'session'"
else
fail "claude strategy registered as 'session'" "not found in $RESURRECT_TMUX"
fi
# ---------- Strategy file sanity ----------
echo ""
echo "Sanity: strategy file"
if [ -x "$STRATEGY" ]; then
pass "claude_session.sh is executable"
else
fail "claude_session.sh is executable" "file is not executable"
fi
# ---------- Summary ----------
echo ""
total=$((pass_count + fail_count))
echo "Results: $pass_count/$total passed, $fail_count failed"
if [ "$fail_count" -gt 0 ]; then
exit 1
fi