From 6b97ae352170d7be47176787056239cfbacb4803 Mon Sep 17 00:00:00 2001 From: Tim Graham Date: Mon, 9 Jun 2014 14:14:58 -0400 Subject: [PATCH] Added rollback emulation to spatialite backend; refs #22487. --- django/contrib/gis/db/backends/spatialite/creation.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/django/contrib/gis/db/backends/spatialite/creation.py b/django/contrib/gis/db/backends/spatialite/creation.py index 205e601ba3..ebed0cad5c 100644 --- a/django/contrib/gis/db/backends/spatialite/creation.py +++ b/django/contrib/gis/db/backends/spatialite/creation.py @@ -7,7 +7,7 @@ from django.db.backends.sqlite3.creation import DatabaseCreation class SpatiaLiteCreation(DatabaseCreation): - def create_test_db(self, verbosity=1, autoclobber=False, keepdb=False): + def create_test_db(self, verbosity=1, autoclobber=False, serialize=True, keepdb=False): """ Creates a test database, prompting the user for confirmation if the database already exists. Returns the name of the test database created. @@ -47,6 +47,13 @@ class SpatiaLiteCreation(DatabaseCreation): database=self.connection.alias, load_initial_data=False) + # We then serialize the current state of the database into a string + # and store it on the connection. This slightly horrific process is so people + # who are testing on databases without transactions or who are using + # a TransactionTestCase still get a clean database on every test run. + if serialize: + self.connection._test_serialized_contents = self.serialize_db_to_string() + # We need to then do a flush to ensure that any data installed by # custom SQL has been removed. The only test data should come from # test fixtures, or autogenerated from post_migrate triggers.