seshat-tts
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
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"
|
||||
Reference in New Issue
Block a user