41 lines
1.8 KiB
Python
41 lines
1.8 KiB
Python
#!/usr/bin/env python3
|
|
import importlib.util
|
|
import json
|
|
from pathlib import Path
|
|
import subprocess
|
|
import sys
|
|
import tempfile
|
|
import unittest
|
|
|
|
SCRIPT = Path(__file__).with_name('tcs_mother_root_agent.py')
|
|
ROOT = SCRIPT.parents[2]
|
|
SPEC = importlib.util.spec_from_file_location('tcs_root_agent', SCRIPT)
|
|
MODULE = importlib.util.module_from_spec(SPEC)
|
|
SPEC.loader.exec_module(MODULE)
|
|
|
|
|
|
class RootAgentTest(unittest.TestCase):
|
|
def test_worktree_map_has_valid_roots(self):
|
|
MODULE.validate_root(json.loads((ROOT / 'routing/tcs-mother-root-dynamic-navigation-map.json').read_text()))
|
|
|
|
def test_old_and_quarantine_paths_fail(self):
|
|
for value in ['../escape', 'routing/../../escape', 'WORK-工作区/guanghu-ice-heart/map.json', 'isolation/old/map.json']:
|
|
with self.assertRaises(MODULE.RootError):
|
|
MODULE.safe_relative(value)
|
|
|
|
def test_committed_refresh_status_resolve_and_history_reject(self):
|
|
with tempfile.TemporaryDirectory() as temp:
|
|
base = Path(temp)
|
|
output, pointer = base / 'state', base / 'TCS-ROOT.json'
|
|
refresh = MODULE.refresh(ROOT, output, pointer, 'test')
|
|
self.assertEqual(refresh['outcome'], 'PASS')
|
|
self.assertEqual(MODULE.status(ROOT, output, pointer)['state'], 'TCS_ROOT_CURRENT_VERIFIED')
|
|
self.assertEqual(MODULE.resolve(output, 'TCS-0002∞', None)['result']['object_kind'], 'GUANGHU_HUMAN_TEAM_BODY_ROOT')
|
|
self.assertEqual(MODULE.resolve(output, 'TCS-0002', 'GUANGHU_HUMAN_TEAM_BODY_ROOT')['state'], 'TYPED_ALIAS_RESOLVED')
|
|
self.assertEqual(MODULE.resolve(output, 'GLW-SYS-0001', None)['state'], 'HISTORY_ONLY_NO_CURRENT_ROUTE')
|
|
again = MODULE.refresh(ROOT, output, pointer, 'test')
|
|
self.assertEqual(again['state'], 'CURRENT_IDEMPOTENT')
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|