summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2015-03-19 15:51:11 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2015-03-19 15:51:11 -0400
commit4c2f825086d8f016dd824da7bbe6af20a0eeb67c (patch)
tree88539641e9c4afcab138f93531714637faa6f39b
parent3b516aecde0166f28db34cff116b0a8dadb0b5db (diff)
downloadalembic-4c2f825086d8f016dd824da7bbe6af20a0eeb67c.tar.gz
- changelog for #266
- use exception fixture - look directly at context.as_sql as that's where the "sql mode" is most authoritative - fixes #266
-rw-r--r--alembic/autogenerate/api.py6
-rw-r--r--docs/build/changelog.rst10
-rw-r--r--tests/test_autogenerate.py13
3 files changed, 21 insertions, 8 deletions
diff --git a/alembic/autogenerate/api.py b/alembic/autogenerate/api.py
index 18a44a8..6281a6c 100644
--- a/alembic/autogenerate/api.py
+++ b/alembic/autogenerate/api.py
@@ -106,14 +106,16 @@ def compare_metadata(context, metadata):
instance.
"""
+
+ autogen_context, connection = _autogen_context(context, None)
+
# as_sql=True is nonsensical here. autogenerate requires a connection
# it can use to run queries against to get the database schema.
- if context.opts.get('as_sql', False) is True:
+ if context.as_sql:
raise util.CommandError(
"autogenerate can't use as_sql=True as it prevents querying "
"the database for schema information")
- autogen_context, connection = _autogen_context(context, None)
diffs = []
object_filters = _get_object_filters(context.opts)
diff --git a/docs/build/changelog.rst b/docs/build/changelog.rst
index d7e239e..504b73d 100644
--- a/docs/build/changelog.rst
+++ b/docs/build/changelog.rst
@@ -7,6 +7,16 @@ Changelog
:version: 0.7.5
.. change::
+ :tags: bug, autogenerate
+ :tickets: 266
+ :pullreq: bitbucket:39
+
+ The ``--autogenerate`` option is not valid when used in conjunction
+ with "offline" mode, e.g. ``--sql``. This now raises a ``CommandError``,
+ rather than failing more deeply later on. Pull request courtesy
+ Johannes Erdfelt.
+
+ .. change::
:tags: bug, operations, mssql
:tickets: 284
diff --git a/tests/test_autogenerate.py b/tests/test_autogenerate.py
index 1eeeb91..e9ffe8b 100644
--- a/tests/test_autogenerate.py
+++ b/tests/test_autogenerate.py
@@ -11,6 +11,7 @@ from alembic import autogenerate
from alembic.migration import MigrationContext
from alembic.testing import TestBase
from alembic.testing import config
+from alembic.testing import assert_raises_message
from alembic.testing.mock import Mock
from alembic.testing.env import staging_env, clear_staging_env
from alembic.testing import eq_
@@ -1358,12 +1359,12 @@ class CompareMetadataTest(ModelOne, AutogenTest, TestBase):
)
metadata = self.m2
- try:
- autogenerate.compare_metadata(context, metadata)
- except CommandError:
- pass
- else:
- assert False, "unexpected success"
+ assert_raises_message(
+ CommandError,
+ "autogenerate can't use as_sql=True as it prevents "
+ "querying the database for schema information",
+ autogenerate.compare_metadata, context, metadata
+ )
class PGCompareMetaData(ModelOne, AutogenTest, TestBase):