-
Notifications
You must be signed in to change notification settings - Fork 15
Open
Description
I'm trying to package skia-pathops in Fedora, and trying to build it in Fedora 42 (Python 3.13) consistently fails with two test cases, conic_2_quad-operations3-expected3 and arc_to_quads-operations4-expected4. The log captured below. Appreciate any pointers.
============================================================ test session starts =============================================================
platform linux -- Python 3.13.7, pytest-8.3.4, pluggy-1.5.0 -- /usr/bin/python3
cachedir: .pytest_cache
Using --randomly-seed=1072934744
rootdir: /home/rajeesh/Programs/RPMBUILD/BUILD/python-skia_pathops-0.8.0.post2-build/skia_pathops-0.8.0.post2
configfile: tox.ini
testpaths: src/python/pathops, tests
plugins: anyio-4.8.0, xdist-3.6.1, randomly-3.16.0
collected 48 items
tests/pathops_test.py::test_simplify_clockwise PASSED [ 2%]
tests/pathops_test.py::test_reverse_path[operations15-expected15] PASSED [ 4%]
tests/pathops_test.py::test_reverse_path[operations9-expected9] PASSED [ 6%]
tests/pathops_test.py::test_reverse_path[operations17-expected17] PASSED [ 8%]
tests/pathops_test.py::test_reverse_path[operations8-expected8] PASSED [ 10%]
tests/pathops_test.py::test_reverse_path[operations11-expected11] PASSED [ 12%]
tests/pathops_test.py::test_path_operation[conic_2_quad-operations3-expected3] FAILED [ 14%]
tests/pathops_test.py::test_path_operation[arc_to_quads-operations4-expected4] FAILED [ 16%]
tests/pathops_test.py::test_bits2float PASSED [ 18%]
tests/pathops_test.py::test_reverse_path[operations16-expected16] PASSED [ 20%]
tests/pathops_test.py::test_reverse_path[operations13-expected13] PASSED [ 22%]
tests/pathops_test.py::test_reverse_path[operations14-expected14] PASSED [ 25%]
tests/pathops_test.py::test_reverse_path[operations5-expected5] PASSED [ 27%]
tests/pathops_test.py::test_duplicate_start_point PASSED [ 29%]
tests/pathops_test.py::test_reverse_path[operations0-expected0] PASSED [ 31%]
tests/pathops_test.py::test_path_operation[stroke_dash_array-operations1-expected1] PASSED [ 33%]
tests/pathops_test.py::test_reverse_path[operations6-expected6] PASSED [ 35%]
tests/pathops_test.py::test_path_operation[stroke_dash_offset-operations2-expected2] PASSED [ 37%]
tests/pathops_test.py::test_reverse_path[operations1-expected1] PASSED [ 39%]
tests/pathops_test.py::test_simplify PASSED [ 41%]
tests/pathops_test.py::test_reverse_path[operations4-expected4] PASSED [ 43%]
tests/pathops_test.py::test_reverse_path[operations2-expected2] PASSED [ 45%]
tests/pathops_test.py::test_reverse_path[operations3-expected3] PASSED [ 47%]
tests/pathops_test.py::test_reverse_path[operations12-expected12] PASSED [ 50%]
tests/pathops_test.py::test_strip_collinear_moveTo PASSED [ 52%]
tests/pathops_test.py::test_reverse_path[operations10-expected10] PASSED [ 54%]
tests/pathops_test.py::test_reverse_path[operations7-expected7] PASSED [ 56%]
tests/pathops_test.py::test_path_operation[stroke_2_wide-operations0-expected0] PASSED [ 58%]
tests/pathops_test.py::test_float2bits PASSED [ 60%]
tests/pathops_test.py::OpBuilderTest::test_resolve PASSED [ 62%]
tests/pathops_test.py::OpBuilderTest::test_add PASSED [ 64%]
tests/pathops_test.py::OpBuilderTest::test_init PASSED [ 66%]
tests/pathops_test.py::PathTest::test_last_implicit_lineTo PASSED [ 68%]
tests/pathops_test.py::PathTest::test_eq_operator PASSED [ 70%]
tests/pathops_test.py::PathTest::test_getPen PASSED [ 72%]
tests/pathops_test.py::PathTest::test_init PASSED [ 75%]
tests/pathops_test.py::PathTest::test_copy PASSED [ 77%]
tests/pathops_test.py::PathTest::test_qCurveTo_varargs PASSED [ 79%]
tests/pathops_test.py::PathTest::test_pen_addComponent_missing_required_glyphSet PASSED [ 81%]
tests/pathops_test.py::PathTest::test_decompose_join_quadratic_segments PASSED [ 83%]
tests/pathops_test.py::PathTest::test_decompose_join_oncurveless_quadratic_segments PASSED [ 85%]
tests/pathops_test.py::PathTest::test_raise_open_contour_error PASSED [ 87%]
tests/pathops_test.py::PathTest::test_pen_addComponent_decomposed_from_glyphSet PASSED [ 89%]
tests/pathops_test.py::PathTest::test_allow_open_contour PASSED [ 91%]
tests/pathops_test.py::PathTest::test_transform PASSED [ 93%]
tests/pathops_test.py::PathTest::test_curveTo_varargs PASSED [ 95%]
tests/pathops_test.py::PathTest::test_draw PASSED [ 97%]
tests/operations_test.py::test_intersection[subject_path0-clip_path0-expected0] PASSED [100%]
================================================================== FAILURES ==================================================================
__________________________________________ test_path_operation[conic_2_quad-operations3-expected3] ___________________________________________
message = 'conic_2_quad', operations = (('moveTo', (10, 10)), ('conicTo', (20, 20, 10, 30, 3)), ('convertConicsToQuads', ()))
expected = (('moveTo', ((10.0, 10.0),)), ('qCurveTo', ((14.39, 18.79), (17.5, 26.04), (17.5, 28.96), (14.39, 30.0), (10.0, 30.0))), ('endPath', ()))
@pytest.mark.parametrize(
"message, operations, expected",
[
(
'stroke_2_wide',
(
('moveTo', (5, 5)),
('lineTo', (10, 5)),
('stroke', (2, 0, 0, 1)),
),
(
('moveTo', ((5., 4.),)),
('lineTo', ((10., 4.),)),
('lineTo', ((10., 6.),)),
('lineTo', ((5., 6.),)),
('lineTo', ((5., 4.),)),
('closePath', ()),
),
),
(
'stroke_dash_array',
(
('moveTo', (5, 5)),
('lineTo', (10, 5)),
('stroke', (2, 0, 0, 1, (1, 1))),
),
(
('moveTo', ((5.0, 4.0),)),
('lineTo', ((6.0, 4.0),)),
('lineTo', ((6.0, 6.0),)),
('lineTo', ((5.0, 6.0),)),
('endPath', ()),
('moveTo', ((7.0, 4.0),)),
('lineTo', ((8.0, 4.0),)),
('lineTo', ((8.0, 6.0),)),
('lineTo', ((7.0, 6.0),)),
('endPath', ()),
('moveTo', ((9.0, 4.0),)),
('lineTo', ((10.0, 4.0),)),
('lineTo', ((10.0, 6.0),)),
('lineTo', ((9.0, 6.0),)),
('endPath', ()),
),
),
(
'stroke_dash_offset',
(
('moveTo', (5, 5)),
('lineTo', (10, 5)),
('stroke', (2, 0, 0, 1, (1, 1), 0.5)),
),
(
('moveTo', ((5.0, 4.0),)),
('lineTo', ((5.5, 4.0),)),
('lineTo', ((5.5, 6.0),)),
('lineTo', ((5.0, 6.0),)),
('endPath', ()),
('moveTo', ((6.5, 4.0),)),
('lineTo', ((7.5, 4.0),)),
('lineTo', ((7.5, 6.0),)),
('lineTo', ((6.5, 6.0),)),
('endPath', ()),
('moveTo', ((8.5, 4.0),)),
('lineTo', ((9.5, 4.0),)),
('lineTo', ((9.5, 6.0),)),
('lineTo', ((8.5, 6.0),)),
('endPath', ()),
),
),
(
'conic_2_quad',
(
('moveTo', (10, 10)),
('conicTo', (20, 20, 10, 30, 3)),
('convertConicsToQuads', ()),
),
(
('moveTo', ((10.0, 10.0),)),
('qCurveTo', ((14.39, 18.79), (17.50, 26.04), (17.50, 28.96), (14.39, 30.00), (10.0, 30.0))),
('endPath', ())
),
),
(
'arc_to_quads',
(
('moveTo', (7, 5)),
('arcTo', (3, 1, 0, ArcSize.SMALL, Direction.CCW, 7, 2)),
('convertConicsToQuads', ()),
),
(
('moveTo', ((7.0, 5.0),)),
('qCurveTo', ((11.5, 5.0), (11.5, 2.0), (7.0, 2.0))),
('endPath', ()),
)
)
]
)
def test_path_operation(message, operations, expected):
path = Path()
for op, args in operations:
getattr(path, op)(*args)
# round the values we get back
rounded = []
for verb, pts in path.segments:
round_pts = []
for pt in pts:
round_pts.append(tuple(round(c, 2) for c in pt))
rounded.append((verb, tuple(round_pts)))
> assert tuple(rounded) == expected, message
E AssertionError: conic_2_quad
E assert (('moveTo', (...endPath', ())) == (('moveTo', (...endPath', ()))
E
E At index 1 diff: ('qCurveTo', ((10.0, 10.0), (10.0, 11.52), (10.0, 14.34), (10.0, 18.01), (10.0, 21.99), (10.0, 25.66), (10.0, 28.48), (10.0, 30.0), (10.0, 30.0))) != ('qCurveTo', ((14.39, 18.79), (17.5, 26.04), (17.5, 28.96), (14.39, 30.0), (10.0, 30.0)))
E
E Full diff:
E (
E (
E 'moveTo',...
E
E ...Full output truncated (72 lines hidden), use '-vv' to show
tests/pathops_test.py:1002: AssertionError
__________________________________________ test_path_operation[arc_to_quads-operations4-expected4] ___________________________________________
message = 'arc_to_quads'
operations = (('moveTo', (7, 5)), ('arcTo', (3, 1, 0, <ArcSize.SMALL: 0>, <Direction.CCW: 1>, 7, ...)), ('convertConicsToQuads', ()))
expected = (('moveTo', ((7.0, 5.0),)), ('qCurveTo', ((11.5, 5.0), (11.5, 2.0), (7.0, 2.0))), ('endPath', ()))
@pytest.mark.parametrize(
"message, operations, expected",
[
(
'stroke_2_wide',
(
('moveTo', (5, 5)),
('lineTo', (10, 5)),
('stroke', (2, 0, 0, 1)),
),
(
('moveTo', ((5., 4.),)),
('lineTo', ((10., 4.),)),
('lineTo', ((10., 6.),)),
('lineTo', ((5., 6.),)),
('lineTo', ((5., 4.),)),
('closePath', ()),
),
),
(
'stroke_dash_array',
(
('moveTo', (5, 5)),
('lineTo', (10, 5)),
('stroke', (2, 0, 0, 1, (1, 1))),
),
(
('moveTo', ((5.0, 4.0),)),
('lineTo', ((6.0, 4.0),)),
('lineTo', ((6.0, 6.0),)),
('lineTo', ((5.0, 6.0),)),
('endPath', ()),
('moveTo', ((7.0, 4.0),)),
('lineTo', ((8.0, 4.0),)),
('lineTo', ((8.0, 6.0),)),
('lineTo', ((7.0, 6.0),)),
('endPath', ()),
('moveTo', ((9.0, 4.0),)),
('lineTo', ((10.0, 4.0),)),
('lineTo', ((10.0, 6.0),)),
('lineTo', ((9.0, 6.0),)),
('endPath', ()),
),
),
(
'stroke_dash_offset',
(
('moveTo', (5, 5)),
('lineTo', (10, 5)),
('stroke', (2, 0, 0, 1, (1, 1), 0.5)),
),
(
('moveTo', ((5.0, 4.0),)),
('lineTo', ((5.5, 4.0),)),
('lineTo', ((5.5, 6.0),)),
('lineTo', ((5.0, 6.0),)),
('endPath', ()),
('moveTo', ((6.5, 4.0),)),
('lineTo', ((7.5, 4.0),)),
('lineTo', ((7.5, 6.0),)),
('lineTo', ((6.5, 6.0),)),
('endPath', ()),
('moveTo', ((8.5, 4.0),)),
('lineTo', ((9.5, 4.0),)),
('lineTo', ((9.5, 6.0),)),
('lineTo', ((8.5, 6.0),)),
('endPath', ()),
),
),
(
'conic_2_quad',
(
('moveTo', (10, 10)),
('conicTo', (20, 20, 10, 30, 3)),
('convertConicsToQuads', ()),
),
(
('moveTo', ((10.0, 10.0),)),
('qCurveTo', ((14.39, 18.79), (17.50, 26.04), (17.50, 28.96), (14.39, 30.00), (10.0, 30.0))),
('endPath', ())
),
),
(
'arc_to_quads',
(
('moveTo', (7, 5)),
('arcTo', (3, 1, 0, ArcSize.SMALL, Direction.CCW, 7, 2)),
('convertConicsToQuads', ()),
),
(
('moveTo', ((7.0, 5.0),)),
('qCurveTo', ((11.5, 5.0), (11.5, 2.0), (7.0, 2.0))),
('endPath', ()),
)
)
]
)
def test_path_operation(message, operations, expected):
path = Path()
for op, args in operations:
getattr(path, op)(*args)
# round the values we get back
rounded = []
for verb, pts in path.segments:
round_pts = []
for pt in pts:
round_pts.append(tuple(round(c, 2) for c in pt))
rounded.append((verb, tuple(round_pts)))
> assert tuple(rounded) == expected, message
E AssertionError: arc_to_quads
E assert (('moveTo', (...endPath', ())) == (('moveTo', (...endPath', ()))
E
E At index 1 diff: ('qCurveTo', ((7.0, 5.0), (8.32, 4.56), (10.18, 3.94), (11.5, 3.5), (11.5, 3.5), (10.18, 3.06), (8.32, 2.44), (7.0, 2.0), (7.0, 2.0))) != ('qCurveTo', ((11.5, 5.0), (11.5, 2.0), (7.0, 2.0)))
E
E Full diff:
E (
E (
E 'moveTo',...
E
E ...Full output truncated (56 lines hidden), use '-vv' to show
tests/pathops_test.py:1002: AssertionError
========================================================== short test summary info ===========================================================
FAILED tests/pathops_test.py::test_path_operation[conic_2_quad-operations3-expected3] - AssertionError: conic_2_quad
FAILED tests/pathops_test.py::test_path_operation[arc_to_quads-operations4-expected4] - AssertionError: arc_to_quads
======================================================== 2 failed, 46 passed in 0.26s ========================================================
alerque
Metadata
Metadata
Assignees
Labels
No labels