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