From 17bd39ae5a0337f8bcd535a5fb03d27aaf0ab0c4 Mon Sep 17 00:00:00 2001 From: Ian Kelly Date: Fri, 12 Nov 2010 19:47:41 +0000 Subject: [PATCH] [1.2.X] Backport of r14547 from trunk. Fixed a test case that was failing in Oracle due to conflation of null and empty strings. git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.2.X@14550 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- .../fixtures_regress/models.py | 8 +-- .../regressiontests/fixtures_regress/tests.py | 50 +++++++++++++------ 2 files changed, 35 insertions(+), 23 deletions(-) diff --git a/tests/regressiontests/fixtures_regress/models.py b/tests/regressiontests/fixtures_regress/models.py index 2c435625f0..7465fd242d 100644 --- a/tests/regressiontests/fixtures_regress/models.py +++ b/tests/regressiontests/fixtures_regress/models.py @@ -28,13 +28,7 @@ class Stuff(models.Model): owner = models.ForeignKey(User, null=True) def __unicode__(self): - # Oracle doesn't distinguish between None and the empty string. - # This hack makes the test case pass using Oracle. - name = self.name - if (settings.DATABASES[DEFAULT_DB_ALIAS]['ENGINE'] == 'django.db.backends.oracle' - and name == u''): - name = None - return unicode(name) + u' is owned by ' + unicode(self.owner) + return unicode(self.name) + u' is owned by ' + unicode(self.owner) class Absolute(models.Model): diff --git a/tests/regressiontests/fixtures_regress/tests.py b/tests/regressiontests/fixtures_regress/tests.py index 404181e52b..57ee7c0451 100644 --- a/tests/regressiontests/fixtures_regress/tests.py +++ b/tests/regressiontests/fixtures_regress/tests.py @@ -7,11 +7,12 @@ try: except ImportError: from StringIO import StringIO +from django.conf import settings from django.core import management from django.core.management.commands.dumpdata import sort_dependencies from django.core.management.base import CommandError from django.db.models import signals -from django.db import transaction +from django.db import DEFAULT_DB_ALIAS, transaction from django.test import TestCase, TransactionTestCase from models import Animal, Stuff @@ -58,22 +59,39 @@ class TestFixtures(TestCase): weight=2.2 ) animal.save() - self.assertGreater(animal.id, 1) + self.assertTrue(animal.id > 1) - def test_pretty_print_xml(self): - """ - Regression test for ticket #4558 -- pretty printing of XML fixtures - doesn't affect parsing of None values. - """ - # Load a pretty-printed XML fixture with Nulls. - management.call_command( - 'loaddata', - 'pretty.xml', - verbosity=0, - commit=False - ) - self.assertEqual(Stuff.objects.all()[0].name, None) - self.assertEqual(Stuff.objects.all()[0].owner, None) + if settings.DATABASES[DEFAULT_DB_ALIAS]['ENGINE'] != 'django.db.backends.oracle': + def test_pretty_print_xml(self): + """ + Regression test for ticket #4558 -- pretty printing of XML fixtures + doesn't affect parsing of None values. + """ + # Load a pretty-printed XML fixture with Nulls. + management.call_command( + 'loaddata', + 'pretty.xml', + verbosity=0, + commit=False + ) + self.assertEqual(Stuff.objects.all()[0].name, None) + self.assertEqual(Stuff.objects.all()[0].owner, None) + + if settings.DATABASES[DEFAULT_DB_ALIAS]['ENGINE'] == 'django.db.backends.oracle': + def test_pretty_print_xml_empty_strings(self): + """ + Regression test for ticket #4558 -- pretty printing of XML fixtures + doesn't affect parsing of None values. + """ + # Load a pretty-printed XML fixture with Nulls. + management.call_command( + 'loaddata', + 'pretty.xml', + verbosity=0, + commit=False + ) + self.assertEqual(Stuff.objects.all()[0].name, u'') + self.assertEqual(Stuff.objects.all()[0].owner, None) def test_absolute_path(self): """