diff --git a/tests/conftest.py b/tests/conftest.py index dedcfd8..b681372 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -15,6 +15,10 @@ from vdb.vdb import ( set_evm_opcode_debugger, VyperDebugCmd ) +from vdb.eth_tester_debug_backend import ( + PyEVMDebugBackend, + set_debug_info +) from vdb.source_map import ( produce_source_map ) @@ -22,7 +26,7 @@ from vdb.source_map import ( @pytest.fixture(scope="module") def tester(): - t = EthereumTester() + t = EthereumTester(backend=PyEVMDebugBackend()) return t @@ -46,10 +50,9 @@ def _get_contract(w3, source_code, *args, **kwargs): stdout = kwargs['stdout'] if 'stdout' in kwargs else None source_map = produce_source_map(source_code) - set_evm_opcode_debugger( - source_code=source_code, source_map=source_map, stdin=stdin, stdout=stdout - ) - + set_debug_info(source_code, source_map, stdin, stdout) + import vdb + setattr(vdb.debug_computation.DebugComputation, 'enable_debug', True) value = kwargs.pop('value', 0) value_in_eth = kwargs.pop('value_in_eth', 0) value = value_in_eth * 10**18 if value_in_eth else value # Handle deploying with an eth value. diff --git a/vdb/debug_computation.py b/vdb/debug_computation.py index a9083e3..8b67a82 100644 --- a/vdb/debug_computation.py +++ b/vdb/debug_computation.py @@ -11,6 +11,8 @@ class DebugComputation(ByzantiumComputation): enable_debug = False source_code = None source_map = None + stdin = None + stdout = None @classmethod def run_debugger(self, computation, line_no): @@ -19,8 +21,8 @@ class DebugComputation(ByzantiumComputation): line_no=line_no, source_code=self.source_code, source_map=self.source_map, - stdin=None, - stdout=None + stdin=self.stdin, + stdout=self.stdout ).cmdloop() return line_no diff --git a/vdb/eth_tester_debug_backend.py b/vdb/eth_tester_debug_backend.py index 8dd3902..85d34ea 100644 --- a/vdb/eth_tester_debug_backend.py +++ b/vdb/eth_tester_debug_backend.py @@ -52,6 +52,8 @@ class PyEVMDebugBackend(PyEVMBackend): self.account_keys, self.chain = _setup_tester_chain() -def set_debug_info(source_code, source_map): +def set_debug_info(source_code, source_map, stdin=None, stdout=None): setattr(DebugComputation, 'source_code', source_code) setattr(DebugComputation, 'source_map', source_map) + setattr(DebugComputation, 'stdin', stdin) + setattr(DebugComputation, 'stdout', stdout)