feat: complete production workflow migration
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from gyxx_flow.cli import (
|
||||
CliConfigurationError,
|
||||
_load_runtime_environment_files,
|
||||
build_parser,
|
||||
)
|
||||
|
||||
|
||||
def test_console_and_scheduler_accept_explicit_repeatable_env_files() -> None:
|
||||
parser = build_parser()
|
||||
|
||||
console = parser.parse_args(
|
||||
["console", "--env-file", "database.env", "--env-file", "notify.env"]
|
||||
)
|
||||
scheduler = parser.parse_args(
|
||||
["schedule", "run", "--env-file", "production.env"]
|
||||
)
|
||||
|
||||
assert console.env_file == [Path("database.env"), Path("notify.env")]
|
||||
assert scheduler.env_file == [Path("production.env")]
|
||||
|
||||
|
||||
def test_runtime_env_files_load_values_without_overriding_process_env(
|
||||
tmp_path: Path,
|
||||
monkeypatch: pytest.MonkeyPatch,
|
||||
) -> None:
|
||||
first = tmp_path / "database.env"
|
||||
second = tmp_path / "notifications.env"
|
||||
first.write_text(
|
||||
"GYXX_RUNTIME_ENV_TEST_DB=cloud\nGYXX_RUNTIME_ENV_TEST_KEEP=file\n",
|
||||
encoding="utf-8",
|
||||
)
|
||||
second.write_text("GYXX_RUNTIME_ENV_TEST_NOTIFY=owner\n", encoding="utf-8")
|
||||
monkeypatch.delenv("GYXX_RUNTIME_ENV_TEST_DB", raising=False)
|
||||
monkeypatch.delenv("GYXX_RUNTIME_ENV_TEST_NOTIFY", raising=False)
|
||||
monkeypatch.setenv("GYXX_RUNTIME_ENV_TEST_KEEP", "process")
|
||||
|
||||
_load_runtime_environment_files(
|
||||
argparse.Namespace(env_file=[first, second])
|
||||
)
|
||||
|
||||
import os
|
||||
|
||||
assert os.environ["GYXX_RUNTIME_ENV_TEST_DB"] == "cloud"
|
||||
assert os.environ["GYXX_RUNTIME_ENV_TEST_NOTIFY"] == "owner"
|
||||
assert os.environ["GYXX_RUNTIME_ENV_TEST_KEEP"] == "process"
|
||||
|
||||
|
||||
def test_runtime_env_file_must_exist(tmp_path: Path) -> None:
|
||||
missing = tmp_path / "missing.env"
|
||||
|
||||
with pytest.raises(CliConfigurationError, match="runtime environment file not found"):
|
||||
_load_runtime_environment_files(argparse.Namespace(env_file=[missing]))
|
||||
Reference in New Issue
Block a user