41 lines
1.9 KiB
Python
41 lines
1.9 KiB
Python
"""Contract wiring for the read-only inventory source-binding preflight."""
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
ROOT = Path(__file__).resolve().parents[2]
|
|
|
|
|
|
class InventoryBindingDocumentationTests(unittest.TestCase):
|
|
def test_all_consumer_roles_require_binding_before_check_tests(self):
|
|
paths = [
|
|
'agents/impl/skills/gitea-issue-implementation/SKILL.md',
|
|
'agents/impl/skills/gitea-issue-rework/SKILL.md',
|
|
'agents/spec/skills/gitea-implementation-spec-review/SKILL.md',
|
|
'agents/review/skills/gitea-code-review/SKILL.md',
|
|
]
|
|
for path in paths:
|
|
with self.subTest(path=path):
|
|
text = (ROOT / path).read_text()
|
|
self.assertIn('test_inventory_binding.py', text)
|
|
self.assertIn('check-tests 이전', text)
|
|
self.assertIn('독립적으로 고정한 revision과 stage', text)
|
|
|
|
def test_canonical_reference_defines_exact_cli_and_scope_digest(self):
|
|
text = (ROOT / 'operations/repository-cache.md').read_text()
|
|
self.assertIn('### Test inventory Git source-binding preflight', text)
|
|
for value in ['--git-dir', '--expected-revision', '--expected-stage',
|
|
'gitea-agent.test-inventory-binding/v1', 'file_sha256',
|
|
'scope_paths', 'scope_sha256', 'ensure_ascii=True',
|
|
'/usr/bin/git', '/proc/self/fd/']:
|
|
self.assertIn(value, text)
|
|
|
|
def test_binding_limits_do_not_create_product_or_execution_requirements(self):
|
|
text = (ROOT / 'operations/repository-cache.md').read_text()
|
|
self.assertIn('named symbol·parameter 존재나 실제 collection 실행을 인증하지 않는다', text)
|
|
self.assertIn('현재 collection을 baseline으로 재명명하지 않는다', text)
|
|
self.assertIn('별도 checkout이나 전체 테스트 재실행을 요구하지 않는다', text)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|