Пример #1
0
def get_contracts_deployment_info(
    chain_id: ChainID,
    version: Optional[str] = None,
    module: DeploymentModule = DeploymentModule.ALL,
) -> Optional[DeployedContracts]:
    """Reads the deployment data. Returns None if the file is not found.

    Parameter:
        module The name of the module. ALL means deployed contracts from all modules that are
        available for the version.
    """
    if not isinstance(module, DeploymentModule):
        raise ValueError(
            f"Unknown module {module} given to get_contracts_deployment_info()"
        )

    def module_chosen(to_be_added: DeploymentModule) -> bool:
        return module == to_be_added or module == DeploymentModule.ALL

    files: List[Path] = []

    if module_chosen(DeploymentModule.RAIDEN):
        files.append(
            contracts_deployed_path(chain_id=chain_id,
                                    version=version,
                                    services=False))

    if module == DeploymentModule.SERVICES and not contracts_version_provides_services(
            version):
        raise ValueError(
            f"SERVICES module queried for version {version}, but {version} "
            "does not provide service contracts.")

    if module_chosen(DeploymentModule.SERVICES
                     ) and contracts_version_provides_services(version):
        files.append(
            contracts_deployed_path(chain_id=chain_id,
                                    version=version,
                                    services=True))

    deployment_data: Optional[DeployedContracts] = {}

    for f in files:
        j = load_json_from_path(f)
        if j is None:
            continue
        assert deployment_data is not None
        deployment_data = merge_deployment_data(
            deployment_data,
            DeployedContracts({
                "chain_id": j["chain_id"],
                "contracts": j["contracts"],
                "contracts_version": j["contracts_version"],
            }),
        )

    if not deployment_data:
        deployment_data = None
    return deployment_data
Пример #2
0
def test_version_provides_services() -> None:
    assert not contracts_version_provides_services("0.3._")
    assert not contracts_version_provides_services("0.4.0")
    assert contracts_version_provides_services("0.8.0")
    assert contracts_version_provides_services("0.8.0_unlimited")
    assert contracts_version_provides_services("0.10.1")
    assert contracts_version_provides_services("0.11.0")
    with pytest.raises(ValueError):
        assert contracts_version_provides_services("not a semver")
def test_version_provides_services() -> None:
    assert contracts_version_provides_services(CONTRACTS_VERSION)
    with pytest.raises(ValueError):
        assert contracts_version_provides_services("not a semver")