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:
shokollm
2026-03-29 14:10:45 +00:00
parent 5a9c3a87a9
commit b992949314
2 changed files with 41 additions and 10 deletions

View File

@@ -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"

View File

@@ -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 ""
# ============================================================================ # ============================================================================