attrs/tests/test_3rd_party.py

37 lines
823 B
Python

# SPDX-License-Identifier: MIT
"""
Tests for compatibility against other Python modules.
"""
import pytest
from hypothesis import given
from attr._compat import PY_3_14_PLUS
from .strategies import simple_classes
cloudpickle = pytest.importorskip("cloudpickle")
@pytest.mark.xfail(
PY_3_14_PLUS, reason="cloudpickle is currently broken on 3.14."
)
class TestCloudpickleCompat:
"""
Tests for compatibility with ``cloudpickle``.
"""
@given(simple_classes(cached_property=False))
def test_repr(self, cls):
"""
attrs instances can be pickled and un-pickled with cloudpickle.
"""
inst = cls()
# Exact values aren't a concern so long as neither direction
# raises an exception.
pkl = cloudpickle.dumps(inst)
cloudpickle.loads(pkl)