27 lines
1.1 KiB
Python
27 lines
1.1 KiB
Python
"""A desktop check must not reinterpret unreadable channel config as main."""
|
|
from pathlib import Path
|
|
import os
|
|
import subprocess
|
|
import sys
|
|
|
|
import pytest
|
|
|
|
|
|
@pytest.mark.parametrize("content", ["update: [", "- not-a-mapping", b"\xff"])
|
|
def test_invalid_config_refuses_desktop_channel_probe(tmp_path, content):
|
|
home = tmp_path / "home"
|
|
home.mkdir()
|
|
config = home / "config.yaml"
|
|
config.write_bytes(content.encode() if isinstance(content, str) else content)
|
|
root = Path(__file__).resolve().parents[2]
|
|
result = subprocess.run(
|
|
[sys.executable, "-m", "hermes_cli.source_check", "--install-root", str(root), "--home", str(home)],
|
|
cwd=root, env={**os.environ, "HERMES_HOME": str(home), "HERMES_IGNORE_USER_CONFIG": "0"},
|
|
capture_output=True, text=True, timeout=30,
|
|
check=False,
|
|
)
|
|
assert result.returncode != 0, result.stdout + result.stderr
|
|
assert '"channel": "main"' not in result.stdout
|
|
assert "config" in result.stderr
|
|
assert config.read_bytes() == (content.encode() if isinstance(content, str) else content)
|