

def test_no_migrations_have_downgrade(self):
    topdir = os.path.normpath((os.path.dirname(__file__) + '/../../../'))
    py_glob = os.path.join(topdir, 'nova', 'db', 'sqlalchemy', 'migrate_repo', 'versions', '*.py')
    includes_downgrade = []
    for path in glob.iglob(py_glob):
        has_upgrade = False
        has_downgrade = False
        with open(path, 'r') as f:
            for line in f:
                if ('def upgrade(' in line):
                    has_upgrade = True
                if ('def downgrade(' in line):
                    has_downgrade = True
            if (has_upgrade and has_downgrade):
                fname = os.path.basename(path)
                includes_downgrade.append(fname)
    helpful_msg = ('The following migrations have a downgrade which is not supported:\n\t%s' % '\n\t'.join(sorted(includes_downgrade)))
    self.assertFalse(includes_downgrade, helpful_msg)

dataset/ETHPy150Open BU-NU-CLOUD-SP16/Trusted-Platform-Module-nova/nova/tests/unit/db/test_migrations.py ProjectTestCase.test_no_migrations_have_downgrade/original