summaryrefslogtreecommitdiffstats
path: root/gitlint-core/gitlint/tests/test_cache.py
diff options
context:
space:
mode:
Diffstat (limited to 'gitlint-core/gitlint/tests/test_cache.py')
-rw-r--r--gitlint-core/gitlint/tests/test_cache.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/gitlint-core/gitlint/tests/test_cache.py b/gitlint-core/gitlint/tests/test_cache.py
new file mode 100644
index 0000000..08b821e
--- /dev/null
+++ b/gitlint-core/gitlint/tests/test_cache.py
@@ -0,0 +1,55 @@
+from gitlint.cache import PropertyCache, cache
+from gitlint.tests.base import BaseTestCase
+
+
+class CacheTests(BaseTestCase):
+ class MyClass(PropertyCache):
+ """Simple class that has cached properties, used for testing."""
+
+ def __init__(self):
+ PropertyCache.__init__(self)
+ self.counter = 0
+
+ @property
+ @cache
+ def foo(self):
+ self.counter += 1
+ return "bår"
+
+ @property
+ @cache(cachekey="hür")
+ def bar(self):
+ self.counter += 1
+ return "fōo"
+
+ def test_cache(self):
+ # Init new class with cached properties
+ myclass = self.MyClass()
+ self.assertEqual(myclass.counter, 0)
+ self.assertDictEqual(myclass._cache, {})
+
+ # Assert that function is called on first access, cache is set
+ self.assertEqual(myclass.foo, "bår")
+ self.assertEqual(myclass.counter, 1)
+ self.assertDictEqual(myclass._cache, {"foo": "bår"})
+
+ # After function is not called on subsequent access, cache is still set
+ self.assertEqual(myclass.foo, "bår")
+ self.assertEqual(myclass.counter, 1)
+ self.assertDictEqual(myclass._cache, {"foo": "bår"})
+
+ def test_cache_custom_key(self):
+ # Init new class with cached properties
+ myclass = self.MyClass()
+ self.assertEqual(myclass.counter, 0)
+ self.assertDictEqual(myclass._cache, {})
+
+ # Assert that function is called on first access, cache is set with custom key
+ self.assertEqual(myclass.bar, "fōo")
+ self.assertEqual(myclass.counter, 1)
+ self.assertDictEqual(myclass._cache, {"hür": "fōo"})
+
+ # After function is not called on subsequent access, cache is still set
+ self.assertEqual(myclass.bar, "fōo")
+ self.assertEqual(myclass.counter, 1)
+ self.assertDictEqual(myclass._cache, {"hür": "fōo"})