Ejemplo n.º 1
0
def test_list_available_migrations(mock):
    mock.add_migration('udata', '01_core_migration.py')
    mock.add_migration('test', '02_test_migration.py')
    mock.add_migration('other', '03_other_migration.py')
    # Should not list `__*.py` files
    mock.add_migration('test', '__private.py')
    # Should not list migrations for disabled plugin
    mock.add_migration('disabled', 'should_not_be_there.py', enable=False)
    # Should not fail on plugins without migrations dir
    mock.ensure_plugin('nomigrations')

    availables = migrations.list_available()

    assert len(availables) == 3
    assert availables == [
        migrations.Migration(p, f) for p, f in (
            ('udata', '01_core_migration.py'),
            ('test', '02_test_migration.py'),
            ('other', '03_other_migration.py'),
        )
    ]
Ejemplo n.º 2
0
def migrate(record, dry_run=False):
    '''Perform database migrations'''
    success = True
    for migration in migrations.list_available():
        if migration.record.ok or not success:
            log_status(migration, cyan('Skipped'))
        else:
            status = magenta('Recorded') if record else yellow('Apply')
            log_status(migration, status)
            try:
                output = migration.execute(recordonly=record, dryrun=dry_run)
            except migrations.RollbackError as re:
                format_output(re.migrate_exc.output, False)
                log_status(migration, red('Rollback'))
                format_output(re.output, not re.exc)
                success = False
            except migrations.MigrationError as me:
                format_output(me.output, False, traceback=me.traceback)
                success = False
            else:
                format_output(output, True)
    return success
Ejemplo n.º 3
0
def status():
    '''Display the database migrations status'''
    for migration in migrations.list_available():
        log_status(migration, status_label(migration.record))