去敏感提交
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user