Commit f9bbfe63 authored by Zuul's avatar Zuul Committed by Gerrit Code Review
Browse files

Merge "tests: Enable SAWarning warnings"

parents 00b5d257 2c7c0cab
......@@ -39,6 +39,7 @@ from sqlalchemy import Index
from sqlalchemy import inspect
from sqlalchemy import Integer
from sqlalchemy import MetaData
from sqlalchemy import PrimaryKeyConstraint
from sqlalchemy.sql.expression import cast
from sqlalchemy.sql.expression import literal_column
from sqlalchemy.sql import text
......@@ -608,7 +609,14 @@ def _change_deleted_column_type_to_boolean_sqlite(engine, table_name,
# FIXME(stephenfin): We shouldn't be using this private API;
# figure out how else to copy an arbitrary column schema
constraints = [constraint._copy() for constraint in table.constraints]
# NOTE(stephenfin): We drop PrimaryKeyConstraint-type constraints since
# these duplicate the 'primary_key=True' attribute on the speicified
# column(s). This technically breaks things when the primary key covers
# multiple columns but that's okay: these are deprecated APIs
constraints = [
constraint._copy() for constraint in table.constraints
if not isinstance(constraint, PrimaryKeyConstraint)
]
with engine.connect() as conn:
meta = table.metadata
......@@ -738,7 +746,10 @@ def _change_deleted_column_type_to_id_type_sqlite(engine, table_name,
constraints = []
for constraint in table.constraints:
if not _is_deleted_column_constraint(constraint):
if not (
_is_deleted_column_constraint(constraint) or
isinstance(constraint, PrimaryKeyConstraint)
):
# FIXME(stephenfin): We shouldn't be using this private API;
# figure out how else to copy an arbitrary constraint schema
constraints.append(constraint._copy())
......@@ -749,7 +760,8 @@ def _change_deleted_column_type_to_id_type_sqlite(engine, table_name,
with conn.begin():
new_table = Table(
table_name + "__tmp__", meta,
*(columns + constraints))
*(columns + constraints),
)
new_table.create(conn)
indexes = []
......
......@@ -24,11 +24,12 @@ class WarningsFixture(fixtures.Fixture):
self._original_warning_filters = warnings.filters[:]
# Make deprecation warnings only happen once to avoid spamming
warnings.simplefilter('once', DeprecationWarning)
# Enable generic warnings to ensure we're not doing anything odd
warnings.filterwarnings(
'error', message='Evaluating non-mapped column expression',
'error',
category=sqla_exc.SAWarning)
# Enable deprecation warnings to capture upcoming SQLAlchemy changes
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment