From: Mike Bayer Date: Sat, 16 May 2015 01:18:18 +0000 (-0400) Subject: - pg8000 wants to raise a ProgrammingError for a PK violation X-Git-Tag: rel_1_0_5~26 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5ca14954b89a218e879f6833bb811b88ea537242;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - pg8000 wants to raise a ProgrammingError for a PK violation --- diff --git a/lib/sqlalchemy/testing/requirements.py b/lib/sqlalchemy/testing/requirements.py index 32465c47d8..e8b3a995f6 100644 --- a/lib/sqlalchemy/testing/requirements.py +++ b/lib/sqlalchemy/testing/requirements.py @@ -341,6 +341,14 @@ class SuiteRequirements(Requirements): """target dialect supports reflection of unique constraints""" return exclusions.open() + @property + def duplicate_key_raises_integrity_error(self): + """target dialect raises IntegrityError when reporting an INSERT + with a primary key violation. (hint: it should) + + """ + return exclusions.open() + @property def unbounded_varchar(self): """Target database must support VARCHAR with no length""" diff --git a/lib/sqlalchemy/testing/suite/test_dialect.py b/lib/sqlalchemy/testing/suite/test_dialect.py index 5ad5694b3a..00884a212c 100644 --- a/lib/sqlalchemy/testing/suite/test_dialect.py +++ b/lib/sqlalchemy/testing/suite/test_dialect.py @@ -1,4 +1,5 @@ from .. import fixtures, config +from ..config import requirements from sqlalchemy import exc from sqlalchemy import Integer, String from .. import assert_raises @@ -23,6 +24,7 @@ class ExceptionTest(fixtures.TablesTest): Column('data', String(50)) ) + @requirements.duplicate_key_raises_integrity_error def test_integrity_error(self): with config.db.begin() as conn: diff --git a/test/requirements.py b/test/requirements.py index 77d941a671..e993be2e72 100644 --- a/test/requirements.py +++ b/test/requirements.py @@ -668,6 +668,10 @@ class DefaultRequirements(SuiteRequirements): ("mssql+pyodbc", None, None, "crashes due to bug #351"), ) + @property + def duplicate_key_raises_integrity_error(self): + return fails_on("postgresql+pg8000") + @property def python2(self): return skip_if(