66 lines
2.1 KiB
Python
66 lines
2.1 KiB
Python
from __future__ import annotations
|
|
|
|
import importlib.util
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
|
|
MODULE_PATH = Path(__file__).with_name("orca-nono-profile.py")
|
|
SPEC = importlib.util.spec_from_file_location("orca_nono_profile", MODULE_PATH)
|
|
if SPEC is None or SPEC.loader is None:
|
|
raise RuntimeError(f"Could not load runner resolver from {MODULE_PATH}")
|
|
MODULE = importlib.util.module_from_spec(SPEC)
|
|
SPEC.loader.exec_module(MODULE)
|
|
|
|
|
|
class ResolveProfileTests(unittest.TestCase):
|
|
def setUp(self) -> None:
|
|
self.mapping = {
|
|
"defaultProfile": "pi-orca-local",
|
|
"projectRoots": {
|
|
"/srv/work": "pi-work",
|
|
"/srv/work/special": "pi-special",
|
|
},
|
|
"projects": {
|
|
"/srv/work/special/override": "pi-override",
|
|
},
|
|
}
|
|
|
|
def test_exact_project_mapping_wins(self) -> None:
|
|
self.assertEqual(
|
|
MODULE.resolve_profile(self.mapping, Path("/srv/work/special/override")),
|
|
("pi-override", "project"),
|
|
)
|
|
|
|
def test_longest_project_root_wins(self) -> None:
|
|
self.assertEqual(
|
|
MODULE.resolve_profile(self.mapping, Path("/srv/work/special/repository")),
|
|
("pi-special", "project-root"),
|
|
)
|
|
|
|
def test_project_root_matches_descendants(self) -> None:
|
|
self.assertEqual(
|
|
MODULE.resolve_profile(self.mapping, Path("/srv/work/code/repository")),
|
|
("pi-work", "project-root"),
|
|
)
|
|
|
|
def test_linked_worktree_uses_its_launch_path_root(self) -> None:
|
|
self.assertEqual(
|
|
MODULE.resolve_profile(
|
|
self.mapping,
|
|
Path("/home/jb/code/main-checkout"),
|
|
Path("/srv/work/worktrees/feature"),
|
|
),
|
|
("pi-work", "project-root"),
|
|
)
|
|
|
|
def test_project_root_does_not_match_similar_prefix(self) -> None:
|
|
self.assertEqual(
|
|
MODULE.resolve_profile(self.mapping, Path("/srv/worker/repository")),
|
|
("pi-orca-local", "default"),
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|