freebsd-ports/www/py-django/files/extra-patch-changeset_16520.diff
Li-Wen Hsu 895a8dbe67 - Backport of changeset 16520 to fix unit tests with psycopg2 2.4.2
This change breaks backward compatibility, so only applying while
  POSTGRESQL option is enabled

PR:		ports/158996
Submitted by:	Raphael Kubo da Costa <kubito@gmail.com>
2011-07-22 16:42:17 +00:00

84 lines
4.1 KiB
Diff

diff -uprN Django-1.3-vanilla/django/db/backends/creation.py Django-1.3/django/db/backends/creation.py
--- django/db/backends/creation.py 2011-02-02 12:02:14.000000000 -0200
+++ django/db/backends/creation.py 2011-07-16 20:21:28.000000000 -0300
@@ -413,7 +413,7 @@ class BaseDatabaseCreation(object):
# if the database supports it because PostgreSQL doesn't allow
# CREATE/DROP DATABASE statements within transactions.
cursor = self.connection.cursor()
- self.set_autocommit()
+ self._prepare_for_test_db_ddl()
try:
cursor.execute("CREATE DATABASE %s %s" % (qn(test_database_name), suffix))
except Exception, e:
@@ -458,20 +458,27 @@ class BaseDatabaseCreation(object):
# to do so, because it's not allowed to delete a database while being
# connected to it.
cursor = self.connection.cursor()
- self.set_autocommit()
+ self._prepare_for_test_db_ddl()
time.sleep(1) # To avoid "database is being accessed by other users" errors.
cursor.execute("DROP DATABASE %s" % self.connection.ops.quote_name(test_database_name))
self.connection.close()
def set_autocommit(self):
- "Make sure a connection is in autocommit mode."
- if hasattr(self.connection.connection, "autocommit"):
- if callable(self.connection.connection.autocommit):
- self.connection.connection.autocommit(True)
- else:
- self.connection.connection.autocommit = True
- elif hasattr(self.connection.connection, "set_isolation_level"):
- self.connection.connection.set_isolation_level(0)
+ """
+ Make sure a connection is in autocommit mode. - Deprecated, not used
+ anymore by Django code. Kept for compatibility with user code that
+ might use it.
+ """
+ pass
+
+ def _prepare_for_test_db_ddl(self):
+ """
+ Internal implementation - Hook for tasks that should be performed before
+ the ``CREATE DATABASE``/``DROP DATABASE`` clauses used by testing code
+ to create/ destroy test databases. Needed e.g. in PostgreSQL to rollback
+ and close any active transaction.
+ """
+ pass
def sql_table_creation_suffix(self):
"SQL to append to the end of the test table creation statements"
diff -uprN Django-1.3-vanilla/django/db/backends/oracle/creation.py Django-1.3/django/db/backends/oracle/creation.py
--- django/db/backends/oracle/creation.py 2011-02-19 05:41:17.000000000 -0200
+++ django/db/backends/oracle/creation.py 2011-07-16 20:32:14.000000000 -0300
@@ -269,3 +269,6 @@ class DatabaseCreation(BaseDatabaseCreat
settings_dict['NAME'],
self._test_database_user(),
)
+
+ def set_autocommit(self):
+ self.connection.connection.autocommit = True
diff -uprN Django-1.3-vanilla/django/db/backends/postgresql/creation.py Django-1.3/django/db/backends/postgresql/creation.py
--- django/db/backends/postgresql/creation.py 2010-07-29 23:54:47.000000000 -0300
+++ django/db/backends/postgresql/creation.py 2011-07-16 20:28:39.000000000 -0300
@@ -74,3 +74,11 @@ class DatabaseCreation(BaseDatabaseCreat
else:
output = []
return output
+
+ def set_autocommit(self):
+ self._prepare_for_test_db_ddl()
+
+ def _prepare_for_test_db_ddl(self):
+ """Rollback and close the active transaction."""
+ self.connection.connection.rollback()
+ self.connection.connection.set_isolation_level(0)
diff -uprN Django-1.3-vanilla/django/db/backends/sqlite3/creation.py Django-1.3/django/db/backends/sqlite3/creation.py
--- django/db/backends/sqlite3/creation.py 2010-12-08 21:48:28.000000000 -0200
+++ django/db/backends/sqlite3/creation.py 2011-07-16 20:28:57.000000000 -0300
@@ -68,3 +68,6 @@ class DatabaseCreation(BaseDatabaseCreat
if test_database_name and test_database_name != ":memory:":
# Remove the SQLite database file
os.remove(test_database_name)
+
+ def set_autocommit(self):
+ self.connection.connection.isolation_level = None