tenseleyflow/sway / f10567b

Browse files

tests: cover ModelSpec.adapter normalization (tilde, relative, None) + update yaml-roundtrip assertion (B22)

Authored by espadonne
SHA
f10567bad1fc6b14f6ddf467e31c972361b91ceb
Parents
498b85e
Tree
2a67593

2 changed files

StatusFile+-
M tests/unit/test_model.py 18 0
M tests/unit/test_suite_spec.py 4 1
tests/unit/test_model.pymodified
@@ -42,6 +42,24 @@ class TestModelSpec:
4242
         spec = ModelSpec(base="x", adapter="/tmp/adapter")  # type: ignore[arg-type]
4343
         assert isinstance(spec.adapter, Path)
4444
 
45
+    def test_adapter_tilde_expanded(self) -> None:
46
+        """B22: ``~`` is expanded at spec-load time so backends see absolute paths."""
47
+        spec = ModelSpec(base="x", adapter="~/some/adapter")  # type: ignore[arg-type]
48
+        assert spec.adapter is not None
49
+        assert "~" not in str(spec.adapter)
50
+        assert spec.adapter.is_absolute()
51
+
52
+    def test_adapter_relative_resolved(self) -> None:
53
+        """B22: relative paths resolve against the current cwd."""
54
+        spec = ModelSpec(base="x", adapter="adapter/v1")  # type: ignore[arg-type]
55
+        assert spec.adapter is not None
56
+        assert spec.adapter.is_absolute()
57
+
58
+    def test_adapter_none_passthrough(self) -> None:
59
+        """B22 normalizer doesn't blow up on the default ``None``."""
60
+        spec = ModelSpec(base="x")
61
+        assert spec.adapter is None
62
+
4563
 
4664
 class TestLoadedModel:
4765
     def test_frozen_dataclass(self) -> None:
tests/unit/test_suite_spec.pymodified
@@ -82,4 +82,7 @@ class TestLoader:
8282
         path = tmp_path / "sway.yaml"
8383
         path.write_text(yaml.safe_dump(_minimum_valid()), encoding="utf-8")
8484
         spec = load_spec(path)
85
-        assert spec.models.ft.adapter == Path("/tmp/adapter")
85
+        # B22: ModelSpec.adapter is normalized via Path.resolve(), so
86
+        # symlinked roots (/tmp → /private/tmp on macOS) get followed.
87
+        # Compare against the resolved form so the test isn't host-dependent.
88
+        assert spec.models.ft.adapter == Path("/tmp/adapter").resolve()