Example #1
0
def upgrade_configs(project_dir, logger, to_version=None):
    """upgrade project and the user config file"""

    project = Project(project_dir=project_dir, create_config_file=True)

    if to_version is None:
        to_version = LATEST_VERSION

    user_config = copy.deepcopy(project.user_config)
    if int(user_config['version']) < int(LATEST_VERSION):
        user_config = upgrade_config(user_config, ConfigContext.USER)
        write_config(user_config, project.user_config_file_path)

    if project.legacy_config_path is not None:

        legacy_config = load_config(project.legacy_config_path)
        legacy_version = legacy_config['version']
        if int(legacy_version) > int(LAST_NO_USER_CONFIG_VERSION):
            raise KeyError(
                "Unkown legacy version {legacy_version} at {legacy_config}".format(
                    legacy_version=legacy_version,
                    legacy_config=legacy_config
                )
            )
        elif int(legacy_version) < int(LAST_NO_USER_CONFIG_VERSION):
            legacy_config = upgrade_config(
                legacy_config, ConfigContext.LEGACY, LAST_NO_USER_CONFIG_VERSION
            )

        shutil.move(
            project.legacy_config_path,
            project.legacy_config_path + ".orig"
        )
        write_config(legacy_config, project.config_file_path)
        project.reload_config()

    project_config = copy.deepcopy(project.project_config)
    if int(project_config['version']) < int(LATEST_VERSION):
        project_config = upgrade_config(project_config, ConfigContext.USER)
        write_config(project_config, project.config_file_path)

    project.reload_config()
    project.clean_config()
Example #2
0
def test_select_account_helper_with_indexes(project_dir, write_project_file,
                                            stdin, expected_config):
    write_project_file('populus.ini', '[chain:local]')
    project = Project()

    @click.command()
    def wrapper():
        configure_chain(project, 'local')

    runner = CliRunner()
    result = runner.invoke(wrapper, [], input=stdin)

    assert result.exit_code == 0

    project.reload_config()

    chain_config = project.config.chains['local']
    for key, value in expected_config.items():
        assert key in chain_config
        assert chain_config[key] == value
def test_get_unlocked_deploy_from_address_with_no_config(local_chain):
    project = Project()
    chain = local_chain

    with chain:
        @click.command()
        def wrapper():
            account = get_unlocked_deploy_from_address(chain)
            print("~~{0}~~".format(account))

        runner = CliRunner()
        result = runner.invoke(wrapper, [], input="1\ny\na-test-password\n")

        deploy_from = chain.web3.eth.accounts[1]
        assert result.exit_code == 0
        expected = "~~{0}~~".format(deploy_from)
        assert expected in result.output

        project.reload_config()
        assert project.config.chains['local']['deploy_from'] == deploy_from
Example #4
0
def test_get_unlocked_deploy_from_address_with_no_config(local_chain):
    project = Project()
    chain = local_chain

    with chain:

        @click.command()
        def wrapper():
            account = get_unlocked_deploy_from_address(chain)
            print("~~{0}~~".format(account))

        runner = CliRunner()
        result = runner.invoke(wrapper, [], input="1\ny\na-test-password\n")

        deploy_from = chain.web3.eth.accounts[1]
        assert result.exit_code == 0
        expected = "~~{0}~~".format(deploy_from)
        assert expected in result.output

        project.reload_config()
        assert project.config.chains['local']['deploy_from'] == deploy_from
def test_select_account_helper_with_indexes(project_dir,
                                            write_project_file,
                                            stdin,
                                            expected_config):
    write_project_file('populus.ini', '[chain:local]')
    project = Project()

    @click.command()
    def wrapper():
        configure_chain(project, 'local')

    runner = CliRunner()
    result = runner.invoke(wrapper, [], input=stdin)

    assert result.exit_code == 0

    project.reload_config()

    chain_config = project.config.chains['local']
    for key, value in expected_config.items():
        assert key in chain_config
        assert chain_config[key] == value
def test_external_rpc_chain(project_dir, write_project_file):
    project = Project()

    with project.get_chain('testrpc') as chain:
        web3 = chain.web3
        registrar = chain.registrar

        ini_contents = '\n'.join((
            "[chain:external]",
            "is_external=True",
            "provider=web3.providers.rpc.RPCProvider",
            "port={port}".format(port=chain.port),
            "registrar={registrar}".format(registrar=registrar.address),
        ))
        write_project_file('populus.ini', ini_contents)

        project.reload_config()

        with project.get_chain('external') as external_chain:
            ext_web3 = external_chain.web3
            ext_registrar = external_chain.registrar

            assert ext_web3.eth.coinbase == web3.eth.coinbase
            assert registrar.address == ext_registrar.address
def test_external_ipc_chain(project_dir, write_project_file):
    project = Project()

    with project.get_chain('temp') as chain:
        web3 = chain.web3
        chain.wait.for_unlock(timeout=30)
        registrar = chain.registrar

        ini_contents = '\n'.join((
            "[chain:external]",
            "is_external=True",
            "ipc_path={ipc_path}".format(ipc_path=chain.geth.ipc_path),
            "registrar={registrar}".format(registrar=registrar.address),
        ))
        write_project_file('populus.ini', ini_contents)

        project.reload_config()

        with project.get_chain('external') as external_chain:
            ext_web3 = external_chain.web3
            ext_registrar = external_chain.registrar

            assert ext_web3.eth.coinbase == web3.eth.coinbase
            assert registrar.address == ext_registrar.address