mirror of
https://github.com/azaion/loader.git
synced 2026-04-22 22:06:33 +00:00
9a0248af72
Made-with: Cursor
66 lines
2.1 KiB
Python
66 lines
2.1 KiB
Python
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()
|