コード例 #1
0
ファイル: filegenerator.py プロジェクト: dautonomous/neo3-boa
 def __init__(self, bytecode: bytes, analyser: Analyser, entry_file: str):
     self._metadata = analyser.metadata
     self._symbols: Dict[str, ISymbol] = analyser.symbol_table
     import os
     self._files: List[str] = [analyser.path.replace(os.sep, '/')]
     self._nef: NefFile = NefFile(bytecode)
     self._entry_file = entry_file
コード例 #2
0
    def test_generate_nef_file(self):
        path = self.get_contract_path('GenerationWithDecorator.py')
        expected_nef_output = path.replace('.py', '.nef')
        Boa3.compile_and_save(path)

        self.assertTrue(os.path.exists(expected_nef_output))
        with open(expected_nef_output, 'rb') as nef_output:
            magic = nef_output.read(constants.SIZE_OF_INT32)
            compiler_with_version = nef_output.read(64)
            compiler, version = compiler_with_version.rsplit(b'-', maxsplit=1)
            version = version[:32]

            nef_output.read(2)  # reserved
            nef_output.read(1)  # TODO: method tokens
            nef_output.read(2)  # reserved

            script_size = nef_output.read(1)
            script = nef_output.read(int.from_bytes(script_size, BYTEORDER))
            check_sum = nef_output.read(constants.SIZE_OF_INT32)

        self.assertEqual(int.from_bytes(script_size, BYTEORDER), len(script))

        nef = NefFile(script)._nef
        self.assertEqual(compiler.decode(ENCODING), nef.compiler)
        self.assertEqual(check_sum, nef.checksum)
        self.assertEqual(version, nef.version.to_array())
コード例 #3
0
    def __init__(self, bytecode: bytes, analyser: Analyser, entry_file: str):
        import os
        self._metadata = analyser.metadata
        self._symbols: Dict[str, ISymbol] = analyser.symbol_table.copy()

        self._entry_file = entry_file
        self._entry_file_full_path = analyser.path.replace(
            os.sep, constants.PATH_SEPARATOR)

        self._files: List[str] = [self._entry_file_full_path]
        self._nef: NefFile = NefFile(bytecode)

        self.__all_imports: List[Import] = None
        self._all_methods: Dict[str, Method] = None
        self._all_static_vars: Dict[str, Variable] = None
コード例 #4
0
    def test_generate_nef_file(self):
        path = '%s/boa3_test/test_sc/generation_test/GenerationWithDecorator.py' % self.dirname
        expected_nef_output = path.replace('.py', '.nef')
        Boa3.compile_and_save(path)

        self.assertTrue(os.path.exists(expected_nef_output))
        with open(expected_nef_output, 'rb') as nef_output:
            magic = nef_output.read(constants.SIZE_OF_INT32)
            compiler = nef_output.read(32)
            version = nef_output.read(16)
            hash = nef_output.read(constants.SIZE_OF_INT160)
            check_sum = nef_output.read(constants.SIZE_OF_INT32)
            script_size = nef_output.read(1)
            script = nef_output.read()

        self.assertEqual(int.from_bytes(script_size, BYTEORDER), len(script))

        nef = NefFile(script)._nef
        self.assertEqual(compiler.decode(ENCODING), nef.compiler)
        self.assertEqual(hash, nef.script_hash.to_array())
        self.assertEqual(check_sum, nef.checksum)
        self.assertEqual(version, nef.version.to_array())
コード例 #5
0
 def create_test_nef(self, test_script):
     nef = NefFile(test_script)
     nef._set_version(self.test_version)
     return nef