From 9dc5702932a0031bc4fb5473f2cdccffc61dbe30 Mon Sep 17 00:00:00 2001 From: Aymeric Augustin Date: Mon, 18 Mar 2013 11:22:43 +0100 Subject: Fixed #19456 -- Avoid infinite recursion when tracing LazyObject.__init__. Thanks blaze33 for the patch. --- tests/utils_tests/simplelazyobject.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'tests') diff --git a/tests/utils_tests/simplelazyobject.py b/tests/utils_tests/simplelazyobject.py index 3bd6bf1e7f..883e60aa81 100644 --- a/tests/utils_tests/simplelazyobject.py +++ b/tests/utils_tests/simplelazyobject.py @@ -2,6 +2,7 @@ from __future__ import unicode_literals import copy import pickle +import sys from django.utils import six from django.utils.unittest import TestCase @@ -138,3 +139,16 @@ class TestUtilsSimpleLazyObject(TestCase): del lazydict['one'] with self.assertRaises(KeyError): lazydict['one'] + + def test_trace(self): + # See ticket #19456 + old_trace_func = sys.gettrace() + try: + def trace_func(frame, event, arg): + frame.f_locals['self'].__class__ + if old_trace_func is not None: + old_trace_func(frame, event, arg) + sys.settrace(trace_func) + SimpleLazyObject(None) + finally: + sys.settrace(old_trace_func) -- cgit v1.3