From 0c9aed91697c5bc1eb16c2254406149e2395fdae Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Sat, 8 Jul 2017 21:50:01 -0400 Subject: Fixed #3747 -- cache extensions on x.509 objects (#3769) * Fixed #3747 -- cache extensions on x.509 objects * be kind to cpython, save a dict lookup * flake8 * changelog --- tests/test_cryptography_utils.py | 47 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) (limited to 'tests') diff --git a/tests/test_cryptography_utils.py b/tests/test_cryptography_utils.py index 037d11cc..290e1612 100644 --- a/tests/test_cryptography_utils.py +++ b/tests/test_cryptography_utils.py @@ -4,8 +4,55 @@ from __future__ import absolute_import, division, print_function +import pytest + from cryptography import utils def test_int_from_bytes_bytearray(): assert utils.int_from_bytes(bytearray(b"\x02\x10"), "big") == 528 + + +class TestCachedProperty(object): + def test_simple(self): + accesses = [] + + class T(object): + @utils.cached_property + def t(self): + accesses.append(None) + return 14 + + 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): + accesses = [] + + class T(object): + @utils.cached_property + def t(self): + accesses.append(None) + return 14 + + 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 -- cgit v1.2.3