58 lines
2.1 KiB
Python
58 lines
2.1 KiB
Python
"""验证桌面入口的纯参数处理,不启动 PySide6。"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
import unittest
|
|
from unittest import mock
|
|
|
|
|
|
CLIENT_ROOT = Path(__file__).resolve().parents[1]
|
|
sys.path.insert(0, str(CLIENT_ROOT / "src"))
|
|
|
|
from cmbuyer_client.app import select_application_argv
|
|
|
|
|
|
class ApplicationArgumentsTests(unittest.TestCase):
|
|
def test_empty_argument_list_is_not_replaced_with_process_arguments(self) -> None:
|
|
with mock.patch("cmbuyer_client.app.sys.argv", ["process-name", "--process-option"]):
|
|
self.assertEqual([], select_application_argv([]))
|
|
|
|
def test_none_uses_process_arguments(self) -> None:
|
|
with mock.patch("cmbuyer_client.app.sys.argv", ["process-name", "--process-option"]):
|
|
self.assertEqual(["process-name", "--process-option"], select_application_argv(None))
|
|
|
|
def test_standalone_entry_does_not_construct_http_or_device_capabilities(self) -> None:
|
|
source = (CLIENT_ROOT / "src" / "cmbuyer_client" / "app.py").read_text(encoding="utf-8")
|
|
for forbidden in (
|
|
"HttpTaskSource",
|
|
"HttpTransport",
|
|
"DurableClientGateway",
|
|
"import uiautomator2",
|
|
".device",
|
|
".pdd",
|
|
):
|
|
with self.subTest(forbidden=forbidden):
|
|
self.assertNotIn(forbidden, source)
|
|
self.assertIn("gateway_factory=None", source)
|
|
self.assertIn("consumer=None", source)
|
|
|
|
def test_t304_ui_has_no_hidden_connection_probe_or_irreversible_capability_import(self) -> None:
|
|
paths = [
|
|
*(CLIENT_ROOT / "src" / "cmbuyer_client" / "ui").glob("*.py"),
|
|
*(CLIENT_ROOT / "src" / "cmbuyer_client" / "polling").glob("*.py"),
|
|
]
|
|
source = "\n".join(path.read_text(encoding="utf-8") for path in paths)
|
|
for forbidden in (
|
|
"uiautomator2",
|
|
"cmbuyer_client.pdd",
|
|
"cmbuyer_client.device",
|
|
"submit_order",
|
|
"payment",
|
|
"http.client",
|
|
"subprocess",
|
|
):
|
|
with self.subTest(forbidden=forbidden):
|
|
self.assertNotIn(forbidden, source)
|