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']
Esempio n. 2
0
 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']
Esempio n. 4
0
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']
Esempio n. 7
0
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']
Esempio n. 8
0
 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
Esempio n. 9
0
 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
Esempio n. 10
0
 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
Esempio n. 12
0
 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
Esempio n. 13
0
 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
Esempio n. 14
0
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()
Esempio n. 15
0
    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 ...")
Esempio n. 16
0
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()
Esempio n. 17
0
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()
Esempio n. 18
0
    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']
Esempio n. 20
0
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
Esempio n. 21
0
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_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
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_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
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