import os import subprocess import tempfile import unittest from version_collector import VersionCollector class TestVersionCollector(unittest.TestCase): def test_ac1_version_collector_reads_local_state(self): # Arrange tmp = tempfile.mkdtemp() open(os.path.join(tmp, "azaion-2026-03-10.trt"), "wb").close() def fake_run(cmd, **kwargs): if cmd[:3] == ["docker", "images", "--format"]: return subprocess.CompletedProcess( cmd, 0, stdout="azaion/annotations:arm64_2026-03-01\n", stderr="", ) raise AssertionError(f"unexpected cmd {cmd}") vc = VersionCollector(tmp, subprocess_run=fake_run) # Act got = vc.collect_as_dicts() # Assert self.assertEqual( got, [ {"resource_name": "detection_model", "version": "2026-03-10"}, {"resource_name": "annotations", "version": "arm64_2026-03-01"}, ], ) def test_ac6_cache_invalidates_after_changes(self): # Arrange tmp = tempfile.mkdtemp() open(os.path.join(tmp, "azaion-2026-01-01.trt"), "wb").close() def fake_run(cmd, **kwargs): if cmd[:3] == ["docker", "images", "--format"]: return subprocess.CompletedProcess(cmd, 0, stdout="", stderr="") raise AssertionError(f"unexpected cmd {cmd}") vc = VersionCollector(tmp, subprocess_run=fake_run) first = vc.collect_as_dicts() open(os.path.join(tmp, "azaion-2026-02-01.trt"), "wb").close() second_cached = vc.collect_as_dicts() vc.invalidate() third = vc.collect_as_dicts() # Assert self.assertEqual( first, [{"resource_name": "detection_model", "version": "2026-01-01"}], ) self.assertEqual(second_cached, first) self.assertEqual( third, [{"resource_name": "detection_model", "version": "2026-02-01"}], ) if __name__ == "__main__": unittest.main()