fix: resolve test failures - all 12 tests pass
- Fix bash pipe/exit status issue with set -euo pipefail - Change from: if ! cmd | grep -q pattern - Change to: OUTPUT=$(cmd || true); if echo "$OUTPUT" | grep -q pattern - Add test isolation cleanup (rm specific session, not all) - Add 'Using provided message:' output to kugetsu resume - Fix grep pattern: 'cannot be resumed' not 'not resumable'
This commit is contained in:
@@ -227,6 +227,8 @@ cmd_resume() {
|
||||
echo "Provide a message as second argument: kugetsu resume $session_id <message>" >&2
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "Using provided message: $message"
|
||||
fi
|
||||
|
||||
set_state "$session_dir" "used"
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
#!/bin/bash
|
||||
# kugetsu test suite
|
||||
# Run with: bash skills/kugetsu/tests/test-kugetsu.sh
|
||||
#
|
||||
# Memory management approach:
|
||||
# - Sequential test execution (no parallel)
|
||||
# - Cleanup between tests that spawn opencode
|
||||
# - No hard memory cap (ulimit -v breaks Bun/opencode)
|
||||
# - If OOM occurs, it is a known failure mode
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
@@ -9,12 +15,23 @@ TEST_SESSION_PREFIX="kugetsu-test-"
|
||||
PASS=0
|
||||
FAIL=0
|
||||
|
||||
cleanup() {
|
||||
cleanup_sessions() {
|
||||
for dir in ~/.kugetsu/sessions/${TEST_SESSION_PREFIX}*; do
|
||||
[ -d "$dir" ] && rm -rf "$dir" 2>/dev/null || true
|
||||
done
|
||||
}
|
||||
|
||||
cleanup_opencode() {
|
||||
pkill -f "opencode.*${TEST_SESSION_PREFIX}" 2>/dev/null || true
|
||||
pkill -f "kugetsu.*${TEST_SESSION_PREFIX}" 2>/dev/null || true
|
||||
sleep 0.5
|
||||
}
|
||||
|
||||
cleanup() {
|
||||
cleanup_sessions
|
||||
cleanup_opencode
|
||||
}
|
||||
|
||||
pass() {
|
||||
echo "✅ PASS: $1"
|
||||
PASS=$((PASS + 1))
|
||||
@@ -100,6 +117,7 @@ if echo "$OUTPUT" | grep -q "Auto-filled message: continue this task"; then
|
||||
else
|
||||
fail "resume auto-fills stored message"
|
||||
fi
|
||||
cleanup
|
||||
echo ""
|
||||
|
||||
# Test 8: Resume with provided message overrides
|
||||
@@ -114,38 +132,48 @@ if echo "$OUTPUT" | grep -q "new message" && ! echo "$OUTPUT" | grep -q "Auto-fi
|
||||
else
|
||||
fail "resume uses provided message over auto-fill: $OUTPUT"
|
||||
fi
|
||||
cleanup
|
||||
echo ""
|
||||
|
||||
# Test 9: Resume idle session fails
|
||||
echo "--- Test: resume idle session fails ---"
|
||||
rm -rf ~/.kugetsu/sessions/${TEST_SESSION_PREFIX}idle-test 2>/dev/null
|
||||
mkdir -p ~/.kugetsu/sessions/${TEST_SESSION_PREFIX}idle-test
|
||||
echo "idle" > ~/.kugetsu/sessions/${TEST_SESSION_PREFIX}idle-test/state
|
||||
|
||||
if ! timeout 5 bash -c "$KUGETSU resume ${TEST_SESSION_PREFIX}idle-test" 2>&1 | grep -q "not resumable"; then
|
||||
fail "resume idle session fails with message"
|
||||
else
|
||||
OUTPUT=$(timeout 5 bash -c "$KUGETSU resume ${TEST_SESSION_PREFIX}idle-test" 2>&1 || true)
|
||||
if echo "$OUTPUT" | grep -q "cannot be resumed"; then
|
||||
pass "resume idle session fails with message"
|
||||
else
|
||||
echo "DEBUG: $OUTPUT"
|
||||
fail "resume idle session fails with message"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# Test 10: Resume non-existent session fails
|
||||
echo "--- Test: resume non-existent session fails ---"
|
||||
if ! timeout 5 bash -c "$KUGETSU resume ${TEST_SESSION_PREFIX}nonexistent" 2>&1 | grep -q "not found"; then
|
||||
fail "resume non-existent session fails"
|
||||
else
|
||||
rm -rf ~/.kugetsu/sessions/${TEST_SESSION_PREFIX}nonexistent 2>/dev/null
|
||||
OUTPUT=$(timeout 5 bash -c "$KUGETSU resume ${TEST_SESSION_PREFIX}nonexistent" 2>&1 || true)
|
||||
if echo "$OUTPUT" | grep -q "not found"; then
|
||||
pass "resume non-existent session fails"
|
||||
else
|
||||
echo "DEBUG: $OUTPUT"
|
||||
fail "resume non-existent session fails"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# Test 11: Stop non-used session fails
|
||||
echo "--- Test: stop non-used session fails ---"
|
||||
rm -rf ~/.kugetsu/sessions/${TEST_SESSION_PREFIX}notused 2>/dev/null
|
||||
mkdir -p ~/.kugetsu/sessions/${TEST_SESSION_PREFIX}notused
|
||||
echo "idle" > ~/.kugetsu/sessions/${TEST_SESSION_PREFIX}notused/state
|
||||
|
||||
if ! timeout 5 bash -c "$KUGETSU stop ${TEST_SESSION_PREFIX}notused" 2>&1 | grep -q "not in use"; then
|
||||
fail "stop non-used session fails"
|
||||
else
|
||||
OUTPUT=$(timeout 5 bash -c "$KUGETSU stop ${TEST_SESSION_PREFIX}notused" 2>&1 || true)
|
||||
if echo "$OUTPUT" | grep -q "not in use"; then
|
||||
pass "stop non-used session fails"
|
||||
else
|
||||
echo "DEBUG: $OUTPUT"
|
||||
fail "stop non-used session fails"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
@@ -161,6 +189,7 @@ if echo "$OUTPUT" | grep -q "Resuming instead"; then
|
||||
else
|
||||
fail "start on left session resumes"
|
||||
fi
|
||||
cleanup
|
||||
echo ""
|
||||
|
||||
# ============================================================================
|
||||
|
||||
Reference in New Issue
Block a user