Files
evermind-ai--everos/tests/unit/test_entrypoints/test_cli/test_init_command.py
T
wehub-resource-sync 6c9c7fe7f3
CI / integration tests (3.13) (push) Failing after 1s
Commit lint / pull request title (push) Has been skipped
Docs / links (push) Failing after 1s
CI / unit tests (3.13) (push) Failing after 1s
CI / lint (push) Failing after 1s
CI / integration tests (push) Failing after 1s
CI / package build (push) Failing after 1s
Commit lint / commit messages (push) Failing after 1s
CI / unit tests (push) Failing after 1s
chore: import upstream snapshot with attribution
2026-07-13 12:24:24 +08:00

118 lines
4.0 KiB
Python

"""``everos init`` — CLI behavior + edge cases.
Covers:
- default ``~/.everos/`` root with ``everos.toml`` + ``ome.toml``
- ``--root <path>`` creates target dir and both files
- ``--force`` overwrites; without it the command exits 1
- ``--print`` writes everos.toml template to stdout, NOT to disk
"""
from __future__ import annotations
import os
from pathlib import Path
import pytest
from typer.testing import CliRunner
from everos.entrypoints.cli.main import app
@pytest.fixture
def runner() -> CliRunner:
return CliRunner()
@pytest.fixture(autouse=True)
def _isolate_env(monkeypatch: pytest.MonkeyPatch, tmp_path: Path) -> None:
"""Strip EVEROS_* env vars and move CWD away from any config file."""
for key in list(os.environ):
if key.startswith("EVEROS_"):
monkeypatch.delenv(key, raising=False)
monkeypatch.chdir(tmp_path)
def test_root_creates_both_toml_files(runner: CliRunner, tmp_path: Path) -> None:
target = tmp_path / "myroot"
result = runner.invoke(app, ["init", "--root", str(target)])
assert result.exit_code == 0, result.output
assert (target / "everos.toml").is_file()
assert (target / "ome.toml").is_file()
def test_created_everos_toml_matches_shipped_template(
runner: CliRunner, tmp_path: Path
) -> None:
target = tmp_path / "myroot"
runner.invoke(app, ["init", "--root", str(target)])
template = Path(__file__).resolve().parents[4] / "src/everos/config/default.toml"
assert (target / "everos.toml").read_bytes() == template.read_bytes()
def test_created_ome_toml_matches_shipped_template(
runner: CliRunner, tmp_path: Path
) -> None:
target = tmp_path / "myroot"
runner.invoke(app, ["init", "--root", str(target)])
template = (
Path(__file__).resolve().parents[4] / "src/everos/config/default_ome.toml"
)
assert (target / "ome.toml").read_bytes() == template.read_bytes()
def test_refuses_overwrite_without_force(runner: CliRunner, tmp_path: Path) -> None:
target = tmp_path / "myroot"
target.mkdir()
(target / "everos.toml").write_text("# user-edited\n")
(target / "ome.toml").write_text("# user-edited\n")
result = runner.invoke(app, ["init", "--root", str(target)])
assert result.exit_code == 1
# Original content must be preserved.
assert (target / "everos.toml").read_text() == "# user-edited\n"
def test_force_overwrites(runner: CliRunner, tmp_path: Path) -> None:
target = tmp_path / "myroot"
target.mkdir()
(target / "everos.toml").write_text("# user-edited\n")
(target / "ome.toml").write_text("# user-edited\n")
result = runner.invoke(app, ["init", "--root", str(target), "--force"])
assert result.exit_code == 0
# Content is now the shipped template, not the user edit.
assert (target / "everos.toml").read_text() != "# user-edited\n"
def test_print_writes_stdout_not_disk(runner: CliRunner, tmp_path: Path) -> None:
result = runner.invoke(app, ["init", "--print"])
assert result.exit_code == 0
# Output contains shipped default.toml content.
assert "[sqlite]" in result.output
assert "[api]" in result.output
# No disk side-effect in tmp cwd.
assert not (tmp_path / "everos.toml").exists()
def test_partial_overwrite_skips_existing(runner: CliRunner, tmp_path: Path) -> None:
"""When only one file exists, only the missing file is created."""
target = tmp_path / "myroot"
target.mkdir()
(target / "everos.toml").write_text("# user-edited\n")
result = runner.invoke(app, ["init", "--root", str(target)])
assert result.exit_code == 0
# everos.toml preserved, ome.toml created.
assert (target / "everos.toml").read_text() == "# user-edited\n"
assert (target / "ome.toml").is_file()
def test_output_shows_next_steps(runner: CliRunner, tmp_path: Path) -> None:
target = tmp_path / "myroot"
result = runner.invoke(app, ["init", "--root", str(target)])
assert "Next steps" in result.output
assert "everos server start" in result.output
# ``os`` imported above just to keep ruff from complaining; remove if Ruff
# F401 hits.
_ = os