82 lines
2.0 KiB
Python
82 lines
2.0 KiB
Python
import subprocess
|
|
from pathlib import Path
|
|
|
|
|
|
REPO_ROOT = Path(__file__).resolve().parents[2]
|
|
DEPLOY_PS1 = REPO_ROOT / "deploy" / "deploy.ps1"
|
|
DEPLOY_BAT = REPO_ROOT / "deploy" / "deploy-to-nas.bat"
|
|
DOCKER_COMPOSE = REPO_ROOT / "docker-compose.yml"
|
|
|
|
|
|
def run_powershell(*args):
|
|
return subprocess.run(
|
|
[
|
|
"powershell",
|
|
"-NoProfile",
|
|
"-ExecutionPolicy",
|
|
"Bypass",
|
|
"-File",
|
|
str(DEPLOY_PS1),
|
|
*args,
|
|
],
|
|
cwd=REPO_ROOT,
|
|
capture_output=True,
|
|
text=True,
|
|
encoding="utf-8",
|
|
)
|
|
|
|
|
|
def run_bat(*args):
|
|
return subprocess.run(
|
|
[
|
|
"cmd.exe",
|
|
"/c",
|
|
str(DEPLOY_BAT),
|
|
*args,
|
|
],
|
|
cwd=REPO_ROOT,
|
|
capture_output=True,
|
|
text=True,
|
|
encoding="utf-8",
|
|
)
|
|
|
|
|
|
def test_deploy_ps1_dry_run_prints_target():
|
|
result = run_powershell("-DryRun")
|
|
output = f"{result.stdout}\n{result.stderr}"
|
|
|
|
assert result.returncode == 0
|
|
assert "DryRun" in output
|
|
assert "116.62.17.81" in output
|
|
assert "9444" in output
|
|
assert "/volume1/webapp/ccdi" in output
|
|
|
|
|
|
def test_bat_dry_run_uses_default_nas_target():
|
|
result = run_bat("--dry-run")
|
|
output = f"{result.stdout}\n{result.stderr}"
|
|
|
|
assert result.returncode == 0
|
|
assert "DryRun" in output
|
|
assert "116.62.17.81" in output
|
|
assert "9444" in output
|
|
assert "/volume1/webapp/ccdi" in output
|
|
|
|
|
|
def test_bat_dry_run_accepts_override_arguments():
|
|
result = run_bat("1.2.3.4", "9000", "demo", "demoPwd", "/demo/path", "--dry-run")
|
|
output = f"{result.stdout}\n{result.stderr}"
|
|
|
|
assert result.returncode == 0
|
|
assert "1.2.3.4" in output
|
|
assert "9000" in output
|
|
assert "demo" in output
|
|
assert "/demo/path" in output
|
|
|
|
|
|
def test_compose_exposes_lsfx_mock_port_via_backend_namespace():
|
|
compose_text = DOCKER_COMPOSE.read_text(encoding="utf-8")
|
|
|
|
assert '${LSFX_MOCK_PORT:-62320}:8000' in compose_text
|
|
assert 'network_mode: "service:backend"' in compose_text
|