summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAnssi Kääriäinen <akaariai@gmail.com>2013-05-20 18:45:24 +0300
committerAnssi Kääriäinen <akaariai@gmail.com>2013-05-20 19:05:43 +0300
commit0eddedf7db782a05e098c7024a9056aef7283b81 (patch)
tree76849b94b0cbaf61f8fb9fb4f8b6a324c1759c03 /tests
parent367089a846b7546c98e1c6543b36bfc3b19ee9e8 (diff)
[1.5.x] 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. Backpatch of 266c0bb23e9d64c47ace4d162e582febd5a1e336
Diffstat (limited to 'tests')
-rw-r--r--tests/modeltests/basic/models.py8
-rw-r--r--tests/modeltests/basic/tests.py23
2 files changed, 17 insertions, 14 deletions
diff --git a/tests/modeltests/basic/models.py b/tests/modeltests/basic/models.py
index 660beddf49..1bffcb9cda 100644
--- a/tests/modeltests/basic/models.py
+++ b/tests/modeltests/basic/models.py
@@ -18,3 +18,11 @@ class Article(models.Model):
def __str__(self):
return self.headline
+
+@python_2_unicode_compatible
+class SelfRef(models.Model):
+ selfref = models.ForeignKey('self', null=True, blank=True,
+ related_name='+')
+
+ def __str__(self):
+ return SelfRef.objects.get(selfref=self).pk
diff --git a/tests/modeltests/basic/tests.py b/tests/modeltests/basic/tests.py
index db8c079962..20dceedfab 100644
--- a/tests/modeltests/basic/tests.py
+++ b/tests/modeltests/basic/tests.py
@@ -8,7 +8,7 @@ from django.test import TestCase, skipIfDBFeature, skipUnlessDBFeature
from django.utils import six
from django.utils.translation import ugettext_lazy
-from .models import Article
+from .models import Article, SelfRef
class ModelTest(TestCase):
@@ -84,23 +84,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,
@@ -108,8 +99,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,
)
@@ -639,3 +629,8 @@ class ModelTest(TestCase):
Article.objects.bulk_create([Article(headline=lazy, pub_date=datetime.now())])
article = Article.objects.get()
self.assertEqual(article.headline, notlazy)
+
+ def test_ticket_20278(self):
+ sr = SelfRef.objects.create()
+ with self.assertRaises(ObjectDoesNotExist):
+ SelfRef.objects.get(selfref=sr)