From 411d59976410bc6eabcd4d59b6f688de3e879f05 Mon Sep 17 00:00:00 2001 From: kshitijk4poor <82637225+kshitijk4poor@users.noreply.github.com> Date: Thu, 9 Jul 2026 14:58:19 +0530 Subject: [PATCH] test: fold deepseek-v4 cases into canonical reasoning-floor test, drop duplicate file The salvaged PR added a standalone test_reasoning_timeouts.py that duplicated the structure of the existing parametrized test_reasoning_stale_timeout_floor.py. Fold the v4-flash/v4-pro/-free positive cases and deepseek-chat negative cases into the canonical parametrized tables and remove the redundant file. --- .../test_reasoning_stale_timeout_floor.py | 11 ++++- tests/agent/test_reasoning_timeouts.py | 46 ------------------- 2 files changed, 10 insertions(+), 47 deletions(-) delete mode 100644 tests/agent/test_reasoning_timeouts.py diff --git a/tests/agent/test_reasoning_stale_timeout_floor.py b/tests/agent/test_reasoning_stale_timeout_floor.py index 3177b585ab4..d17ed4d0135 100644 --- a/tests/agent/test_reasoning_stale_timeout_floor.py +++ b/tests/agent/test_reasoning_stale_timeout_floor.py @@ -46,10 +46,15 @@ import pytest ("nvidia/nemotron-3-ultra-550b-a55b", 600.0), ("nvidia/nemotron-3-super-120b-a12b", 600.0), ("nvidia/nemotron-3-nano-30b-a3b", 300.0), - # DeepSeek R1 + DeepSeek reasoner. + # DeepSeek R1 + DeepSeek reasoner + V4 reasoning series. + # V4 emits reasoning_content in a separate delta before final + # content (same shape as R1), so it needs the same 600s floor. ("deepseek/deepseek-r1", 600.0), ("deepseek/deepseek-r1-distill-llama-70b", 600.0), ("deepseek/deepseek-reasoner", 600.0), + ("deepseek/deepseek-v4-flash", 600.0), + ("deepseek/deepseek-v4-pro", 600.0), + ("deepseek-v4-flash-free", 600.0), # catalog -free variant inherits via separator anchor # Qwen QwQ + Qwen3 thinking variants (qwen3 family entry matches all). ("qwen/qwq-32b-preview", 300.0), ("qwen/qwen3-235b-a22b-thinking", 180.0), @@ -104,6 +109,10 @@ def test_reasoning_stale_timeout_floor_positive_cases(model, expected): "x-ai/grok-code-fast-1", # Qwen2 must not match Qwen3 (different family). "qwen2-72b-instruct", + # Non-reasoning DeepSeek chat must not match the v4 reasoning entries. + "deepseek-chat", + "deepseek/deepseek-chat", + "some-deepseek-v4-flash", # embedded v4 slug, NOT start of slug # Empty / None / non-string inputs — must return None, not raise. "", None, diff --git a/tests/agent/test_reasoning_timeouts.py b/tests/agent/test_reasoning_timeouts.py deleted file mode 100644 index 9651387b725..00000000000 --- a/tests/agent/test_reasoning_timeouts.py +++ /dev/null @@ -1,46 +0,0 @@ -"""Test get_reasoning_stale_timeout_floor for DeepSeek V4 reasoning models.""" - -from agent.reasoning_timeouts import get_reasoning_stale_timeout_floor - - -def test_deepseek_v4_reasoning_models_have_timeout_floor(): - """DeepSeek V4 reasoning models should have 600s timeout floor. - - DeepSeek V4 models (deepseek-v4-flash, deepseek-v4-pro) emit - reasoning_content in a separate delta field before final content, - requiring the same extended stale timeout floor as R1. - See #60338. - """ - # Direct model names (no aggregator prefix) - assert get_reasoning_stale_timeout_floor("deepseek-v4-flash") == 600.0 - assert get_reasoning_stale_timeout_floor("deepseek-v4-pro") == 600.0 - - # With aggregator prefixes (common usage) - assert get_reasoning_stale_timeout_floor("deepseek/deepseek-v4-flash") == 600.0 - assert get_reasoning_stale_timeout_floor("deepseek/deepseek-v4-pro") == 600.0 - - # With custom provider prefixes - assert get_reasoning_stale_timeout_floor("opencode/deepseek-v4-flash") == 600.0 - assert get_reasoning_stale_timeout_floor("custom/deepseek-v4-pro") == 600.0 - - -def test_deepseek_v4_timeout_floor_matches_r1(): - """V4 models should have the same floor as R1 (600s).""" - v4_flash_floor = get_reasoning_stale_timeout_floor("deepseek-v4-flash") - v4_pro_floor = get_reasoning_stale_timeout_floor("deepseek-v4-pro") - r1_floor = get_reasoning_stale_timeout_floor("deepseek-r1") - reasoner_floor = get_reasoning_stale_timeout_floor("deepseek-reasoner") - - assert v4_flash_floor == v4_pro_floor == r1_floor == reasoner_floor == 600.0 - - -def test_deepseek_v4_does_not_match_non_reasoning_deepseek(): - """Non-reasoning deepseek variants should not match V4 patterns.""" - # deepseek-chat is not a reasoning model and should not match - # the deepseek-v4 patterns (requires start-of-slug anchor). - assert get_reasoning_stale_timeout_floor("deepseek-chat") is None - assert get_reasoning_stale_timeout_floor("deepseek/deepseek-chat") is None - - # But V4 patterns should still match V4 models even with non-V4 prefixes - assert get_reasoning_stale_timeout_floor("some-deepseek-v4-flash") is None # wrong prefix - assert get_reasoning_stale_timeout_floor("deepseek-v4-flash-model") == 600.0 # suffix OK