def test_detects_contract_name_truncation_from_long_file_paths(project): _, compiled_contracts = compile_project_contracts(project) assert 'Library13' in compiled_contracts assert 'Multiply13' in compiled_contracts assert 'Library13' in compiled_contracts['Multiply13']['direct_dependencies']
def compiled_contract_data(self): if self.is_compiled_contract_cache_stale(): self._cached_compiled_contracts_mtime = self.get_source_modification_time( ) _, self._cached_compiled_contracts = compile_project_contracts( self) return self._cached_compiled_contracts
def test_link_reference_extraction_from_bytecode(project): _, compiled_contracts = compile_project_contracts(project) assert 'Library13' in compiled_contracts assert 'Multiply13' in compiled_contracts assert 'Library13' in compiled_contracts['Multiply13']['direct_dependencies']
def compile_cmd(ctx, watch): """ Compile project contracts, storing their output in `./build/contracts.json` Call bare to compile all contracts or specify contract names or file paths to restrict to only compiling those contracts. Pass in a file path and a contract name separated by a colon(":") to specify only named contracts in the specified file. """ project = ctx.obj['PROJECT'] compiler_settings = project.config.get('compilation.settings', {}) _, compiled_contract_data = compile_project_contracts( project, compiler_settings) write_compiled_sources(project.compiled_contracts_asset_path, compiled_contract_data) if watch: thread = spawn( watch_project_contracts, project=project, compiler_settings=compiler_settings, ) thread.join()
def test_link_reference_extraction_from_bytecode(project): _, compiled_contracts = compile_project_contracts(project) assert 'Library13' in compiled_contracts assert 'Multiply13' in compiled_contracts assert 'Library13' in compiled_contracts['Multiply13'][ 'direct_dependencies']
def test_detects_contract_name_truncation_from_long_file_paths(project): _, compiled_contracts = compile_project_contracts(project) assert 'Library13' in compiled_contracts assert 'Multiply13' in compiled_contracts assert 'Library13' in compiled_contracts['Multiply13'][ 'direct_dependencies']
def test_compiling_project_contracts(project): source_paths, contract_data = compile_project_contracts(project) assert 'contracts/Math.sol' in source_paths assert 'Math' in contract_data assert 'bytecode' in contract_data['Math'] assert 'bytecode_runtime' in contract_data['Math'] assert 'abi' in contract_data['Math']
def compiled_contract_data(self): if self.is_compiled_contract_cache_stale(): self._cached_compiled_contracts_mtime = self.get_source_modification_time( ) _, self._cached_compiled_contracts = compile_project_contracts( project=self, compiler_settings=self.config.get('compilation.settings'), ) return self._cached_compiled_contracts
def compiled_contract_data(self): if self.is_compiled_contract_cache_stale(): source_file_paths, compiled_contracts = compile_project_contracts(self) contracts_mtime = get_latest_mtime(source_file_paths) self.fill_contracts_cache( compiled_contracts=compiled_contracts, contracts_mtime=contracts_mtime, ) return self._cached_compiled_contracts
def compiled_contracts(self): if self.compiled_contracts_stale(): self._cached_compiled_contracts_mtime = self.get_source_modification_time() # TODO: the hard coded `optimize=True` should be configurable # somehow. _, self._cached_compiled_contracts = compile_project_contracts( project_dir=self.project_dir, contracts_dir=self.contracts_dir, optimize=True ) return self._cached_compiled_contracts
def test_compiling_project_contracts(project): source_paths, compiled_contracts = compile_project_contracts(project) assert 'contracts/Math.sol' in source_paths assert 'Math' in compiled_contracts contract_data = compiled_contracts['Math'] assert 'bytecode' in contract_data assert 'bytecode_runtime' in contract_data assert 'abi' in contract_data
def compiled_contracts(self): if self.compiled_contracts_stale(): self._cached_compiled_contracts_mtime = self.get_source_modification_time() # TODO: the hard coded `optimize=True` should be configurable # somehow. _, self._cached_compiled_contracts = compile_project_contracts( project_dir=self.project_dir, optimize=True, ) return self._cached_compiled_contracts
def compiled_contract_data(self): if self.is_compiled_contract_cache_stale(): source_file_paths, compiled_contracts = compile_project_contracts( self) contracts_mtime = get_latest_mtime(source_file_paths) self.fill_contracts_cache( compiled_contracts=compiled_contracts, contracts_mtime=contracts_mtime, ) return self._cached_compiled_contracts
def compile_project(project, watch): _, compiled_contracts = compile_project_contracts(project) write_compiled_sources(project.compiled_contracts_asset_path, compiled_contracts) if watch: thread = spawn( watch_project_contracts, project=project, ) thread.join()
def callback(file_path, event_name): if event_name in {'modified', 'created'}: logger.info("============ Compiling ==============") logger.info("> Change detected in: %s", file_path) logger.info("> Loading source files from: %s", project.contracts_source_dir) contract_source_paths, compiled_sources = compile_project_contracts(project) write_compiled_sources( project.compiled_contracts_asset_path, compiled_sources, ) logger.info("> Watching ...")
def compile_project(project, watch): _, compiled_contracts = compile_project_contracts(project) write_compiled_sources(project.compiled_contracts_asset_path, compiled_contracts) if watch: thread = threading.Thread( target=watch_project_contracts, kwargs={'project': project}, ) thread.daemon = True thread.start() thread.join()
def callback(file_path, event_name): if event_name in {'modified', 'created'}: logger.info("============ Compiling ==============") logger.info("> Change detected in: %s", file_path) for source_dir in project.contracts_source_dirs: logger.info("> Loading source files from: %s", source_dir) contract_source_paths, compiled_sources = compile_project_contracts(project) write_compiled_sources( project.compiled_contracts_asset_path, compiled_sources, ) logger.info("> Watching ...")
def test_compiling_project_contracts(project_dir, write_project_file, MATH): write_project_file('contracts/Math.sol', MATH['source']) source_paths, contract_data = compile_project_contracts( project_dir, get_contracts_dir(project_dir), ) assert 'contracts/Math.sol' in source_paths assert 'Math' in contract_data assert 'code' in contract_data['Math'] assert 'code_runtime' in contract_data['Math'] assert 'abi' in contract_data['Math']
def test_compiling_viper_project_contracts(project): project.config['compilation']['backend'] = { 'class': 'populus.compilation.backends.ViperBackend', } source_paths, compiled_contracts = compile_project_contracts(project) assert 'contracts/Greeter.vy' in source_paths assert 'Greeter' in compiled_contracts contract_data = compiled_contracts['Greeter'] assert 'bytecode' in contract_data assert 'bytecode_runtime' in contract_data assert 'abi' in contract_data function_names = [x['name'] for x in contract_data['abi']] assert 'setGreeting' in function_names assert 'greet' in function_names
def test_compiling_vyper_project_contracts(project): project.config['compilation']['backend'] = { 'class': 'populus.compilation.backends.VyperBackend', } source_paths, compiled_contracts = compile_project_contracts(project) assert 'contracts/Greeter.vy' in source_paths assert 'Greeter' in compiled_contracts contract_data = compiled_contracts['Greeter'] assert 'bytecode' in contract_data assert 'bytecode_runtime' in contract_data assert 'abi' in contract_data function_names = [x['name'] for x in contract_data['abi']] assert 'setGreeting' in function_names assert 'greet' in function_names
def test_compiling_example_greeter_contract(project): _, compiled_contracts = compile_project_contracts(project) assert 'Greeter' in compiled_contracts
def test_compiling_with_abstract_contract_inhereted(project): _, compiled_contracts = compile_project_contracts(project) assert 'Abstract' in compiled_contracts assert 'UsesAbstract' in compiled_contracts
def test_compiling_with_abstract_contract(project): _, compiled_contracts = compile_project_contracts(project) assert 'Abstract' in compiled_contracts
def test_compiling_with_test_contracts(project): source_paths, compiled_contracts = compile_project_contracts(project) assert 'TestMath' in compiled_contracts
def test_compiling_with_local_project_imports(project): _, compiled_contracts = compile_project_contracts(project) assert 'ImportTestA' in compiled_contracts assert 'ImportTestB' in compiled_contracts assert 'ImportTestC' in compiled_contracts
def test_compiling_with_import_remapping_outside_contracts_directory(project): _, compiled_contracts = compile_project_contracts(project) assert 'ImportRemappingTestA' in compiled_contracts assert 'RemapImported' in compiled_contracts assert 'RemapImportedNotUsed' in compiled_contracts
def test_compiling_with_local_import_remappings(project): _, compiled_contracts = compile_project_contracts(project) assert 'ImportRemappingTestA' in compiled_contracts assert 'RemapImported' in compiled_contracts assert 'RemapImportedNotUsed' in compiled_contracts