Fixed #20388 -- Test failures under Oracle.

Add "FROM DUAL" to SQL selecting constants in tests for Oracle.
This commit is contained in:
Shai Berger 2013-05-16 15:01:39 +03:00 committed by Aymeric Augustin
parent 79715f267c
commit 9ef4d177d1
1 changed files with 7 additions and 2 deletions

View File

@ -367,14 +367,19 @@ class EscapingChecks(TestCase):
All tests in this test case are also run with settings.DEBUG=True in All tests in this test case are also run with settings.DEBUG=True in
EscapingChecksDebug test case, to also test CursorDebugWrapper. EscapingChecksDebug test case, to also test CursorDebugWrapper.
""" """
# For Oracle, when you want to select a value, you need to specify the
# special pseudo-table 'dual'; a select with no from clause is invalid.
bare_select_suffix = " FROM DUAL" if connection.vendor == 'oracle' else ""
def test_paramless_no_escaping(self): def test_paramless_no_escaping(self):
cursor = connection.cursor() cursor = connection.cursor()
cursor.execute("SELECT '%s'") cursor.execute("SELECT '%s'" + self.bare_select_suffix)
self.assertEqual(cursor.fetchall()[0][0], '%s') self.assertEqual(cursor.fetchall()[0][0], '%s')
def test_parameter_escaping(self): def test_parameter_escaping(self):
cursor = connection.cursor() cursor = connection.cursor()
cursor.execute("SELECT '%%', %s", ('%d',)) cursor.execute("SELECT '%%', %s" + self.bare_select_suffix, ('%d',))
self.assertEqual(cursor.fetchall()[0], ('%', '%d')) self.assertEqual(cursor.fetchall()[0], ('%', '%d'))
@unittest.skipUnless(connection.vendor == 'sqlite', @unittest.skipUnless(connection.vendor == 'sqlite',