summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/regressiontests/templates/tests.py29
1 files changed, 13 insertions, 16 deletions
diff --git a/tests/regressiontests/templates/tests.py b/tests/regressiontests/templates/tests.py
index 2064f13983..c5c65fd234 100644
--- a/tests/regressiontests/templates/tests.py
+++ b/tests/regressiontests/templates/tests.py
@@ -84,6 +84,9 @@ class SomeOtherException(Exception):
class ContextStackException(Exception):
pass
+class ShouldNotExecuteException(Exception):
+ pass
+
class SomeClass:
def __init__(self):
self.otherclass = OtherClass()
@@ -127,8 +130,7 @@ class TestObj(object):
return False
def is_bad(self):
- time.sleep(0.3)
- return True
+ raise ShouldNotExecuteException()
class SilentGetItemClass(object):
def __getitem__(self, key):
@@ -456,24 +458,21 @@ class Templates(unittest.TestCase):
settings.TEMPLATE_DEBUG = template_debug
for is_cached in (False, True):
try:
- start = datetime.now()
- test_template = loader.get_template(name)
- end = datetime.now()
- if end-start > timedelta(seconds=0.2):
- failures.append("Template test (Cached='%s', TEMPLATE_STRING_IF_INVALID='%s', TEMPLATE_DEBUG=%s): %s -- FAILED. Took too long to parse test" % (is_cached, invalid_str, template_debug, name))
+ try:
+ test_template = loader.get_template(name)
+ except ShouldNotExecuteException:
+ failures.append("Template test (Cached='%s', TEMPLATE_STRING_IF_INVALID='%s', TEMPLATE_DEBUG=%s): %s -- FAILED. Template loading invoked method that shouldn't have been invoked." % (is_cached, invalid_str, template_debug, name))
- start = datetime.now()
- output = self.render(test_template, vals)
- end = datetime.now()
- if end-start > timedelta(seconds=0.2):
- failures.append("Template test (Cached='%s', TEMPLATE_STRING_IF_INVALID='%s', TEMPLATE_DEBUG=%s): %s -- FAILED. Took too long to render test" % (is_cached, invalid_str, template_debug, name))
+ try:
+ output = self.render(test_template, vals)
+ except ShouldNotExecuteException:
+ failures.append("Template test (Cached='%s', TEMPLATE_STRING_IF_INVALID='%s', TEMPLATE_DEBUG=%s): %s -- FAILED. Template rendering invoked method that shouldn't have been invoked." % (is_cached, invalid_str, template_debug, name))
except ContextStackException:
failures.append("Template test (Cached='%s', TEMPLATE_STRING_IF_INVALID='%s', TEMPLATE_DEBUG=%s): %s -- FAILED. Context stack was left imbalanced" % (is_cached, invalid_str, template_debug, name))
continue
except Exception:
exc_type, exc_value, exc_tb = sys.exc_info()
if exc_type != result:
- print "CHECK", name, exc_type, result
tb = '\n'.join(traceback.format_exception(exc_type, exc_value, exc_tb))
failures.append("Template test (Cached='%s', TEMPLATE_STRING_IF_INVALID='%s', TEMPLATE_DEBUG=%s): %s -- FAILED. Got %s, exception: %s\n%s" % (is_cached, invalid_str, template_debug, name, exc_type, exc_value, tb))
continue
@@ -921,9 +920,7 @@ class Templates(unittest.TestCase):
'if-tag-error12': ("{% if a not b %}yes{% endif %}", {}, template.TemplateSyntaxError),
# If evaluations are shortcircuited where possible
- # These tests will fail by taking too long to run. When the if clause
- # is shortcircuiting correctly, the is_bad() function shouldn't be
- # evaluated, and the deliberate sleep won't happen.
+ # If is_bad is invoked, it will raise a ShouldNotExecuteException
'if-tag-shortcircuit01': ('{% if x.is_true or x.is_bad %}yes{% else %}no{% endif %}', {'x': TestObj()}, "yes"),
'if-tag-shortcircuit02': ('{% if x.is_false and x.is_bad %}yes{% else %}no{% endif %}', {'x': TestObj()}, "no"),