Merge "Raise DbMigrationError for invalid version"
This commit is contained in:
@@ -150,7 +150,14 @@ def db_version_control(engine, abs_path, version=None):
|
||||
:param version: Initial database version
|
||||
"""
|
||||
repository = _find_migrate_repo(abs_path)
|
||||
versioning_api.version_control(engine, repository, version)
|
||||
|
||||
try:
|
||||
versioning_api.version_control(engine, repository, version)
|
||||
except versioning_exceptions.InvalidVersionError as ex:
|
||||
raise exception.DbMigrationError("Invalid version : %s" % ex)
|
||||
except versioning_exceptions.DatabaseAlreadyControlledError:
|
||||
raise exception.DbMigrationError("Database is already controlled.")
|
||||
|
||||
return version
|
||||
|
||||
|
||||
|
||||
@@ -86,6 +86,28 @@ class TestMigrationCommon(test_base.DbTestCase):
|
||||
mock_version_control.assert_called_once_with(
|
||||
self.engine, self.return_value, self.test_version)
|
||||
|
||||
@mock.patch.object(migration, '_find_migrate_repo')
|
||||
@mock.patch.object(versioning_api, 'version_control')
|
||||
def test_db_version_control_version_less_than_actual_version(
|
||||
self, mock_version_control, mock_find_repo):
|
||||
mock_find_repo.return_value = self.return_value
|
||||
mock_version_control.side_effect = (migrate_exception.
|
||||
DatabaseAlreadyControlledError)
|
||||
self.assertRaises(db_exception.DbMigrationError,
|
||||
migration.db_version_control, self.engine,
|
||||
self.path, self.test_version - 1)
|
||||
|
||||
@mock.patch.object(migration, '_find_migrate_repo')
|
||||
@mock.patch.object(versioning_api, 'version_control')
|
||||
def test_db_version_control_version_greater_than_actual_version(
|
||||
self, mock_version_control, mock_find_repo):
|
||||
mock_find_repo.return_value = self.return_value
|
||||
mock_version_control.side_effect = (migrate_exception.
|
||||
InvalidVersionError)
|
||||
self.assertRaises(db_exception.DbMigrationError,
|
||||
migration.db_version_control, self.engine,
|
||||
self.path, self.test_version + 1)
|
||||
|
||||
def test_db_version_return(self):
|
||||
ret_val = migration.db_version(self.engine, self.path,
|
||||
self.init_version)
|
||||
|
||||
Reference in New Issue
Block a user