Test the spec guard and the linkage linter #44
Notifications
Due Date
No due date set.
Blocks
Depends on
#45 Adopt OpenSpec as the change workflow
claude-skills/marketplace
#41 Lint the spec-to-test linkage
claude-skills/marketplace
#42 Gate OpenSpec changes onto a worktree
claude-skills/marketplace
Reference: claude-skills/marketplace#44
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Покрыть тестами
hooks/spec-guard.shи линтер связки спека ↔ тест-кейс ↔ тест.Spec
AGENTS.mdDepends on
Motivation
У хуков в этой репе нет прецедента тестирования:
hooks/tea-guard.shне покрыт,хотя это единственная деталь, которая молча переписывает чужую команду.
spec-guard.shопаснее: он не только блокирует, но и создаёт worktree.Ошибка в определении текущей ветки или в проверке грязи ломает каждый propose, и
ломает молча — модель получит блок и уйдёт делать что-то другое.
Линтер держит формат TC в одиночку — openspec, как показала проба, не проверяет
внутренность сценария вообще. Непокрытый линтер означает, что связку не
проверяет никто.
Test cases
Хук:
openspecне найден в PATH → passthroughopenspec/→ passthroughopenspec new change x→ worktree создан, exit 2, stderrсодержит путь worktree и вызов
EnterWorktreefeat/xуже существует → exit 2, worktree не создан../tea-worktrees/xзанят → exit 2, worktree не созданopenspec archiveне на main → exit 2openspec archiveна чистом main → passthroughЛинтер:
**TEST**→ exit 1 с путём и номером строки**WHEN**или без**THEN**→ exit 1**TEST**в одном сценарии → exit 1TC-[A-Z]+-\d{3}→ exit 1tests.md→ exit 1tests.md, отсутствует в docstring теста → exit 1Acceptance criteria
tests/, иpython3 -m unittest discover -s testsзелёныйtempfile.TemporaryDirectory()и запускает хук подпроцессом, подаваяpayload в stdin
tmp/issues/иtmp/wiki/записей в его
git worktree listunittest, без зависимостейConstraints
hooks/tea-guard.sh. Долг реальный, но этодругой issue и другой хук.
openspecкак процесса. Тестируемсвой код, не пакет.