去敏感提交

This commit is contained in:
2026-09-13 18:43:25 +08:00
parent 89021eb9f8
commit 599eea40d6
249 changed files with 16272 additions and 31659 deletions
+18 -18
View File
@@ -28,7 +28,7 @@ def test_countdown_then_open_then_window_timeout(tmp_path):
referee = Referee(action_port=0, data_dir=tmp_path)
opened = []
referee.set_interface_callbacks(lambda s: opened.append(1), lambda s: None)
session = referee.start("q3_practice", "2026001", countdown_s=0.05, window_s=0.3)
session = referee.start("q3_practice", "TEAM-0001", countdown_s=0.05, window_s=0.3)
assert session.phase == "countdown"
assert wait_until(lambda: session.phase == "open")
assert opened == [1]
@@ -39,11 +39,11 @@ def test_countdown_then_open_then_window_timeout(tmp_path):
def test_abort_during_countdown_and_running(tmp_path):
referee = Referee(action_port=0, data_dir=tmp_path)
session = referee.start("q3_practice", "2026001", countdown_s=5)
session = referee.start("q3_practice", "TEAM-0001", countdown_s=5)
assert referee.abort() is True
assert session.phase == "finished" and session.end_reason == "manual_abort"
assert referee.abort() is False # 已结束,不能重复中止
session = referee.start("q3_practice", "2026001", countdown_s=0.05, window_s=30)
session = referee.start("q3_practice", "TEAM-0001", countdown_s=0.05, window_s=30)
assert wait_until(lambda: session.phase == "open")
assert referee.abort() is True
assert session.end_reason == "manual_abort"
@@ -51,11 +51,11 @@ def test_abort_during_countdown_and_running(tmp_path):
def test_cannot_start_while_running_and_restart_after_finish(tmp_path):
referee = Referee(action_port=0, data_dir=tmp_path)
first = referee.start("q3_practice", "2026001", countdown_s=5)
first = referee.start("q3_practice", "TEAM-0001", countdown_s=5)
with pytest.raises(RefereeError):
referee.start("q3_practice", "2026001", countdown_s=0.05)
referee.start("q3_practice", "TEAM-0001", countdown_s=0.05)
assert referee.abort()
second = referee.start("q3_practice", "2026001", countdown_s=0.05, window_s=1)
second = referee.start("q3_practice", "TEAM-0001", countdown_s=0.05, window_s=1)
assert second.case_code != first.case_code # 新的一局、新的案例编码
referee.abort()
# 结束后不能复位继续原测试,只能开始新的一局 [题面 4.5]
@@ -65,19 +65,19 @@ def test_cannot_start_while_running_and_restart_after_finish(tmp_path):
def test_formal_attempts_accounting(tmp_path):
referee = Referee(action_port=0, data_dir=tmp_path)
for _ in range(FORMAL_ATTEMPTS):
_session = referee.start("q3_formal", "2026001", countdown_s=0.05)
_session = referee.start("q3_formal", "TEAM-0001", countdown_s=0.05)
referee.abort() # 正式中止仍占用机会 [题面 4.5]
with pytest.raises(RefereeError):
referee.start("q3_formal", "2026001", countdown_s=0.05)
referee.start("q3_formal", "TEAM-0001", countdown_s=0.05)
# 演练不限次数
for _ in range(FORMAL_ATTEMPTS + 2):
referee.start("q3_practice", "2026001", countdown_s=0.05)
referee.start("q3_practice", "TEAM-0001", countdown_s=0.05)
referee.abort()
def test_truth_policy_practice_vs_formal(tmp_path):
referee = Referee(action_port=0, data_dir=tmp_path)
practice = referee.start("q3_practice", "2026001", countdown_s=0.05, window_s=5,
practice = referee.start("q3_practice", "TEAM-0001", countdown_s=0.05, window_s=5,
seed=42, source_count=12)
assert wait_until(lambda: practice.phase == "open")
referee.abort()
@@ -86,7 +86,7 @@ def test_truth_policy_practice_vs_formal(tmp_path):
assert state["truth"]["source_count"] == 12
assert {"omni_count", "directional_count"} <= set(state["truth"])
formal = referee.start("q4_formal", "2026001", countdown_s=0.05, seed=42)
formal = referee.start("q4_formal", "TEAM-0001", countdown_s=0.05, seed=42)
assert wait_until(lambda: formal.phase == "open")
# 运行中考官视图也不显示 [题面 4.6:正式测试任何界面不显示真值]
assert referee.snapshot(examiner=True)["truth"]["revealed"] is False
@@ -97,9 +97,9 @@ def test_truth_policy_practice_vs_formal(tmp_path):
def test_exit_finishes_session_with_user_exit(tmp_path):
referee = Referee(action_port=0, data_dir=tmp_path)
session = referee.start("q3_practice", "2026001", countdown_s=0.05, window_s=20)
session = referee.start("q3_practice", "TEAM-0001", countdown_s=0.05, window_s=20)
assert wait_until(lambda: session.phase == "open")
payload = dict(arena_id="default", robot_id="2026001", request_id="enter")
payload = dict(arena_id="default", robot_id="TEAM-0001", request_id="enter")
session.simulator.handle("/enter", payload)
session.simulator.handle("/exit", {**payload, "request_id": "exit"})
assert wait_until(lambda: session.phase == "finished")
@@ -109,9 +109,9 @@ def test_exit_finishes_session_with_user_exit(tmp_path):
def test_program_timeout_after_enter(tmp_path):
spec = Spec(field=FieldSpec(max_real_duration_s=0.3))
referee = Referee(action_port=0, data_dir=tmp_path, spec=spec)
session = referee.start("q3_practice", "2026001", countdown_s=0.05, window_s=10)
session = referee.start("q3_practice", "TEAM-0001", countdown_s=0.05, window_s=10)
assert wait_until(lambda: session.phase == "open")
session.simulator.handle("/enter", dict(arena_id="default", robot_id="2026001",
session.simulator.handle("/enter", dict(arena_id="default", robot_id="TEAM-0001",
request_id="enter"))
assert wait_until(lambda: session.phase == "finished", timeout=5)
assert session.end_reason == "program_timeout"
@@ -119,7 +119,7 @@ def test_program_timeout_after_enter(tmp_path):
def test_record_action_updates_feed_trail_and_counts(tmp_path):
referee = Referee(action_port=0, data_dir=tmp_path)
session = referee.start("q3_practice", "2026001", countdown_s=0.05, window_s=5)
session = referee.start("q3_practice", "TEAM-0001", countdown_s=0.05, window_s=5)
assert wait_until(lambda: session.phase == "open")
_sim = session.simulator
referee.record_action(session, "POST", "/measure",
@@ -142,7 +142,7 @@ def test_record_action_updates_feed_trail_and_counts(tmp_path):
def test_behavior_log_and_meta_written(tmp_path):
referee = Referee(action_port=0, data_dir=tmp_path)
session = referee.start("q3_practice", "2026001", countdown_s=0.05, window_s=1,
session = referee.start("q3_practice", "TEAM-0001", countdown_s=0.05, window_s=1,
seed=7, source_count=10)
assert wait_until(lambda: session.phase == "open")
referee.record_action(session, "POST", "/measure",
@@ -168,7 +168,7 @@ def test_display_limit_and_port_settings(tmp_path):
referee.set_display_limit(50)
with pytest.raises(RefereeError):
referee.set_display_limit(5001)
_session = referee.start("q3_practice", "2026001", countdown_s=5)
_session = referee.start("q3_practice", "TEAM-0001", countdown_s=5)
with pytest.raises(RefereeError):
referee.set_action_port(8080) # 测试进行中不能改端口
referee.abort()