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
|
echo "Provide a message as second argument: kugetsu resume $session_id <message>" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
else
|
||||||
|
echo "Using provided message: $message"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
set_state "$session_dir" "used"
|
set_state "$session_dir" "used"
|
||||||
|
|||||||
@@ -1,6 +1,12 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# kugetsu test suite
|
# kugetsu test suite
|
||||||
# Run with: bash skills/kugetsu/tests/test-kugetsu.sh
|
# 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
|
set -euo pipefail
|
||||||
|
|
||||||
@@ -9,12 +15,23 @@ TEST_SESSION_PREFIX="kugetsu-test-"
|
|||||||
PASS=0
|
PASS=0
|
||||||
FAIL=0
|
FAIL=0
|
||||||
|
|
||||||
cleanup() {
|
cleanup_sessions() {
|
||||||
for dir in ~/.kugetsu/sessions/${TEST_SESSION_PREFIX}*; do
|
for dir in ~/.kugetsu/sessions/${TEST_SESSION_PREFIX}*; do
|
||||||
[ -d "$dir" ] && rm -rf "$dir" 2>/dev/null || true
|
[ -d "$dir" ] && rm -rf "$dir" 2>/dev/null || true
|
||||||
done
|
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() {
|
pass() {
|
||||||
echo "✅ PASS: $1"
|
echo "✅ PASS: $1"
|
||||||
PASS=$((PASS + 1))
|
PASS=$((PASS + 1))
|
||||||
@@ -100,6 +117,7 @@ if echo "$OUTPUT" | grep -q "Auto-filled message: continue this task"; then
|
|||||||
else
|
else
|
||||||
fail "resume auto-fills stored message"
|
fail "resume auto-fills stored message"
|
||||||
fi
|
fi
|
||||||
|
cleanup
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# Test 8: Resume with provided message overrides
|
# 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
|
else
|
||||||
fail "resume uses provided message over auto-fill: $OUTPUT"
|
fail "resume uses provided message over auto-fill: $OUTPUT"
|
||||||
fi
|
fi
|
||||||
|
cleanup
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# Test 9: Resume idle session fails
|
# Test 9: Resume idle session fails
|
||||||
echo "--- Test: 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
|
mkdir -p ~/.kugetsu/sessions/${TEST_SESSION_PREFIX}idle-test
|
||||||
echo "idle" > ~/.kugetsu/sessions/${TEST_SESSION_PREFIX}idle-test/state
|
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
|
OUTPUT=$(timeout 5 bash -c "$KUGETSU resume ${TEST_SESSION_PREFIX}idle-test" 2>&1 || true)
|
||||||
fail "resume idle session fails with message"
|
if echo "$OUTPUT" | grep -q "cannot be resumed"; then
|
||||||
else
|
|
||||||
pass "resume idle session fails with message"
|
pass "resume idle session fails with message"
|
||||||
|
else
|
||||||
|
echo "DEBUG: $OUTPUT"
|
||||||
|
fail "resume idle session fails with message"
|
||||||
fi
|
fi
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# Test 10: Resume non-existent session fails
|
# Test 10: Resume non-existent session fails
|
||||||
echo "--- Test: 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
|
rm -rf ~/.kugetsu/sessions/${TEST_SESSION_PREFIX}nonexistent 2>/dev/null
|
||||||
fail "resume non-existent session fails"
|
OUTPUT=$(timeout 5 bash -c "$KUGETSU resume ${TEST_SESSION_PREFIX}nonexistent" 2>&1 || true)
|
||||||
else
|
if echo "$OUTPUT" | grep -q "not found"; then
|
||||||
pass "resume non-existent session fails"
|
pass "resume non-existent session fails"
|
||||||
|
else
|
||||||
|
echo "DEBUG: $OUTPUT"
|
||||||
|
fail "resume non-existent session fails"
|
||||||
fi
|
fi
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# Test 11: Stop non-used session fails
|
# Test 11: Stop non-used session fails
|
||||||
echo "--- Test: 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
|
mkdir -p ~/.kugetsu/sessions/${TEST_SESSION_PREFIX}notused
|
||||||
echo "idle" > ~/.kugetsu/sessions/${TEST_SESSION_PREFIX}notused/state
|
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
|
OUTPUT=$(timeout 5 bash -c "$KUGETSU stop ${TEST_SESSION_PREFIX}notused" 2>&1 || true)
|
||||||
fail "stop non-used session fails"
|
if echo "$OUTPUT" | grep -q "not in use"; then
|
||||||
else
|
|
||||||
pass "stop non-used session fails"
|
pass "stop non-used session fails"
|
||||||
|
else
|
||||||
|
echo "DEBUG: $OUTPUT"
|
||||||
|
fail "stop non-used session fails"
|
||||||
fi
|
fi
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
@@ -161,6 +189,7 @@ if echo "$OUTPUT" | grep -q "Resuming instead"; then
|
|||||||
else
|
else
|
||||||
fail "start on left session resumes"
|
fail "start on left session resumes"
|
||||||
fi
|
fi
|
||||||
|
cleanup
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
|
|||||||
Reference in New Issue
Block a user