mirror of
https://github.com/saymrwulf/cryptography.git
synced 2026-05-14 20:37:55 +00:00
Python 3.10 changed enum's object and string representation. PyCA cryptography now uses a custom subclass of enum.Enum() will well-defined __repr__ and __str__ from Python 3.9. Related: https://bugs.python.org/issue40066 Fixes: https://github.com/pyca/cryptography/issues/5995 Signed-off-by: Christian Heimes <cheimes@redhat.com>
64 lines
1.6 KiB
Python
64 lines
1.6 KiB
Python
# This file is dual licensed under the terms of the Apache License, Version
|
|
# 2.0, and the BSD License. See the LICENSE file in the root of this repository
|
|
# for complete details.
|
|
|
|
import enum
|
|
import typing
|
|
|
|
import pytest
|
|
|
|
from cryptography import utils
|
|
|
|
|
|
class TestCachedProperty(object):
|
|
def test_simple(self):
|
|
class T(object):
|
|
@utils.cached_property
|
|
def t(self):
|
|
accesses.append(None)
|
|
return 14
|
|
|
|
accesses: typing.List[typing.Optional[T]] = []
|
|
|
|
assert T.t
|
|
t = T()
|
|
assert t.t == 14
|
|
assert len(accesses) == 1
|
|
assert t.t == 14
|
|
assert len(accesses) == 1
|
|
|
|
t = T()
|
|
assert t.t == 14
|
|
assert len(accesses) == 2
|
|
assert t.t == 14
|
|
assert len(accesses) == 2
|
|
|
|
def test_set(self):
|
|
class T(object):
|
|
@utils.cached_property
|
|
def t(self):
|
|
accesses.append(None)
|
|
return 14
|
|
|
|
accesses: typing.List[typing.Optional[T]] = []
|
|
t = T()
|
|
with pytest.raises(AttributeError):
|
|
t.t = None
|
|
assert len(accesses) == 0
|
|
assert t.t == 14
|
|
assert len(accesses) == 1
|
|
with pytest.raises(AttributeError):
|
|
t.t = None
|
|
assert len(accesses) == 1
|
|
assert t.t == 14
|
|
assert len(accesses) == 1
|
|
|
|
|
|
def test_enum():
|
|
class TestEnum(utils.Enum):
|
|
value = "something"
|
|
|
|
assert issubclass(TestEnum, enum.Enum)
|
|
assert isinstance(TestEnum.value, enum.Enum)
|
|
assert repr(TestEnum.value) == "<TestEnum.value: 'something'>"
|
|
assert str(TestEnum.value) == "TestEnum.value"
|