Skip to content

Commit f50839f

Browse files
committed
[tests] Allow for 1 frame drift between architectures
1 parent 7a0751f commit f50839f

2 files changed

Lines changed: 17 additions & 4 deletions

File tree

.github/workflows/release-test.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ jobs:
131131
PYTEST=${{ matrix.os == 'windows-latest' && 'venv_bare/Scripts/pytest' || 'venv_bare/bin/pytest' }}
132132
python -m venv venv_bare
133133
$PY -m pip install pytest "$WHEEL"
134-
$PYTEST -m release -k test_install_bare
134+
$PYTEST tests/release/test_install_matrix.py -m release -k test_install_bare
135135
- name: Test OpenCV Install
136136
shell: bash
137137
run: |
@@ -140,7 +140,7 @@ jobs:
140140
PYTEST=${{ matrix.os == 'windows-latest' && 'venv_opencv/Scripts/pytest' || 'venv_opencv/bin/pytest' }}
141141
python -m venv venv_opencv
142142
$PY -m pip install pytest "${WHEEL}[opencv]"
143-
$PYTEST -m release -k test_opencv_only
143+
$PYTEST tests/release/test_install_matrix.py -m release -k test_opencv_only
144144
- name: Test PyAV Install
145145
shell: bash
146146
run: |
@@ -149,4 +149,4 @@ jobs:
149149
PYTEST=${{ matrix.os == 'windows-latest' && 'venv_pyav/Scripts/pytest' || 'venv_pyav/bin/pytest' }}
150150
python -m venv venv_pyav
151151
$PY -m pip install pytest "${WHEEL}[pyav]"
152-
$PYTEST -m release -k test_pyav_only
152+
$PYTEST tests/release/test_install_matrix.py -m release -k test_pyav_only

tests/release/test_golden_regression.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,4 +78,17 @@ def test_golden_regression(golden_file):
7878
scene_list = scene_manager.get_scene_list()
7979
actual_cuts = [scene[0].frame_num for scene in scene_list[1:]]
8080

81-
assert actual_cuts == expected_cuts, f"Cut list mismatch for {golden_file}"
81+
# HistogramDetector and AdaptiveDetector do enough float-heavy math that
82+
# CPU/SIMD/BLAS differences (e.g. Apple Accelerate vs OpenBLAS, ARM NEON
83+
# vs x86 AVX) plus 1-LSB pixel differences from the decoder can shift cut
84+
# frames by 1 across platforms. Allow ±1 frame for these two detectors.
85+
if detector_name in ("HistogramDetector", "AdaptiveDetector"):
86+
assert len(actual_cuts) == len(expected_cuts), (
87+
f"Cut count mismatch for {golden_file}: actual={actual_cuts} expected={expected_cuts}"
88+
)
89+
for actual, expected in zip(actual_cuts, expected_cuts, strict=True):
90+
assert abs(actual - expected) <= 1, (
91+
f"Cut frame drift > 1 for {golden_file}: actual={actual_cuts} expected={expected_cuts}"
92+
)
93+
else:
94+
assert actual_cuts == expected_cuts, f"Cut list mismatch for {golden_file}"

0 commit comments

Comments
 (0)