Files
hockey_new/tests/test_build200_goal_ack.py

35 lines
1.5 KiB
Python

"""Goal deletion requires actual vMix ACK before visible/persisted mutation."""
import os
from pathlib import Path
import shutil
import subprocess
import pytest
ROOT = Path(__file__).resolve().parents[1]
CASES = [
'normal_goal_ack_before_row_delete', 'f2_off_never_mutates_or_replays', 'f2_off_during_ack_keeps_row',
'nack_keeps_row_without_replay', 'unknown_ack_keeps_row_without_replay',
'double_first_ack_before_shortening', 'double_second_ack_before_delete',
'duplicate_success_only_one_removal', 'rehydrate_pending_does_not_repeat_goal',
'role_change_before_ack_keeps_row', 'major_and_equal_strength_do_not_delete',
'ordinary_goal_does_not_need_shb', 'penalty_shot_exception_stays',
'undo_waits_for_vmix_before_restore', 'undo_nack_does_not_invent_restored_row',
'held_ack_pause_keeps_latest_native_time', 'held_ack_resume_keeps_latest_native_time',
'unmapped_current_segment_uses_other_field_ack', 'shared_input_removes_only_chosen_field',
'joint_two_four_right_phase_goal_and_undo',
]
@pytest.mark.parametrize('case', CASES)
def test_goal_ack(case):
node = shutil.which('node')
assert node, 'Node is required for executable browser tests'
result = subprocess.run(
[node, str(ROOT / 'tests/build200_goal_ack.cjs'), case,
os.environ.get('BUILD200_RUNTIME_ROOT', str(ROOT))],
cwd=ROOT, text=True, capture_output=True, timeout=20,
)
assert result.returncode == 0, result.stdout + result.stderr
assert f'PASS BUILD200 goal ACK: {case}' in result.stdout, result.stdout + result.stderr