Files
unshackle/tests/core/test_fps.py
imSp4rky c03ff01c32 fix(core): replace deprecated ast.Num visitor in FPS parser
ast.Num/node.n deprecated since Python 3.8; NodeVisitor falls back to visit_Num with a DeprecationWarning per dispatch. Under -W error this surfaced as a misleading fps ValueError in Video.init. Replace with visit_Constant, reject non-numeric constants, and pin parse results for int/fraction/float inputs in a regression test.
2026-06-05 15:23:27 -06:00

30 lines
789 B
Python

import warnings
import pytest
from unshackle.core.utilities import FPS
@pytest.mark.parametrize(
("expr", "expected"),
[
("24", 24),
("23.976", pytest.approx(23.976)),
("30000/1001", pytest.approx(29.97, abs=0.001)),
],
)
def test_parse_pins_results_without_deprecation_warnings(expr: str, expected: object) -> None:
with warnings.catch_warnings():
warnings.simplefilter("error", DeprecationWarning)
assert FPS.parse(expr) == expected
def test_parse_rejects_non_numeric_constant() -> None:
with pytest.raises(ValueError, match="Invalid fps value"):
FPS.parse("'24'")
def test_parse_rejects_non_division_operation() -> None:
with pytest.raises(ValueError, match="Invalid operation"):
FPS.parse("24+1")