feat: consolidate legacy workflows into gyxx-flow
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
PROJECT_ROOT = Path(__file__).resolve().parents[1]
|
||||
SOURCE_ROOT = PROJECT_ROOT / "src"
|
||||
|
||||
|
||||
def _environment_with_source() -> dict[str, str]:
|
||||
environment = os.environ.copy()
|
||||
existing_pythonpath = environment.get("PYTHONPATH")
|
||||
paths = [str(SOURCE_ROOT)]
|
||||
if existing_pythonpath:
|
||||
paths.append(existing_pythonpath)
|
||||
environment["PYTHONPATH"] = os.pathsep.join(paths)
|
||||
return environment
|
||||
|
||||
|
||||
def _assert_successful_help(result: subprocess.CompletedProcess[str]) -> None:
|
||||
assert result.returncode == 0, result.stderr
|
||||
assert "usage:" in result.stdout.lower()
|
||||
assert "GYXX Flow" in result.stdout
|
||||
|
||||
|
||||
def test_python_module_help_has_no_filesystem_side_effects(tmp_path: Path) -> None:
|
||||
result = subprocess.run(
|
||||
[sys.executable, "-m", "gyxx_flow", "--help"],
|
||||
cwd=tmp_path,
|
||||
env=_environment_with_source(),
|
||||
capture_output=True,
|
||||
text=True,
|
||||
check=False,
|
||||
)
|
||||
|
||||
_assert_successful_help(result)
|
||||
assert list(tmp_path.iterdir()) == []
|
||||
|
||||
|
||||
def test_installed_console_script_help_has_no_filesystem_side_effects(
|
||||
tmp_path: Path,
|
||||
) -> None:
|
||||
executable = shutil.which("gyxx", path=str(Path(sys.executable).parent))
|
||||
assert executable is not None, "The installed gyxx console script was not found"
|
||||
|
||||
result = subprocess.run(
|
||||
[executable, "--help"],
|
||||
cwd=tmp_path,
|
||||
capture_output=True,
|
||||
text=True,
|
||||
check=False,
|
||||
)
|
||||
|
||||
_assert_successful_help(result)
|
||||
assert list(tmp_path.iterdir()) == []
|
||||
Reference in New Issue
Block a user