workbench / tests /unit /test_export_plan.py
GitHub Actions
Initial ZeroGPU deployment with spaces shim
7f9dfed
Raw
History Blame Contribute Delete
3.48 kB
from __future__ import annotations
import tempfile
import unittest
from pathlib import Path
from models.model_catalog import load_model_catalog
from training.export import (
ToolStatus,
build_export_plan,
detect_llama_cpp_tools,
list_exported_files,
)
from ui.export_tab import export_download_paths
class ExportPlanTest(unittest.TestCase):
def test_detects_llama_cpp_tools_without_requiring_install(self) -> None:
statuses = detect_llama_cpp_tools(which_func=lambda name: f"C:/tools/{name}.exe")
self.assertEqual(
[status.name for status in statuses],
["llama-server", "llama-cli", "llama-quantize"],
)
self.assertTrue(all(status.available for status in statuses))
def test_builds_non_executing_official_gguf_plan(self) -> None:
catalog = load_model_catalog("config/models.yaml")
tools = [ToolStatus("llama-quantize", False, "")]
plan = build_export_plan(catalog["minicpm_v46"], "Q4_K_M", "exports", tools)
data = plan.as_dict()
self.assertEqual(data["official_gguf_repo"], "openbmb/MiniCPM-V-4.6-gguf")
self.assertIn("huggingface-cli", data["download_command"])
self.assertIn("llama-quantize", data["quantize_command"])
self.assertFalse(data["executes_commands"])
self.assertFalse(data["startup_downloads"])
def test_rejects_unknown_quantization(self) -> None:
catalog = load_model_catalog("config/models.yaml")
with self.assertRaises(ValueError):
build_export_plan(catalog["minicpm5_1b"], "Q2_UNKNOWN")
def test_lists_exported_files(self) -> None:
with tempfile.TemporaryDirectory() as tmp:
output = Path(tmp)
file_path = output / "model.gguf"
file_path.write_bytes(b"gguf")
rows = list_exported_files(output)
self.assertEqual(rows, [[str(file_path), "4"]])
def test_export_download_paths_prioritizes_existing_planned_files(self) -> None:
catalog = load_model_catalog("config/models.yaml")
tools = [ToolStatus("llama-quantize", False, "")]
with tempfile.TemporaryDirectory() as tmp:
root = Path(tmp)
model_dir = root / "minicpm_v46"
model_dir.mkdir()
extra_file = root / "notes.txt"
extra_file.write_text("manual note", encoding="utf-8")
plan = build_export_plan(catalog["minicpm_v46"], "Q4_K_M", root, tools)
planned_file = model_dir / plan.official_gguf_file
planned_file.write_bytes(b"planned gguf")
rows = list_exported_files(root)
paths = export_download_paths(plan.as_dict(), rows)
self.assertEqual(paths[0], str(planned_file))
self.assertIn(str(extra_file), paths)
def test_export_download_paths_omits_missing_planned_files(self) -> None:
catalog = load_model_catalog("config/models.yaml")
tools = [ToolStatus("llama-quantize", False, "")]
with tempfile.TemporaryDirectory() as tmp:
root = Path(tmp)
extra_file = root / "already-exported.gguf"
extra_file.write_bytes(b"existing")
plan = build_export_plan(catalog["minicpm_v46"], "Q4_K_M", root, tools)
paths = export_download_paths(plan.as_dict(), list_exported_files(root))
self.assertEqual(paths, [str(extra_file)])
if __name__ == "__main__":
unittest.main()