All checks were successful
Publish Python Package to Gitea / publish (push) Successful in 1m2s
68 lines
2.1 KiB
Python
68 lines
2.1 KiB
Python
"""
|
|
Stage 2 集成验证脚本——一次性 sanity check。
|
|
|
|
跑前准备:
|
|
1. 启动匠厂客户端(确认能正常打开聊天页 + 至少配好一个可用模型)
|
|
2. 在本仓库激活 Python venv,确认 playwright 已装
|
|
3. 直接 python sanity_check.py 即可
|
|
"""
|
|
import sys
|
|
import time
|
|
import traceback
|
|
|
|
print("=" * 60)
|
|
print("Stage 2 SDK Sanity Check")
|
|
print("=" * 60)
|
|
|
|
try:
|
|
from jiangchang_desktop_sdk import JiangchangDesktopClient
|
|
print("[1/6] import OK")
|
|
except Exception as e:
|
|
print(f"[FAIL] import failed: {e}")
|
|
sys.exit(1)
|
|
|
|
try:
|
|
with JiangchangDesktopClient() as c:
|
|
print("[2/6] context entered")
|
|
|
|
c.ensure_app_running()
|
|
print("[3/6] ensure_app_running OK")
|
|
|
|
c.wait_gateway_ready()
|
|
print("[4/6] wait_gateway_ready OK (note: returns even if gw not actually ready)")
|
|
|
|
c.new_task()
|
|
print("[5/6] new_task OK")
|
|
|
|
t0 = time.time()
|
|
answer = c.ask("你好,请用一句话回复,确认 SDK 可用")
|
|
elapsed = time.time() - t0
|
|
print(f"[6/6] ask() returned in {elapsed:.1f}s")
|
|
print(f" answer length: {len(answer)} chars")
|
|
print(f" answer preview: {answer[:200]!r}")
|
|
assert answer.strip(), "Empty answer!"
|
|
|
|
print()
|
|
print("[BONUS] verifying read() works")
|
|
msgs = c.read()
|
|
print(f" read() returned {len(msgs)} messages")
|
|
for i, m in enumerate(msgs[-4:]):
|
|
print(f" [-{len(msgs)-i}] role={m.role!r} id={m.id!r} "
|
|
f"content_len={len(m.content) if m.content else 0}")
|
|
|
|
print()
|
|
print("[BONUS] verifying send_file raises NotImplementedError")
|
|
try:
|
|
c.send_file("/tmp/fake.txt")
|
|
print(" [FAIL] send_file did NOT raise!")
|
|
except NotImplementedError as e:
|
|
print(f" [OK] send_file raised: {str(e)[:80]}...")
|
|
|
|
print()
|
|
print("=" * 60)
|
|
print("ALL CHECKS PASSED ✓")
|
|
print("=" * 60)
|
|
except Exception as e:
|
|
print(f"\n[FAIL] sanity check crashed:")
|
|
traceback.print_exc()
|
|
sys.exit(2) |