Blacksite/scripts/editor/test_build_progress.py

48 lines
1.5 KiB
Python
Executable File

#!/usr/bin/env python3
import importlib.util
from pathlib import Path
import unittest
MODULE_PATH = Path(__file__).with_name("build_progress.py")
SPEC = importlib.util.spec_from_file_location("build_progress", MODULE_PATH)
assert SPEC is not None and SPEC.loader is not None
BUILD_PROGRESS = importlib.util.module_from_spec(SPEC)
SPEC.loader.exec_module(BUILD_PROGRESS)
class BuildProgressTests(unittest.TestCase):
def test_unique_crates_deduplicates_repeated_tree_entries(self) -> None:
output = "editor v0.1.0\nserde v1.0.0\nserde v1.0.0\n"
self.assertEqual(
BUILD_PROGRESS.unique_crates(output),
{"editor v0.1.0", "serde v1.0.0"},
)
def test_completed_crate_counts_each_package_once(self) -> None:
completed: set[str] = set()
message = {
"reason": "compiler-artifact",
"package_id": "path+file:///workspace#editor@0.1.0",
"target": {"name": "editor"},
}
self.assertEqual(
BUILD_PROGRESS.completed_crate(message, completed), (True, "editor")
)
self.assertEqual(
BUILD_PROGRESS.completed_crate(message, completed), (False, "")
)
def test_non_artifact_does_not_advance_progress(self) -> None:
completed: set[str] = set()
self.assertEqual(
BUILD_PROGRESS.completed_crate({"reason": "build-script-executed"}, completed),
(False, ""),
)
self.assertFalse(completed)
if __name__ == "__main__":
unittest.main()