mirror of
https://github.com/razzant/ouroboros.git
synced 2026-10-03 04:07:04 +00:00
34 lines
1.6 KiB
Python
34 lines
1.6 KiB
Python
"""Test child HOME isolation without moving the parent live-data guard."""
|
|
import pathlib
|
|
import sys
|
|
|
|
import pytest
|
|
|
|
from tests.test_tool_api_v2_public_surface import _registry_under_fake_home
|
|
|
|
|
|
@pytest.mark.serial
|
|
@pytest.mark.parametrize("tool", ["run_command", "run_script"])
|
|
def test_fake_home_fixture_binds_the_actual_child_environment(tmp_path, monkeypatch, tool):
|
|
monkeypatch.setenv("OUROBOROS_SAFETY_MODE", "off")
|
|
registry, _repo, data, _desktop = _registry_under_fake_home(tmp_path, monkeypatch)
|
|
home = pathlib.Path.home()
|
|
expected = {"HOME": str(home), "USERPROFILE": str(home),
|
|
"OUROBOROS_DATA_DIR": str(data), "OUROBOROS_SETTINGS_PATH": str(data / "settings.json")}
|
|
body = "import os\nfor key in " + repr(list(expected)) + ": print(key + '=' + os.environ[key])\n"
|
|
args = {"cmd": [sys.executable, "-c", body]} if tool == "run_command" else {"script": body}
|
|
result = registry.execute(tool, {**args, "cwd": "task_drive"})
|
|
assert "exit_code=0" in result, result
|
|
for key, value in expected.items():
|
|
assert key + "=" + value in result, result
|
|
|
|
|
|
def test_fake_home_fixture_preserves_the_parent_live_data_guard(tmp_path, monkeypatch):
|
|
import os
|
|
from ouroboros.utils import assert_test_data_path
|
|
|
|
parent_home = pathlib.Path(os.path.expanduser("~"))
|
|
_registry_under_fake_home(tmp_path, monkeypatch)
|
|
assert pathlib.Path(os.path.expanduser("~")) == parent_home
|
|
with pytest.raises(RuntimeError, match="PYTEST_LIVE_DATA_WRITE_BLOCKED"):
|
|
assert_test_data_path(parent_home / "Ouroboros/data/settings.json")
|