diff options
| author | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2017-04-25 06:01:25 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-04-25 06:01:25 +0200 |
| commit | e776dd2db677d58dcb50aea20d3bb191537df25b (patch) | |
| tree | 9f7df94bd346a13f1fd2a61421600a1a7fc70013 /tests/backends | |
| parent | 5e8625ba643db118a44cb32e9e48bf431ef4da53 (diff) | |
Fixed #28116 -- Used error code filtering in PostgreSQL test database creation.
Thanks Claude Paroz and Tim Graham for reviews.
Diffstat (limited to 'tests/backends')
| -rw-r--r-- | tests/backends/test_creation.py | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/tests/backends/test_creation.py b/tests/backends/test_creation.py index 2ecd03ce2d..90ea59086e 100644 --- a/tests/backends/test_creation.py +++ b/tests/backends/test_creation.py @@ -12,11 +12,18 @@ from django.db.backends.mysql.creation import \ DatabaseCreation as MySQLDatabaseCreation from django.db.backends.oracle.creation import \ DatabaseCreation as OracleDatabaseCreation -from django.db.backends.postgresql.creation import \ - DatabaseCreation as PostgreSQLDatabaseCreation from django.db.utils import DatabaseError from django.test import SimpleTestCase, TestCase +try: + import psycopg2 # NOQA +except ImportError: + pass +else: + from psycopg2 import errorcodes + from django.db.backends.postgresql.creation import \ + DatabaseCreation as PostgreSQLDatabaseCreation + class TestDbSignatureTests(SimpleTestCase): @@ -98,10 +105,14 @@ class PostgreSQLDatabaseCreationTests(SimpleTestCase): self.check_sql_table_creation_suffix(settings, '''WITH ENCODING 'UTF8' TEMPLATE "template0"''') def _execute_raise_database_already_exists(self, cursor, parameters, keepdb=False): - raise DatabaseError('database %s already exists' % parameters['dbname']) + error = DatabaseError('database %s already exists' % parameters['dbname']) + error.pgcode = errorcodes.DUPLICATE_DATABASE + raise DatabaseError() from error def _execute_raise_permission_denied(self, cursor, parameters, keepdb=False): - raise DatabaseError('permission denied to create database') + error = DatabaseError('permission denied to create database') + error.pgcode = errorcodes.INSUFFICIENT_PRIVILEGE + raise DatabaseError() from error def patch_test_db_creation(self, execute_create_test_db): return mock.patch.object(BaseDatabaseCreation, '_execute_create_test_db', execute_create_test_db) |
