From 18357bf3acae0c70e4fd3b692efb4db7638cb574 Mon Sep 17 00:00:00 2001 From: Anssi Kääriäinen Date: Sat, 27 Oct 2012 04:51:14 +0300 Subject: [1.5.x] Fixed Oracle failure for "%" in table name Backpatch of 2249bd275cbae6b73716bf36f5f36def1bb4222e --- tests/regressiontests/backends/tests.py | 8 ++++++++ tests/regressiontests/inspectdb/tests.py | 11 +++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) (limited to 'tests') diff --git a/tests/regressiontests/backends/tests.py b/tests/regressiontests/backends/tests.py index d284cfaac8..4766dcf44e 100644 --- a/tests/regressiontests/backends/tests.py +++ b/tests/regressiontests/backends/tests.py @@ -25,6 +25,14 @@ from . import models class OracleChecks(unittest.TestCase): + @unittest.skipUnless(connection.vendor == 'oracle', + "No need to check Oracle quote_name semantics") + def test_quote_name(self): + # Check that '%' chars are escaped for query execution. + name = '"SOME%NAME"' + quoted_name = connection.ops.quote_name(name) + self.assertEquals(quoted_name % (), name) + @unittest.skipUnless(connection.vendor == 'oracle', "No need to check Oracle cursor semantics") def test_dbms_session(self): diff --git a/tests/regressiontests/inspectdb/tests.py b/tests/regressiontests/inspectdb/tests.py index 484e7f4060..028d263337 100644 --- a/tests/regressiontests/inspectdb/tests.py +++ b/tests/regressiontests/inspectdb/tests.py @@ -1,6 +1,7 @@ from __future__ import unicode_literals from django.core.management import call_command +from django.db import connection from django.test import TestCase, skipUnlessDBFeature from django.utils.six import StringIO @@ -60,14 +61,16 @@ class InspectDBTestCase(TestCase): self.assertIn("number_45extra = models.CharField", output) def test_special_column_name_introspection(self): - """Introspection of column names containing special characters, - unsuitable for Python identifiers + """ + Introspection of column names containing special characters, + unsuitable for Python identifiers """ out = StringIO() call_command('inspectdb', stdout=out) output = out.getvalue() + base_name = 'Field' if connection.vendor != 'oracle' else 'field' self.assertIn("field = models.IntegerField()", output) - self.assertIn("field_field = models.IntegerField(db_column='Field_')", output) - self.assertIn("field_field_0 = models.IntegerField(db_column='Field__')", output) + self.assertIn("field_field = models.IntegerField(db_column='%s_')" % base_name, output) + self.assertIn("field_field_0 = models.IntegerField(db_column='%s__')" % base_name, output) self.assertIn("field_field_1 = models.IntegerField(db_column='__field')", output) self.assertIn("prc_x = models.IntegerField(db_column='prc(%) x')", output) -- cgit v1.3