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()
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
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