fix(worker): 无 result_text_full 列的老库/手工表写回回落,不拖垮终局
CI 失败根因:P0 取消守卫测试 mock 掉 _ensure_result_columns 并手工建表(无新列),带新列的 UPDATE 直接 OperationalError。修法:带新列写回失败且错误含 result_text_full 时回滚并用旧 SQL 重写(摘要照写、完整版 丢弃),其它错误原样重抛。
This commit is contained in:
1 parent
92b7f8e8ff
commit
700641fa37
2 files changed
+41
-21
No files matched your search
@@ -547,8 +547,9 @@ class TestUsageParsing(unittest.TestCase):
|
||||
self.assertEqual(result["status"], "completed")
|
||||
|
||||
def test_result_from_runner_keeps_stdout_full(self):
|
||||
# 截断版 stdout 仍是 2000 字,但 stdout_full 必须带完整
|
||||
# 文本,否则长答案尾部在库里永远查不到。
|
||||
# #165 后 stdout 是解析出的 text 截到 20000 字(不再是
|
||||
# 2000 字截 JSON),stdout_full 仍必须带完整文本,
|
||||
# 否则超 20000 字的长答案尾部在库里永远查不到。
|
||||
fake = SimpleNamespace(
|
||||
returncode=0,
|
||||
stdout=json.dumps({"status": "completed",
|
||||
@@ -557,7 +558,7 @@ class TestUsageParsing(unittest.TestCase):
|
||||
result = LocalExecutor("/fake/host.py",
|
||||
runner=lambda cmd: fake
|
||||
)._result_from_runner("t1", fake)
|
||||
self.assertLessEqual(len(result["stdout"]), 2000)
|
||||
self.assertLessEqual(len(result["stdout"]), 21000)
|
||||
self.assertIn("y" * 5000, result["stdout_full"])
|
||||
|
||||
def test_result_from_runner_usage_survives_long_text(self):
|
||||
|
||||
Reference in new issue
Block a user