Esempio n. 1
0
def find_project_migrations(project_dir):
    migrations_dir = get_migrations_dir(project_dir)
    glob_pattern = os.path.join(migrations_dir, '*.py')
    migrations = [
        os.path.relpath(migration_path, project_dir)
        for migration_path
        in glob.glob(glob_pattern)
        if is_valid_migration_filename(os.path.basename(migration_path))
    ]
    return migrations
Esempio n. 2
0
def test_load_project_migrations(project_dir, MATH):
    migrations_dir = get_migrations_dir(project_dir)
    migration_0001_file_path = os.path.join(migrations_dir, '0001_initial.py')
    migration_0002_file_path = os.path.join(migrations_dir,
                                            '0002_the_second_migration.py')
    migration_0003_file_path = os.path.join(migrations_dir,
                                            '0003_the_third_migration.py')

    class MigrationA(Migration):
        migration_id = '0001_initial'
        dependencies = []
        operations = []
        compiled_contracts = {
            'Math': MATH,
        }

    class MigrationB(Migration):
        migration_id = '0002_the_second_migration'
        dependencies = ['0001_initial']
        operations = []
        compiled_contracts = {
            'Math': MATH,
        }

    class MigrationC(Migration):
        migration_id = '0003_the_third_migration'
        dependencies = ['0002_the_second_migration']
        operations = []
        compiled_contracts = {
            'Math': MATH,
        }

    with open(migration_0001_file_path, 'w') as migration_0001_file:
        write_migration(migration_0001_file, MigrationA)

    with open(migration_0002_file_path, 'w') as migration_0002_file:
        write_migration(migration_0002_file, MigrationB)

    with open(migration_0003_file_path, 'w') as migration_0003_file:
        write_migration(migration_0003_file, MigrationC)

    migration_classes = load_project_migrations(project_dir)

    assert len(migration_classes) == 3
    actual_ids = {m.migration_id for m in migration_classes}

    expected_ids = {
        '0001_initial', '0002_the_second_migration', '0003_the_third_migration'
    }

    assert actual_ids == expected_ids
Esempio n. 3
0
def test_load_project_migrations(project_dir, MATH):
    migrations_dir = get_migrations_dir(project_dir)
    migration_0001_file_path = os.path.join(migrations_dir, '0001_initial.py')
    migration_0002_file_path = os.path.join(migrations_dir, '0002_the_second_migration.py')
    migration_0003_file_path = os.path.join(migrations_dir, '0003_the_third_migration.py')

    class MigrationA(Migration):
        migration_id = '0001_initial'
        dependencies = []
        operations = []
        compiled_contracts = {
            'Math': MATH,
        }

    class MigrationB(Migration):
        migration_id = '0002_the_second_migration'
        dependencies = ['0001_initial']
        operations = []
        compiled_contracts = {
            'Math': MATH,
        }

    class MigrationC(Migration):
        migration_id = '0003_the_third_migration'
        dependencies = ['0002_the_second_migration']
        operations = []
        compiled_contracts = {
            'Math': MATH,
        }

    with open(migration_0001_file_path, 'w') as migration_0001_file:
        write_migration(migration_0001_file, MigrationA)

    with open(migration_0002_file_path, 'w') as migration_0002_file:
        write_migration(migration_0002_file, MigrationB)

    with open(migration_0003_file_path, 'w') as migration_0003_file:
        write_migration(migration_0003_file, MigrationC)

    migration_classes = load_project_migrations(project_dir)

    assert len(migration_classes) == 3
    actual_ids = {m.migration_id for m in migration_classes}

    expected_ids = {'0001_initial', '0002_the_second_migration', '0003_the_third_migration'}

    assert actual_ids == expected_ids
def test_makemigration(project_dir, write_project_file):
    runner = CliRunner()

    write_project_file(
        "contracts/Simple.sol",
        "contract Simple { function Simple() {}}"
    )

    migrations_dir = get_migrations_dir(project_dir, lazy_create=False)

    assert not os.path.exists(migrations_dir)

    result = runner.invoke(main, ['makemigration'])
    assert result.exit_code == 0, result.output + str(result.exception)

    assert os.path.exists(migrations_dir)
    assert os.path.exists(os.path.join(migrations_dir, '0001_initial.py'))

    assert not os.path.exists(os.path.join(migrations_dir, '0002_auto.py'))

    result = runner.invoke(main, ['makemigration'])
    assert result.exit_code == 0, result.output + str(result.exception)

    assert os.path.exists(os.path.join(migrations_dir, '0002_auto.py'))
    assert not os.path.exists(os.path.join(migrations_dir, '0003_custom_name.py'))

    result = runner.invoke(main, ['makemigration', 'custom_name'])
    assert result.exit_code == 0, result.output + str(result.exception)

    assert os.path.exists(os.path.join(migrations_dir, '0003_custom_name.py'))

    project = Project()

    assert len(project.migrations) == 3

    m1, m2, m3 = project.migrations

    assert m1.migration_id == '0001_initial'
    assert m1.dependencies == []

    assert m2.migration_id == '0002_auto'
    assert m2.dependencies == ['0001_initial']

    assert m3.migration_id == '0003_custom_name'
    assert m3.dependencies == ['0002_auto']
def test_makemigration_works_with_no_contracts(project_dir):
    runner = CliRunner()

    result = runner.invoke(main, ['makemigration', 'my_first_migration'])
    assert result.exit_code == 0, result.output + str(result.exception)

    migrations_dir = get_migrations_dir(project_dir, lazy_create=False)
    assert os.path.exists(migrations_dir)
    assert os.path.exists(os.path.join(migrations_dir, '0001_my_first_migration.py'))

    project = Project()

    assert len(project.migrations) == 1

    m1 = project.migrations[0]

    assert m1.migration_id == '0001_my_first_migration'
    assert m1.dependencies == []
    assert m1.compiled_contracts == {}
Esempio n. 6
0
 def migrations_dir(self):
     return get_migrations_dir(self.project_dir)