Release beta 1.2.2.1019
check / local-gate (push) Failing after 59s

This commit is contained in:
JWeBot Contributors
2026-10-19 17:40:46 +08:00
parent 3a7c11e44d
commit ac630576c7
21 changed files with 220 additions and 53 deletions
+63 -3
View File
@@ -211,6 +211,10 @@ class RoutingTests(unittest.TestCase):
MODULE.classify_question("/steam 在线"),
("local", "local_steam_friends"),
)
self.assertEqual(
MODULE.classify_question("/知识问答"),
("local", "local_trivia_start"),
)
def test_reply_has_one_suffix_within_delivery_limit(self):
self.assertEqual(MODULE.clean_reply("收到。"), "收到喵")
@@ -308,6 +312,24 @@ class LedgerAndApplicationTests(unittest.TestCase):
"第二条回复喵",
)
def test_local_game_command_result_is_available_to_followup_chat(self):
observed_context = []
def complete(**kwargs):
observed_context.extend(kwargs["context"])
return "我看到了喵"
self.application.deepseek.complete = complete
self.application.accept(event("version-context", "@JWeBot /version"))
local = self.application.accept(event("coin-context", "@JWeBot /翻硬币"))
self.application.accept(event("chat-context", "@JWeBot 刚才是什么结果"))
self.application.process_direct_chat_once()
self.assertIn(("/翻硬币", local["text"]), observed_context)
self.assertTrue(
all(question != "/version" for question, _reply in observed_context)
)
def test_route_and_ack_telemetry_is_privacy_safe(self):
observed = []
with tempfile.TemporaryDirectory() as directory:
@@ -450,6 +472,12 @@ class LedgerAndApplicationTests(unittest.TestCase):
os.environ,
{"JWEBOT_RUNTIME_PYTHON": str(runtime_python)},
), \
mock.patch.object(
MODULE.random,
"uniform",
return_value=0.75,
) as uniform, \
mock.patch.object(MODULE.time, "sleep") as sleep, \
mock.patch.object(
MODULE.subprocess,
"run",
@@ -482,6 +510,11 @@ class LedgerAndApplicationTests(unittest.TestCase):
},
],
)
uniform.assert_called_once_with(
MODULE.MULTI_REPLY_DELAY_MIN_SECONDS,
MODULE.MULTI_REPLY_DELAY_MAX_SECONDS,
)
sleep.assert_called_once_with(0.75)
def test_two_direct_generations_run_in_parallel(self):
entered = []
@@ -996,9 +1029,9 @@ class LedgerAndApplicationTests(unittest.TestCase):
self.assertEqual(version["route"], "local")
self.assertIn("JWeBot 版本", version["text"])
self.assertIn("kernel", version["text"])
self.assertIn("最新版本:beta 1.2.1.1019", version["text"])
self.assertIn("更新时间:2026-10-19 17:23:58", version["text"])
self.assertIn("更新摘要:修复 Taffy 短句拆分只换行不分条", version["text"])
self.assertIn("最新版本:beta 1.2.2.1019", version["text"])
self.assertIn("更新时间:2026-10-19 17:31:56", version["text"])
self.assertIn("更新摘要:修复本地命令后的闲聊断上下文", version["text"])
self.assertEqual(debug["route"], "local")
self.assertIn("调试埋点", debug["text"])
self.assertEqual(balance["route"], "local")
@@ -1342,6 +1375,33 @@ class LedgerAndApplicationTests(unittest.TestCase):
account = ledger._load_player_account("group-a", str(person["person_key"]))
self.assertEqual(account["balance"], 1000 + reward)
def test_trivia_quiz_can_be_started_by_local_command(self):
self.application.deepseek.complete = mock.Mock(side_effect=AssertionError)
first = self.application.accept(
event("trivia-force", "@JWeBot /知识问答")
)
second = self.application.accept(
event("trivia-force-existing", "@JWeBot /知识问答")
)
self.assertEqual(first["route"], "local")
self.assertEqual(first["execution_path"], "local-command")
self.assertIn("冷门知识问答", first["text"])
self.assertIn("回答格式:/回答 A", first["text"])
self.assertIn("已经有一题在进行中", second["text"])
self.assertEqual(
self.application.ledger.row("trivia-force")["status"],
"local_completed",
)
self.assertIsNotNone(
self.application.ledger.local_game(
"group-a",
MODULE.TRIVIA_GAME_KEY,
)
)
self.application.deepseek.complete.assert_not_called()
def test_ambient_chat_cooldown_keeps_next_hour_scan_broadcast(self):
ledger = self.application.ledger
observed_at = MODULE.datetime(
@@ -152,6 +152,7 @@ class LocalExtensionInventoryTests(unittest.TestCase):
{
"feature_list",
"deepseek_balance",
"trivia_start",
}
),
)
+1 -1
View File
@@ -20,7 +20,7 @@ SPEC.loader.exec_module(MODULE)
class ReleaseUpdateTests(unittest.TestCase):
release = "beta 1.2.1.1019"
release = "beta 1.2.2.1019"
def setUp(self):
self.temporary = tempfile.TemporaryDirectory()