feat(solver-bootstrap): step 0 — harness-self-tests

This commit is contained in:
KOKO\Mimi
2026-07-30 00:02:27 +09:00
parent 026c9eea7c
commit 051434b388
3 changed files with 172 additions and 0 deletions
+68
View File
@@ -0,0 +1,68 @@
import json
import pytest
from scripts.msvc_harness.config import ConfigError, load_config
def _write_config(root, data):
config_dir = root / ".harness"
config_dir.mkdir()
(config_dir / "config.json").write_text(
json.dumps(data),
encoding="utf-8",
)
def test_load_config_uses_defaults(tmp_path):
config = load_config(tmp_path)
assert config.version == 1
assert config.project_type == "auto"
assert config.cmake.source_dir == tmp_path.resolve()
assert config.cmake.binary_dir is None
assert config.tdd.test_roots == (
(tmp_path / "tests").resolve(),
(tmp_path / "test").resolve(),
)
def test_load_config_rejects_path_outside_repository(tmp_path):
root = tmp_path / "repo"
root.mkdir()
_write_config(
root,
{
"version": 1,
"cmake": {
"sourceDir": "../outside",
},
},
)
with pytest.raises(ConfigError, match="outside the repository"):
load_config(root)
@pytest.mark.parametrize(
"missing_field",
["binaryDir", "configurePreset", "buildPreset", "testPreset"],
)
def test_load_config_requires_all_cmake_preset_fields(tmp_path, missing_field):
cmake = {
"binaryDir": "out/build/windows-debug",
"configurePreset": "windows-debug",
"buildPreset": "windows-debug",
"testPreset": "windows-debug",
}
del cmake[missing_field]
_write_config(
tmp_path,
{
"version": 1,
"cmake": cmake,
},
)
with pytest.raises(ConfigError, match="must be specified together"):
load_config(tmp_path)