Skip to content

Commit

Permalink
Refs #33308 -- Used psycopg's errors instead of errorcodes.
Browse files Browse the repository at this point in the history
  • Loading branch information
apollo13 authored and felixxm committed Dec 1, 2022
1 parent e20fd89 commit 3cafb78
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 7 deletions.
5 changes: 3 additions & 2 deletions django/db/backends/postgresql/creation.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import sys

from psycopg2 import errorcodes
from psycopg2 import errors

from django.core.exceptions import ImproperlyConfigured
from django.db.backends.base.creation import BaseDatabaseCreation
Expand Down Expand Up @@ -46,7 +46,8 @@ def _execute_create_test_db(self, cursor, parameters, keepdb=False):
return
super()._execute_create_test_db(cursor, parameters, keepdb)
except Exception as e:
if getattr(e.__cause__, "pgcode", "") != errorcodes.DUPLICATE_DATABASE:
cause = e.__cause__
if cause and not isinstance(cause, errors.DuplicateDatabase):
# All errors except "database already exists" cancel tests.
self.log("Got an error creating the test database: %s" % e)
sys.exit(2)
Expand Down
10 changes: 5 additions & 5 deletions tests/backends/postgresql/test_creation.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
except ImportError:
pass
else:
from psycopg2 import errorcodes
from psycopg2 import errors

from django.db.backends.postgresql.creation import DatabaseCreation

Expand Down Expand Up @@ -73,13 +73,13 @@ def test_sql_table_creation_raises_with_collation(self):
self.check_sql_table_creation_suffix(settings, None)

def _execute_raise_database_already_exists(self, cursor, parameters, keepdb=False):
error = DatabaseError("database %s already exists" % parameters["dbname"])
error.pgcode = errorcodes.DUPLICATE_DATABASE
error = errors.DuplicateDatabase(
"database %s already exists" % parameters["dbname"]
)
raise DatabaseError() from error

def _execute_raise_permission_denied(self, cursor, parameters, keepdb=False):
error = DatabaseError("permission denied to create database")
error.pgcode = errorcodes.INSUFFICIENT_PRIVILEGE
error = errors.InsufficientPrivilege("permission denied to create database")
raise DatabaseError() from error

def patch_test_db_creation(self, execute_create_test_db):
Expand Down

0 comments on commit 3cafb78

Please sign in to comment.