35 lines
1.5 KiB
Python
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
|