From db3c64d49ba1f2db93a628f68516b77039919ab7 Mon Sep 17 00:00:00 2001 From: WorkBuddy Date: Tue, 22 Sep 2026 12:46:43 +0800 Subject: [PATCH] =?UTF-8?q?test:=20=E4=BF=AE=E5=A4=8D=20standings=20?= =?UTF-8?q?=E7=BA=A6=E6=9D=9F=E6=96=AD=E8=A8=80=E7=9A=84=20flaky(=E5=8C=BF?= =?UTF-8?q?=E5=90=8D=E7=BA=A6=E6=9D=9F=20name=3DNone)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 与 log-persistence 分支同款修复:constraints 集合含匿名约束(name=None), any() 子串匹配撞上 None 直接 TypeError,集合顺序不定导致间歇失败。 先判真值再匹配。 --- tests/test_p0_standings_cutoff.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/test_p0_standings_cutoff.py b/tests/test_p0_standings_cutoff.py index 09ad71b..3b9d397 100644 --- a/tests/test_p0_standings_cutoff.py +++ b/tests/test_p0_standings_cutoff.py @@ -73,7 +73,9 @@ class TestStandingsModel: def test_unique_constraint_includes_available_at(self): names = {c.name for c in Standing.__table__.constraints} - assert any("available" in n and n.startswith("uq_") for n in names), \ + # 匿名约束(PK/Check)的 name 是 None,必须先判真值再子串匹配, + # 否则 any() 撞上 None 直接 TypeError(集合顺序不定 → flaky) + assert any(n and "available" in n and n.startswith("uq_") for n in names), \ f"缺少含 available_at 的唯一约束,现有: {names}" def test_old_unique_constraint_removed(self):