Files
timmy-home/tests/test_codebase_genome_status.py
2026-04-18 15:16:05 -04:00

114 lines
4.7 KiB
Python

from __future__ import annotations
import importlib.util
import json
import pathlib
import sys
import tempfile
import unittest
ROOT = pathlib.Path(__file__).resolve().parents[1]
SCRIPT = ROOT / 'scripts' / 'codebase_genome_status.py'
spec = importlib.util.spec_from_file_location('codebase_genome_status', str(SCRIPT))
mod = importlib.util.module_from_spec(spec)
sys.modules['codebase_genome_status'] = mod
spec.loader.exec_module(mod)
class TestCodebaseGenomeStatus(unittest.TestCase):
def test_fetch_org_repo_names_ignores_archived_and_dot_repos(self):
payloads = [
[
{'name': 'timmy-home', 'archived': False},
{'name': '.profile', 'archived': False},
{'name': 'old-repo', 'archived': True},
],
[],
]
class FakeResponse:
def __init__(self, payload):
self.payload = json.dumps(payload).encode('utf-8')
def read(self):
return self.payload
def __enter__(self):
return self
def __exit__(self, exc_type, exc, tb):
return False
def fake_urlopen(req, timeout=30):
return FakeResponse(payloads.pop(0))
with tempfile.TemporaryDirectory() as tmp:
token_file = pathlib.Path(tmp) / 'token'
token_file.write_text('demo-token')
from unittest.mock import patch
with patch('codebase_genome_status.urllib.request.urlopen', side_effect=fake_urlopen):
repos = mod.fetch_org_repo_names('Timmy_Foundation', 'https://forge.example.com', token_file)
self.assertEqual(repos, ['timmy-home'])
def test_collects_artifacts_tests_and_duplicates(self):
with tempfile.TemporaryDirectory() as tmp:
root = pathlib.Path(tmp)
(root / 'GENOME.md').write_text('# host genome\n')
(root / 'the-door-GENOME.md').write_text('# the-door\n')
(root / 'genomes' / 'the-nexus').mkdir(parents=True)
(root / 'genomes' / 'the-nexus' / 'GENOME.md').write_text('# the-nexus\n')
(root / 'genomes' / 'burn-fleet').mkdir(parents=True)
(root / 'genomes' / 'burn-fleet' / 'GENOME.md').write_text('# burn-fleet\n')
(root / 'genomes' / 'burn-fleet-GENOME.md').write_text('# burn-fleet duplicate\n')
(root / 'tests' / 'docs').mkdir(parents=True)
(root / 'tests' / 'docs' / 'test_the_door_genome.py').write_text('')
(root / 'tests' / 'test_the_nexus_genome.py').write_text('')
(root / 'tests' / 'test_codebase_genome_pipeline.py').write_text('')
summary = mod.build_status_summary(
repo_root=root,
expected_repos=['timmy-home', 'the-door', 'the-nexus', 'burn-fleet', 'wolf'],
state={'last_repo': 'the-nexus'},
)
self.assertEqual(summary['total_expected_repos'], 5)
self.assertEqual(summary['artifact_count'], 4)
self.assertEqual(summary['tested_artifact_count'], 3)
self.assertEqual(summary['next_uncovered_repo'], 'wolf')
self.assertEqual(summary['last_repo'], 'the-nexus')
self.assertEqual(summary['artifacts']['the-door']['has_test'], True)
self.assertEqual(summary['artifacts']['the-nexus']['has_test'], True)
self.assertEqual(summary['artifacts']['timmy-home']['has_test'], True)
self.assertIn('burn-fleet', summary['duplicates'])
self.assertEqual(summary['missing_repos'], ['wolf'])
def test_render_markdown_contains_required_sections(self):
summary = {
'generated_at': '2026-04-17T10:00:00Z',
'total_expected_repos': 3,
'artifact_count': 2,
'tested_artifact_count': 1,
'last_repo': 'the-door',
'next_uncovered_repo': 'wolf',
'missing_repos': ['wolf'],
'duplicates': {'burn-fleet': ['genomes/burn-fleet/GENOME.md', 'genomes/burn-fleet-GENOME.md']},
'artifacts': {
'timmy-home': {'artifact_paths': ['GENOME.md'], 'has_test': True},
'the-door': {'artifact_paths': ['the-door-GENOME.md'], 'has_test': False},
},
}
rendered = mod.render_markdown(summary)
for snippet in [
'# Codebase Genome Status',
'## Summary',
'## Coverage Matrix',
'## Missing Repo Artifacts',
'## Duplicate Artifact Paths',
'the-door-GENOME.md',
'genomes/burn-fleet/GENOME.md',
'wolf',
]:
self.assertIn(snippet, rendered)
if __name__ == '__main__':
unittest.main()