|
| 1 | +#!/usr/bin/env bash |
| 2 | +# Agent CLI session restore: the claude/codex restore strategies rewrite a bare |
| 3 | +# launch into a resume, preserve an explicit resume, and are wired as defaults. |
| 4 | + |
| 5 | +source "$(dirname "$0")/helpers/test_helpers.sh" |
| 6 | + |
| 7 | +CLAUDE="$PLUGIN_DIR/strategies/claude_session.sh" |
| 8 | +CODEX="$PLUGIN_DIR/strategies/codex_session.sh" |
| 9 | + |
| 10 | +assert_strategy() { # script desc input expected |
| 11 | + assert_eq "$("$1" "$3" "/some/dir")" "$4" "$2" |
| 12 | +} |
| 13 | + |
| 14 | +# --- claude_session.sh --- |
| 15 | +assert_strategy "$CLAUDE" "bare claude gets --continue" \ |
| 16 | + "claude" "claude --continue" |
| 17 | +assert_strategy "$CLAUDE" "claude flags preserved, --continue appended" \ |
| 18 | + "claude --model opus" "claude --model opus --continue" |
| 19 | +assert_strategy "$CLAUDE" "claude --continue not duplicated" \ |
| 20 | + "claude --continue" "claude --continue" |
| 21 | +assert_strategy "$CLAUDE" "claude --resume <id> preserved" \ |
| 22 | + "claude --resume abc123" "claude --resume abc123" |
| 23 | +assert_strategy "$CLAUDE" "claude short -c preserved" \ |
| 24 | + "claude -c" "claude -c" |
| 25 | +assert_strategy "$CLAUDE" "claude short -r <id> preserved" \ |
| 26 | + "claude -r abc123" "claude -r abc123" |
| 27 | + |
| 28 | +# --- codex_session.sh --- |
| 29 | +assert_strategy "$CODEX" "bare codex resumes last" \ |
| 30 | + "codex" "codex resume --last" |
| 31 | +assert_strategy "$CODEX" "codex with prompt resumes last" \ |
| 32 | + "codex fix the bug" "codex resume --last" |
| 33 | +assert_strategy "$CODEX" "codex --model flag still resumes last" \ |
| 34 | + "codex --model gpt-5" "codex resume --last" |
| 35 | +assert_strategy "$CODEX" "codex resume returned as-is" \ |
| 36 | + "codex resume" "codex resume" |
| 37 | +assert_strategy "$CODEX" "codex resume --last returned as-is" \ |
| 38 | + "codex resume --last" "codex resume --last" |
| 39 | +assert_strategy "$CODEX" "codex resume <id> preserved" \ |
| 40 | + "codex resume abc123" "codex resume abc123" |
| 41 | +assert_strategy "$CODEX" "codex fork <id> preserved" \ |
| 42 | + "codex fork abc123" "codex fork abc123" |
| 43 | + |
| 44 | +# --- wiring (default proc list + default strategy registration) --- |
| 45 | +source "$PLUGIN_DIR/scripts/variables.sh" |
| 46 | +assert_contains "$default_proc_list" "claude" "claude in default_proc_list" |
| 47 | +assert_contains "$default_proc_list" "codex" "codex in default_proc_list" |
| 48 | + |
| 49 | +setup |
| 50 | +load_plugin |
| 51 | +strategies="$(tmuxp show-options -g 2>/dev/null)" |
| 52 | +teardown |
| 53 | +assert_contains "$strategies" "${restore_process_strategy_option}claude session" \ |
| 54 | + "claude registered as 'session' strategy" |
| 55 | +assert_contains "$strategies" "${restore_process_strategy_option}codex session" \ |
| 56 | + "codex registered as 'session' strategy" |
| 57 | + |
| 58 | +# --- strategy files are executable --- |
| 59 | +[ -x "$CLAUDE" ] && _ok "claude_session.sh executable" || _ko "claude_session.sh executable" |
| 60 | +[ -x "$CODEX" ] && _ok "codex_session.sh executable" || _ko "codex_session.sh executable" |
| 61 | + |
| 62 | +finish |
0 commit comments