"""端到端互操作:Python 客户端 ←→ Node 服务端(跨实现)。 价值:这是**唯一能证明协议层真通**的测试 —— 两边是完全独立的实现,若我的 protodef 有偏差,握手不可能成功。 用法: 1) cd /home/newqqagent/plugin_data/mc/runtime && node testserver.js & 2) python3 tests/test_e2e_interop.py """ import sys, os, socket sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from mcfold.client import Client HOST, PORT = "127.0.0.1", 25599 def reachable(): try: socket.create_connection((HOST, PORT), timeout=2).close(); return True except OSError: return False def test_interop(): if not reachable(): print(f" - 服务端 {HOST}:{PORT} 未运行,跳过(见本文件顶部用法)"); return c = Client(HOST, PORT, "PyProbe", "1.20.1") try: r = c.run_smoke() assert r["protocol"] == 763, r assert r["login_ok"], r assert "success" in r["packets"], r print(f" ✓ 跨实现互操作: 协议={r['protocol']} 包={r['packets']} 登录成功") finally: c.close() def test_protocol_version_from_folder(): """协议版本必须由「实例文件夹」决定,而不是硬编码。""" c = Client(HOST, PORT, "x", "1.20.1") c.load_protocol() assert c.proto_num == 763, c.proto_num print(f" ✓ 版本来自 version.json: 1.20.1 -> 协议 {c.proto_num}") if __name__ == "__main__": test_protocol_version_from_folder() test_interop() print("\n端到端互操作:通过")