utils.py (1754B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\lib\jinja2\testsuite\utils.py 2 import gc 3 import unittest 4 import pickle 5 from jinja2.testsuite import JinjaTestCase 6 from jinja2.utils import LRUCache, escape, object_type_repr 7 8 class LRUCacheTestCase(JinjaTestCase): 9 10 def test_simple(self): 11 d = LRUCache(3) 12 d['a'] = 1 13 d['b'] = 2 14 d['c'] = 3 15 d['a'] 16 d['d'] = 4 17 18 def test_pickleable(self): 19 cache = LRUCache(2) 20 cache['foo'] = 42 21 cache['bar'] = 23 22 cache['foo'] 23 for protocol in range(3): 24 copy = pickle.loads(pickle.dumps(cache, protocol)) 25 26 27 class HelpersTestCase(JinjaTestCase): 28 29 def test_object_type_repr(self): 30 31 class X(object): 32 pass 33 34 self.assert_equal(object_type_repr(42), 'int object') 35 self.assert_equal(object_type_repr([]), 'list object') 36 self.assert_equal(object_type_repr(X()), 'jinja2.testsuite.utils.X object') 37 self.assert_equal(object_type_repr(None), 'None') 38 self.assert_equal(object_type_repr(Ellipsis), 'Ellipsis') 39 40 41 class MarkupLeakTestCase(JinjaTestCase): 42 43 def test_markup_leaks(self): 44 counts = set() 45 for count in xrange(20): 46 for item in xrange(1000): 47 escape('foo') 48 escape('<foo>') 49 escape(u'foo') 50 escape(u'<foo>') 51 52 counts.add(len(gc.get_objects())) 53 54 55 def suite(): 56 suite = unittest.TestSuite() 57 suite.addTest(unittest.makeSuite(LRUCacheTestCase)) 58 suite.addTest(unittest.makeSuite(HelpersTestCase)) 59 if not hasattr(escape, 'func_code'): 60 suite.addTest(unittest.makeSuite(MarkupLeakTestCase)) 61 return suite