81 lines
2.4 KiB
Python
81 lines
2.4 KiB
Python
from pathlib import Path
|
|
import json
|
|
|
|
from seshat_tts.config import AppConfig, Rect, load_config, save_config
|
|
|
|
|
|
def test_config_roundtrip(tmp_path: Path) -> None:
|
|
path = tmp_path / "config.json"
|
|
config = AppConfig(
|
|
monitor_index=2,
|
|
hotkey="ctrl+shift+d",
|
|
capture_region_hotkey="ctrl+shift+r",
|
|
stop_hotkey="ctrl+shift+s",
|
|
dialogue_rect=Rect(left=1, top=2, width=3, height=4),
|
|
tesseract_cmd="C:/Tesseract/tesseract.exe",
|
|
voice_source="custom-wav",
|
|
default_voice="alba",
|
|
voice_path="voice.mp3",
|
|
language="english",
|
|
quantize_tts=True,
|
|
volume_gain=1.75,
|
|
last_text="hello",
|
|
)
|
|
|
|
save_config(config, path)
|
|
|
|
assert load_config(path) == config
|
|
|
|
|
|
def test_load_config_removes_old_region_metadata_from_last_text(tmp_path: Path) -> None:
|
|
path = tmp_path / "config.json"
|
|
path.write_text(
|
|
json.dumps(
|
|
{
|
|
"last_text": "Capture region: 85,51 628x84\nText region: 85,44 633x77\n\nA line to read."
|
|
}
|
|
),
|
|
encoding="utf-8",
|
|
)
|
|
|
|
assert load_config(path).last_text == "A line to read."
|
|
|
|
|
|
def test_load_config_reads_llm_settings(tmp_path: Path) -> None:
|
|
path = tmp_path / "config.json"
|
|
path.write_text(
|
|
json.dumps(
|
|
{
|
|
"llm_enabled": True,
|
|
"llm_base_url": "http://127.0.0.1:11434/v1",
|
|
"llm_api_key": "local",
|
|
"llm_model": "unsloth-local",
|
|
"llm_timeout": 1.5,
|
|
"llm_max_tokens": 64,
|
|
"llm_disable_thinking": False,
|
|
"llm_image_extraction": True,
|
|
"llm_system_prompt": "clean this",
|
|
}
|
|
),
|
|
encoding="utf-8",
|
|
)
|
|
|
|
config = load_config(path)
|
|
|
|
assert config.llm_enabled is True
|
|
assert config.llm_base_url == "http://127.0.0.1:11434/v1"
|
|
assert config.llm_api_key == "local"
|
|
assert config.llm_model == "unsloth-local"
|
|
assert config.llm_timeout == 1.5
|
|
assert config.llm_max_tokens == 64
|
|
assert config.llm_disable_thinking is False
|
|
assert config.llm_image_extraction is True
|
|
assert config.llm_system_prompt == "clean this"
|
|
|
|
|
|
def test_load_config_forces_english_language(tmp_path: Path) -> None:
|
|
path = tmp_path / "config.json"
|
|
path.write_text(json.dumps({"language": "french"}), encoding="utf-8")
|
|
|
|
assert load_config(path).language == "english"
|