# -*- coding: utf-8 -*- from __future__ import annotations import unittest from unittest import mock import dsh_web_server class DshWebServerTest(unittest.TestCase): def test_parse_ready_url(self): self.assertEqual( dsh_web_server.parse_ready_url("dsh web: http://127.0.0.1:3080"), "http://127.0.0.1:3080", ) self.assertEqual( dsh_web_server.parse_ready_url("boot\ndsh web: http://127.0.0.1:18765 (LAN: none)\n"), "http://127.0.0.1:18765", ) self.assertEqual(dsh_web_server.parse_ready_url("still starting"), "") def test_launch_command_uses_official_package(self): with mock.patch.object(dsh_web_server, "_which", return_value=r"C:\nodejs\npx.cmd"): args = dsh_web_server.launch_command(18765) self.assertIn("@deepseek-ai/dsh", args) self.assertIn("web", args) self.assertIn("18765", args) self.assertIn("127.0.0.1", args) def test_launch_command_without_node_explains_install(self): with mock.patch.object(dsh_web_server, "_which", return_value=""): with self.assertRaises(FileNotFoundError) as ctx: dsh_web_server.launch_command() self.assertIn("Node", str(ctx.exception)) if __name__ == "__main__": unittest.main()