8f10353f0c
CI / lint (push) Has been cancelled
CI / js-syntax (push) Successful in 10m24s
CI / deps-audit (push) Has been cancelled
CI / test (push) Failing after 24m55s
CI / sast-bandit (push) Failing after 11m13s
CI / trivy (push) Failing after 9m32s
Docker Publish / build-and-push (push) Failing after 34m3s
85 lines
3.2 KiB
Python
85 lines
3.2 KiB
Python
from __future__ import annotations
|
|
|
|
import importlib
|
|
import os
|
|
from pathlib import Path
|
|
|
|
|
|
def test_data_dir_moves_default_runtime_dirs(monkeypatch, tmp_path: Path):
|
|
import app.core.config as config
|
|
|
|
original = config
|
|
data_dir = tmp_path / "portable-data"
|
|
monkeypatch.setenv("STEMDECK_DATA_DIR", str(data_dir))
|
|
monkeypatch.delenv("STEMDECK_JOBS_DIR", raising=False)
|
|
monkeypatch.delenv("STEMDECK_CACHE_DIR", raising=False)
|
|
monkeypatch.delenv("STEMDECK_DOWNLOADS_DIR", raising=False)
|
|
monkeypatch.delenv("STEMDECK_MODELS_DIR", raising=False)
|
|
monkeypatch.delenv("STEMDECK_LOGS_DIR", raising=False)
|
|
try:
|
|
reloaded = importlib.reload(config)
|
|
assert data_dir.resolve() == reloaded.DATA_DIR
|
|
assert data_dir.resolve() / "jobs" == reloaded.JOBS_DIR
|
|
assert data_dir.resolve() / "cache" == reloaded.CACHE_DIR
|
|
assert data_dir.resolve() / "downloads" == reloaded.DOWNLOADS_DIR
|
|
assert data_dir.resolve() / "models" == reloaded.MODELS_DIR
|
|
assert data_dir.resolve() / "logs" == reloaded.LOGS_DIR
|
|
finally:
|
|
monkeypatch.delenv("STEMDECK_DATA_DIR", raising=False)
|
|
importlib.reload(original)
|
|
|
|
|
|
def test_jobs_dir_override_wins_over_data_dir(monkeypatch, tmp_path: Path):
|
|
import app.core.config as config
|
|
|
|
original = config
|
|
data_dir = tmp_path / "portable-data"
|
|
jobs_dir = tmp_path / "custom-jobs"
|
|
monkeypatch.setenv("STEMDECK_DATA_DIR", str(data_dir))
|
|
monkeypatch.setenv("STEMDECK_JOBS_DIR", str(jobs_dir))
|
|
try:
|
|
reloaded = importlib.reload(config)
|
|
assert data_dir.resolve() == reloaded.DATA_DIR
|
|
assert jobs_dir.resolve() == reloaded.JOBS_DIR
|
|
finally:
|
|
monkeypatch.delenv("STEMDECK_DATA_DIR", raising=False)
|
|
monkeypatch.delenv("STEMDECK_JOBS_DIR", raising=False)
|
|
importlib.reload(original)
|
|
|
|
|
|
def test_ffmpeg_executable_prefers_portable_binary(monkeypatch, tmp_path: Path):
|
|
import app.core.config as config
|
|
|
|
original = config
|
|
ffmpeg = tmp_path / "ffmpeg" / "ffmpeg"
|
|
ffmpeg.parent.mkdir()
|
|
ffmpeg.write_text("#!/bin/sh\n", encoding="utf-8")
|
|
monkeypatch.setenv("STEMDECK_DATA_DIR", str(tmp_path))
|
|
monkeypatch.setenv("STEMDECK_FFMPEG", str(ffmpeg))
|
|
try:
|
|
reloaded = importlib.reload(config)
|
|
assert reloaded.ffmpeg_executable() == str(ffmpeg.resolve())
|
|
finally:
|
|
monkeypatch.delenv("STEMDECK_DATA_DIR", raising=False)
|
|
monkeypatch.delenv("STEMDECK_FFMPEG", raising=False)
|
|
importlib.reload(original)
|
|
|
|
|
|
def test_configure_portable_environment_leaves_dev_cache_env_alone(monkeypatch):
|
|
import app.core.config as config
|
|
|
|
original = config
|
|
monkeypatch.delenv("STEMDECK_DATA_DIR", raising=False)
|
|
monkeypatch.delenv("XDG_CACHE_HOME", raising=False)
|
|
monkeypatch.delenv("TORCH_HOME", raising=False)
|
|
try:
|
|
reloaded = importlib.reload(config)
|
|
reloaded.configure_portable_environment()
|
|
assert "XDG_CACHE_HOME" not in os.environ
|
|
assert "TORCH_HOME" not in os.environ
|
|
finally:
|
|
monkeypatch.delenv("STEMDECK_DATA_DIR", raising=False)
|
|
monkeypatch.delenv("XDG_CACHE_HOME", raising=False)
|
|
monkeypatch.delenv("TORCH_HOME", raising=False)
|
|
importlib.reload(original)
|