From 266c0bb23e9d64c47ace4d162e582febd5a1e336 Mon Sep 17 00:00:00 2001 From: Anssi Kääriäinen Date: Mon, 20 May 2013 18:45:24 +0300 Subject: Fixed #20278 -- ensured .get() exceptions do not recurse infinitely A regression caused by d5b93d3281fe93cbef5de84a52 made .get() error reporting recurse infinitely on certain rare conditions. Fixed this by not trying to print the given lookup kwargs. --- tests/basic/tests.py | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) (limited to 'tests/basic/tests.py') diff --git a/tests/basic/tests.py b/tests/basic/tests.py index ccbb9bd423..95feac0deb 100644 --- a/tests/basic/tests.py +++ b/tests/basic/tests.py @@ -11,7 +11,7 @@ from django.test import TestCase, TransactionTestCase, skipIfDBFeature, skipUnle from django.utils import six from django.utils.translation import ugettext_lazy -from .models import Article +from .models import Article, SelfRef class ModelTest(TestCase): @@ -87,23 +87,14 @@ class ModelTest(TestCase): # parameters don't match any object. six.assertRaisesRegex(self, ObjectDoesNotExist, - "Article matching query does not exist. Lookup parameters were " - "{'id__exact': 2000}", + "Article matching query does not exist.", Article.objects.get, id__exact=2000, ) # To avoid dict-ordering related errors check only one lookup # in single assert. - six.assertRaisesRegex(self, - ObjectDoesNotExist, - ".*'pub_date__year': 2005.*", - Article.objects.get, - pub_date__year=2005, - pub_date__month=8, - ) - six.assertRaisesRegex(self, + self.assertRaises( ObjectDoesNotExist, - ".*'pub_date__month': 8.*", Article.objects.get, pub_date__year=2005, pub_date__month=8, @@ -111,8 +102,7 @@ class ModelTest(TestCase): six.assertRaisesRegex(self, ObjectDoesNotExist, - "Article matching query does not exist. Lookup parameters were " - "{'pub_date__week_day': 6}", + "Article matching query does not exist.", Article.objects.get, pub_date__week_day=6, ) @@ -689,6 +679,12 @@ class ModelTest(TestCase): with self.assertNumQueries(0): self.assertEqual(len(Article.objects.none().distinct('headline', 'pub_date')), 0) + def test_ticket_20278(self): + sr = SelfRef.objects.create() + with self.assertRaises(ObjectDoesNotExist): + SelfRef.objects.get(selfref=sr) + + class ConcurrentSaveTests(TransactionTestCase): @skipUnlessDBFeature('test_db_allows_multiple_connections') def test_concurrent_delete_with_save(self): -- cgit v1.3