summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2015-03-19 15:40:38 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2015-03-19 15:40:38 -0400
commit3b516aecde0166f28db34cff116b0a8dadb0b5db (patch)
tree79cb2feb33945cf83e5a594f99bee40b7e24097e
parent623569886392e1d9b7fd77f8bad9ca4cc1fb9563 (diff)
parent9e246542f53c6f470054a90585421ac725690bd7 (diff)
downloadalembic-3b516aecde0166f28db34cff116b0a8dadb0b5db.tar.gz
Merge branch 'issue266' of https://bitbucket.org/jerdfelt/alembic into pr39
-rw-r--r--alembic/autogenerate/api.py7
-rw-r--r--tests/test_autogenerate.py15
2 files changed, 22 insertions, 0 deletions
diff --git a/alembic/autogenerate/api.py b/alembic/autogenerate/api.py
index cc5debe..18a44a8 100644
--- a/alembic/autogenerate/api.py
+++ b/alembic/autogenerate/api.py
@@ -106,6 +106,13 @@ def compare_metadata(context, metadata):
instance.
"""
+ # 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:
+ 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 = []
diff --git a/tests/test_autogenerate.py b/tests/test_autogenerate.py
index a458faf..1eeeb91 100644
--- a/tests/test_autogenerate.py
+++ b/tests/test_autogenerate.py
@@ -15,6 +15,7 @@ from alembic.testing.mock import Mock
from alembic.testing.env import staging_env, clear_staging_env
from alembic.testing import eq_
from alembic.ddl.base import _fk_spec
+from alembic.util import CommandError
py3k = sys.version_info >= (3, )
@@ -1350,6 +1351,20 @@ class CompareMetadataTest(ModelOne, AutogenTest, TestBase):
eq_(diffs[2][1][5], False)
eq_(diffs[2][1][6], True)
+ def test_compare_metadata_as_sql(self):
+ context = MigrationContext.configure(
+ connection=self.bind.connect(),
+ opts={'as_sql': True}
+ )
+ metadata = self.m2
+
+ try:
+ autogenerate.compare_metadata(context, metadata)
+ except CommandError:
+ pass
+ else:
+ assert False, "unexpected success"
+
class PGCompareMetaData(ModelOne, AutogenTest, TestBase):
__only_on__ = 'postgresql'