|
1 | 1 | """Unit tests for project catalog-config id derivation and url canonicalization.""" |
2 | 2 | from __future__ import annotations |
3 | 3 |
|
| 4 | +import os |
4 | 5 | from pathlib import Path |
5 | 6 |
|
6 | 7 | import pytest |
@@ -72,6 +73,28 @@ def test_add_source_persists_absolute_local_path(tmp_path: Path, monkeypatch): |
72 | 73 | assert Path(source.url) == catalog.resolve() |
73 | 74 |
|
74 | 75 |
|
| 76 | +@pytest.mark.skipif(os.name == "nt", reason="POSIX path rewriting regression") |
| 77 | +@pytest.mark.parametrize("url", [r"C:\catalog.json", "C:/catalog.json"]) |
| 78 | +def test_add_source_preserves_foreign_windows_drive_path(tmp_path: Path, url: str): |
| 79 | + project = tmp_path / "proj" |
| 80 | + project.mkdir() |
| 81 | + |
| 82 | + source, status = cc.add_source( |
| 83 | + project, url, policy="install-allowed", priority=50 |
| 84 | + ) |
| 85 | + |
| 86 | + assert status == "added" |
| 87 | + assert source.url == url |
| 88 | + assert cc._read(project)[0]["url"] == url |
| 89 | + repeated, status = cc.add_source( |
| 90 | + project, url, policy="install-allowed", priority=50 |
| 91 | + ) |
| 92 | + assert status == "unchanged" |
| 93 | + assert repeated.url == url |
| 94 | + cc.remove_source(project, url) |
| 95 | + assert cc._read(project) == [] |
| 96 | + |
| 97 | + |
75 | 98 | def test_add_source_normalizes_existing_entry_for_idempotency(tmp_path: Path): |
76 | 99 | project = tmp_path / "proj" |
77 | 100 | (project / ".specify").mkdir(parents=True) |
|
0 commit comments