|
@@ -2,6 +2,7 @@
|
|
|
|
|
|
import datetime
|
|
|
|
|
|
+from django.conf import settings
|
|
|
from django.core.management.color import no_style
|
|
|
from django.db import backend, connection, connections, DEFAULT_DB_ALIAS, IntegrityError
|
|
|
from django.db.backends.signals import connection_created
|
|
@@ -85,6 +86,35 @@ class DateQuotingTest(TestCase):
|
|
|
classes = models.SchoolClass.objects.filter(last_updated__day=20)
|
|
|
self.assertEqual(len(classes), 1)
|
|
|
|
|
|
+class LastExecutedQueryTest(TestCase):
|
|
|
+
|
|
|
+ def setUp(self):
|
|
|
+
|
|
|
+ settings.DEBUG = True
|
|
|
+
|
|
|
+ def tearDown(self):
|
|
|
+ settings.DEBUG = False
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ @unittest.skipUnless(connection.vendor in ('oracle', 'postgresql'),
|
|
|
+ "These backends use the standard parameter escaping rules")
|
|
|
+ def test_parameter_escaping(self):
|
|
|
+
|
|
|
+ list(models.Tag.objects.filter(name="special:\\\"':", object_id=12))
|
|
|
+ sql = connection.queries[-1]['sql']
|
|
|
+ self.assertTrue("= 'special:\\\"'':' " in sql)
|
|
|
+ self.assertTrue("= 12 " in sql)
|
|
|
+
|
|
|
+ @unittest.skipUnless(connection.vendor == 'mysql',
|
|
|
+ "MySQL uses backslashes to escape parameters.")
|
|
|
+ def test_parameter_escaping(self):
|
|
|
+ list(models.Tag.objects.filter(name="special:\\\"':", object_id=12))
|
|
|
+ sql = connection.queries[-1]['sql']
|
|
|
+
|
|
|
+ self.assertTrue("= 'special:\\\\\\\"\\':' " in sql)
|
|
|
+ self.assertTrue("= 12 " in sql)
|
|
|
|
|
|
class ParameterHandlingTest(TestCase):
|
|
|
def test_bad_parameter_count(self):
|