summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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):