test: pin the tier fallback and the assembly guard to real behaviour
Both were wired but unwitnessed: hardcoding the transport's fallback, or blanking the source tier the assembly guard reads, left the whole unit suite green. Cover them where the value is visible -- the bytes on the wire for nearest-vs-error, and the assembly-time refusal that must name low as the executable alternative.
This commit is contained in:
@@ -758,6 +758,24 @@ class TestCrossFieldInvariants:
|
||||
with pytest.raises(ValueError, match="register_provider"):
|
||||
GatewayClient.from_settings(settings, registry=register_provider(mystery))
|
||||
|
||||
def test_source_tier_the_model_cannot_satisfy_fails_at_assembly(self):
|
||||
"""守卫必须读**源级档位**,而不只是 `enable_thinking`(设计 §4.2 三层优先级)。
|
||||
|
||||
变异实测: 把 `_guard_thinking` 的 `source_effort=source.reasoning_effort`
|
||||
改成 `None`,全套单测依然全绿(2026-09-05 独立验证查出)。文案里必须出现
|
||||
可执行替代 `low`——glm-5.3 官方关不掉推理,只报"不行"会把人推回
|
||||
`extra_body` 那条绕过治理的老路(issue #20 的成因)。
|
||||
"""
|
||||
base = self._base()
|
||||
src = dataclasses.replace(
|
||||
base.sources[0], provider="zhipu", model="glm-5.3", reasoning_effort=Effort.NONE
|
||||
)
|
||||
with pytest.raises(ValueError) as exc:
|
||||
GatewayClient.from_settings(dataclasses.replace(base, sources=(src,)))
|
||||
message = str(exc.value)
|
||||
assert "glm-5.3" in message
|
||||
assert "low" in message
|
||||
|
||||
def test_openai_segment_now_assembles_with_the_standard_field(self):
|
||||
# 行为变更(2026-09-04): reasoning_effort 是 OpenAI 官方字段而非厂商方言,
|
||||
# 经网关的兼容端点收得下,故兜底段不再把"关闭"判为形态未知
|
||||
|
||||
Reference in New Issue
Block a user