aboutsummaryrefslogtreecommitdiff
path: root/app/tests/test_backends_audiocpp.py
diff options
context:
space:
mode:
authorhistoria <historiavg@proton.me>2026-08-25 13:38:33 -0400
committerhistoria <historiavg@proton.me>2026-08-25 13:38:33 -0400
commit0badc06550ed2e46c7c4b9f83db755737ffc0412 (patch)
tree139adf75a73f6673a8cad5cb8fb4466364140185 /app/tests/test_backends_audiocpp.py
parentd4dbc1a158d1dd6babcba7333a4ed7d719b65d3e (diff)
downloadtts-audiobook-generator-0badc06550ed2e46c7c4b9f83db755737ffc0412.tar.gz
fix: detect if all audio.cpp models already downloaded
Diffstat (limited to 'app/tests/test_backends_audiocpp.py')
-rw-r--r--app/tests/test_backends_audiocpp.py72
1 files changed, 62 insertions, 10 deletions
diff --git a/app/tests/test_backends_audiocpp.py b/app/tests/test_backends_audiocpp.py
index be8fead..7704ff4 100644
--- a/app/tests/test_backends_audiocpp.py
+++ b/app/tests/test_backends_audiocpp.py
@@ -579,7 +579,8 @@ class InstallModelsTests(unittest.TestCase):
def test_declined_download_prints_commands_deduped(self):
buf = io.StringIO()
with redirect_stdout(buf), \
- patch.object(make_server.subprocess, "run") as run:
+ patch.object(make_server.common,
+ "run_console_subprocess") as run:
make_server._install_models(self.checkout, self.guidance,
download=False)
out = buf.getvalue()
@@ -588,8 +589,8 @@ class InstallModelsTests(unittest.TestCase):
run.assert_not_called()
def test_accepted_download_runs_each_command(self):
- with patch.object(make_server.subprocess, "run",
- return_value=MagicMock(returncode=0)) as run:
+ with patch.object(make_server.common,
+ "run_console_subprocess", return_value=0) as run:
make_server._install_models(self.checkout, self.guidance,
download=True)
self.assertEqual(run.call_count, 2)
@@ -607,17 +608,18 @@ class InstallModelsTests(unittest.TestCase):
self.manager.unlink()
buf = io.StringIO()
with redirect_stdout(buf), \
- patch.object(make_server.subprocess, "run") as run:
+ patch.object(make_server.common,
+ "run_console_subprocess") as run:
make_server._install_models(self.checkout, self.guidance,
download=True)
self.assertIn("install higgs_audio_tts_4b_q8_0", buf.getvalue())
run.assert_not_called()
def test_failed_install_reports_warning_and_continues(self):
- results = iter([MagicMock(returncode=1), MagicMock(returncode=0)])
+ results = iter([1, 0])
buf = io.StringIO()
with redirect_stdout(buf), \
- patch.object(make_server.subprocess, "run",
+ patch.object(make_server.common, "run_console_subprocess",
side_effect=lambda *a, **k: next(results)) as run:
make_server._install_models(self.checkout, self.guidance,
download=True)
@@ -627,19 +629,69 @@ class InstallModelsTests(unittest.TestCase):
def test_decide_download_skips_prompt_without_manager(self):
self.manager.unlink()
confirm = MagicMock()
- self.assertFalse(make_server._decide_download(self.checkout, confirm))
+ self.assertFalse(make_server._decide_download(self.checkout, [], confirm))
confirm.assert_not_called()
def test_decide_download_asks_when_manager_present(self):
confirm = MagicMock(return_value=True)
- self.assertTrue(make_server._decide_download(self.checkout, confirm))
+ self.assertTrue(make_server._decide_download(self.checkout, [], confirm))
confirm.assert_called_once()
def test_decide_download_defaults_to_yes(self):
confirm = MagicMock(return_value=True)
- make_server._decide_download(self.checkout, confirm)
+ make_server._decide_download(self.checkout, [], confirm)
self.assertIs(confirm.call_args[0][1], True)
+ def test_decide_download_skips_prompt_when_all_models_present(self):
+ target = self.checkout / "models" / "higgs"
+ target.mkdir(parents=True)
+ (target / "model.gguf").write_bytes(b"x")
+ confirm = MagicMock()
+ self.assertFalse(make_server._decide_download(
+ self.checkout, [{"path": "models/higgs"}], confirm))
+ confirm.assert_not_called()
+
+ def test_decide_download_prompts_when_a_model_is_missing(self):
+ target = self.checkout / "models" / "higgs"
+ target.mkdir(parents=True)
+ (target / "model.gguf").write_bytes(b"x")
+ confirm = MagicMock(return_value=True)
+ self.assertTrue(make_server._decide_download(
+ self.checkout,
+ [{"path": "models/higgs"}, {"path": "models/absent"}],
+ confirm))
+ confirm.assert_called_once()
+
+ def test_all_models_present_true_when_all_paths_hold_files(self):
+ target = self.checkout / "models" / "higgs"
+ target.mkdir(parents=True)
+ (target / "model.gguf").write_bytes(b"x")
+ self.assertTrue(make_server._all_models_present(
+ self.checkout, [{"path": "models/higgs"}]))
+
+ def test_all_models_present_false_when_one_missing(self):
+ target = self.checkout / "models" / "higgs"
+ target.mkdir(parents=True)
+ (target / "model.gguf").write_bytes(b"x")
+ self.assertFalse(make_server._all_models_present(
+ self.checkout,
+ [{"path": "models/higgs"}, {"path": "models/absent"}]))
+
+ def test_all_models_present_false_for_empty_selection(self):
+ self.assertFalse(make_server._all_models_present(self.checkout, []))
+
+ def test_all_models_present_honors_absolute_paths(self):
+ target = self.checkout / "models" / "higgs"
+ target.mkdir(parents=True)
+ (target / "model.gguf").write_bytes(b"x")
+ self.assertTrue(make_server._all_models_present(
+ self.checkout, [{"path": str(target)}]))
+
+ def test_all_models_present_false_for_empty_dir(self):
+ (self.checkout / "models" / "higgs").mkdir(parents=True)
+ self.assertFalse(make_server._all_models_present(
+ self.checkout, [{"path": "models/higgs"}]))
+
class TranscribeWavDirTests(unittest.TestCase):
def setUp(self):
@@ -1621,7 +1673,7 @@ class DeleteModelFilesTests(unittest.TestCase):
self.assertFalse(target.exists())
-class InstallModelsTests(unittest.TestCase):
+class InstallModelsApiTests(unittest.TestCase):
"""install_models: runs the install helper with download=True."""
def test_downloads_delegating_to_install_models(self):