import unittest from pathlib import Path ROOT = Path(r"E:\GitProjects\llama-cpp-server") ROUTER_SCRIPT = ROOT / "start-llama-router.ps1" ASR_SCRIPT = ROOT / "start-asr-server.ps1" QWEN_SCRIPT = ROOT / "start-qwen3.6-35b-a3b.ps1" class Ps1MigrationTests(unittest.TestCase): def test_ps1_scripts_exist(self): self.assertTrue(ROUTER_SCRIPT.exists(), ROUTER_SCRIPT) self.assertTrue(ASR_SCRIPT.exists(), ASR_SCRIPT) self.assertTrue(QWEN_SCRIPT.exists(), QWEN_SCRIPT) def test_legacy_bat_scripts_are_removed(self): self.assertFalse((ROOT / "start-llama-router.bat").exists()) self.assertFalse((ROOT / "start-asr-server.bat").exists()) self.assertFalse((ROOT / "start-qwen3.6-35b-a3b.bat").exists()) class RouterScriptTests(unittest.TestCase): def test_router_script_uses_utf8_and_optional_gated_server_flags(self): text = ROUTER_SCRIPT.read_text(encoding="utf-8") self.assertIn("[Console]::OutputEncoding", text) self.assertIn("$env:PYTHONIOENCODING = 'utf-8'", text) self.assertIn("--models-preset", text) self.assertIn("--models-autoload", text) self.assertIn("--models-max", text) self.assertIn("--sleep-idle-seconds", text) self.assertIn("--cache-idle-slots", text) self.assertIn("--api-key", text) self.assertIn("--timeout", text) self.assertIn("--cache-ram", text) self.assertIn("--threads-http", text) self.assertIn("--metrics", text) self.assertIn("--ssl-cert-file", text) self.assertIn("--ssl-key-file", text) self.assertIn("--ui", text) self.assertIn("--no-ui", text) self.assertIn("if ($ApiKey)", text) self.assertIn("if ($EnableMetrics)", text) def test_router_script_can_regenerate_models_preset(self): text = ROUTER_SCRIPT.read_text(encoding="utf-8") self.assertIn("generate_models_preset.py", text) self.assertIn("--alias-style", text) self.assertIn("--profile", text) self.assertIn("--select", text) class SingleModelScriptTests(unittest.TestCase): def test_asr_script_uses_mmproj_and_ps1_argument_array(self): text = ASR_SCRIPT.read_text(encoding="utf-8") self.assertIn("$Args = @(", text) self.assertIn("-m", text) self.assertIn("--mmproj", text) self.assertIn("--parallel", text) self.assertIn("--mmap", text) def test_qwen_script_uses_recommended_threads_and_moe_runtime_flags(self): text = QWEN_SCRIPT.read_text(encoding="utf-8") self.assertIn("[Environment]::ProcessorCount", text) self.assertIn("* 0.7", text) self.assertIn("-b", text) self.assertIn("2048", text) self.assertIn("-ub", text) self.assertIn("512", text) self.assertIn("--parallel", text) self.assertIn("4", text) self.assertIn("-ncmoe", text) self.assertIn("--mmap", text) self.assertIn("--reasoning", text) self.assertIn("--reasoning-budget", text) self.assertIn("--spec-type", text) self.assertIn("--temp", text) self.assertIn("--top-k", text) self.assertIn("--top-p", text) self.assertIn("--min-p", text) self.assertIn("--repeat-penalty", text) if __name__ == "__main__": unittest.main()