fix: thread/unarchive 不再预 resume(已归档 thread 直接调 thread/unarchive)
This commit is contained in:
1 parent
5c9beb8a6d
commit
f186c60e4e
2 files changed
+20
-3
No files matched your search
@@ -2694,8 +2694,11 @@ def main():
|
|||||||
print(json.dumps({"error": str(e)}, ensure_ascii=False))
|
print(json.dumps({"error": str(e)}, ensure_ascii=False))
|
||||||
raise SystemExit(1)
|
raise SystemExit(1)
|
||||||
elif args.cmd == "thread-unarchive":
|
elif args.cmd == "thread-unarchive":
|
||||||
|
# 与 archive 一致:不 resume,直接调 thread/unarchive。
|
||||||
|
# 已归档 thread 先 resume 会失败(thread/resume 报错 →
|
||||||
|
# CLI 退出 1 → 服务端回 502),而 unarchive 本身只认
|
||||||
|
# threadId,不需要先恢复会话。
|
||||||
try:
|
try:
|
||||||
srv.resume_thread(args.thread_id)
|
|
||||||
resp = srv.request("thread/unarchive",
|
resp = srv.request("thread/unarchive",
|
||||||
{"threadId": args.thread_id},
|
{"threadId": args.thread_id},
|
||||||
timeout=60)
|
timeout=60)
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ class ThreadCliTest(unittest.TestCase):
|
|||||||
calls = self._calls_before_close(fake)
|
calls = self._calls_before_close(fake)
|
||||||
self.assertEqual(calls, [("archive", "th-1")])
|
self.assertEqual(calls, [("archive", "th-1")])
|
||||||
|
|
||||||
def test_unarchive_resume_first(self):
|
def test_unarchive_no_resume(self):
|
||||||
fake = FakeServer()
|
fake = FakeServer()
|
||||||
code, out, _ = self._run(
|
code, out, _ = self._run(
|
||||||
fake, ["thread-unarchive", "--thread-id", "th-1"])
|
fake, ["thread-unarchive", "--thread-id", "th-1"])
|
||||||
@@ -159,7 +159,21 @@ class ThreadCliTest(unittest.TestCase):
|
|||||||
self.assertEqual(json.loads(out), {"thread": {"id": "th-1"}})
|
self.assertEqual(json.loads(out), {"thread": {"id": "th-1"}})
|
||||||
calls = self._calls_before_close(fake)
|
calls = self._calls_before_close(fake)
|
||||||
self.assertEqual(calls, [
|
self.assertEqual(calls, [
|
||||||
("resume", "th-1"),
|
("request", "thread/unarchive", {"threadId": "th-1"}),
|
||||||
|
])
|
||||||
|
|
||||||
|
def test_unarchive_resume_failure_does_not_block(self):
|
||||||
|
# 回归:已归档 thread 的 resume 会失败;unarchive 不再调
|
||||||
|
# resume,所以 resume 失败也不应挡住 unarchive(此前
|
||||||
|
# resume 抛错 → CLI 退出 1 → 服务端回 502)。
|
||||||
|
fake = FakeServer()
|
||||||
|
fake.resume_error = True
|
||||||
|
code, out, _ = self._run(
|
||||||
|
fake, ["thread-unarchive", "--thread-id", "th-1"])
|
||||||
|
self.assertEqual(code, 0)
|
||||||
|
self.assertEqual(json.loads(out), {"thread": {"id": "th-1"}})
|
||||||
|
calls = self._calls_before_close(fake)
|
||||||
|
self.assertEqual(calls, [
|
||||||
("request", "thread/unarchive", {"threadId": "th-1"}),
|
("request", "thread/unarchive", {"threadId": "th-1"}),
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user