Commit e6ee9714 authored by Jacob Kaplan-Moss's avatar Jacob Kaplan-Moss
Browse files

The tests now run correctly with the new psycopg2 backend. There's 4...

The tests now run correctly with the new psycopg2 backend.  There's 4 failures, but they all have to do with the new way the psycopg2 handles datetimes and are probably a single fix.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@2940 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent 5a8ed6f7
Loading
Loading
Loading
Loading
+15 −13
Original line number Diff line number Diff line
@@ -114,14 +114,11 @@ class TestRunner:
            global TEST_DATABASE_NAME
            TEST_DATABASE_NAME = ":memory:"
        else:
            # Create the test database and connect to it. We need autocommit()
            # because PostgreSQL doesn't allow CREATE DATABASE statements
            # within transactions.
            # Create the test database and connect to it. We need to autocommit
            # if the database supports it because PostgreSQL doesn't allow 
            # CREATE/DROP DATABASE statements within transactions.
            cursor = connection.cursor()
            try:
                connection.connection.autocommit(1)
            except AttributeError:
                pass
            self._set_autocommit(connection)
            self.output(1, "Creating test database")
            try:
                cursor.execute("CREATE DATABASE %s" % TEST_DATABASE_NAME)
@@ -224,11 +221,7 @@ class TestRunner:
            settings.DATABASE_NAME = old_database_name
            cursor = connection.cursor()
            self.output(1, "Deleting test database")
            try:
                connection.connection.autocommit(1)
            except AttributeError:
                pass
            else:
            self._set_autocommit(connection)
            time.sleep(1) # To avoid "database is being accessed by other users" errors.
            cursor.execute("DROP DATABASE %s" % TEST_DATABASE_NAME)

@@ -243,6 +236,15 @@ class TestRunner:
        else:
            print "All tests passed."
            
    def _set_autocommit(self, connection):
        """
        Make sure a connection is in autocommit mode.
        """
        if hasattr(connection.connection, "autocommit"):
            connection.connection.autocommit(True)
        elif hasattr(connection.connection, "set_isolation_level"):
            connection.connection.set_isolation_level(0)

if __name__ == "__main__":
    from optparse import OptionParser
    usage = "%prog [options] [model model model ...]"