Skip to content

Commit ea23882

Browse files
committed
Issue #27: Using envvar to locate go-ethereum's evm command path
1 parent 6e2717a commit ea23882

File tree

1 file changed

+24
-3
lines changed

1 file changed

+24
-3
lines changed

tools/evm-test/evm_test.py

100644100755
+24-3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
from typing import List
44
from string import Template
5+
import subprocess
6+
import os
57

68
import pyevmasm as asm
79

@@ -66,14 +68,33 @@ def generate_header_str(inputs: List[int]) -> str:
6668
def generate_header_binary(inputs: List[int]) -> str:
6769
asm.assemble_hex(generate_header_str(inputs))
6870

71+
def generate_function_binary(filename: str, offset: int) -> str:
72+
assert offset > 0
73+
# being lazy
74+
pass
75+
6976
def generate_contract(inputs: List[int], func: str) -> str:
7077
assert len(inputs) < 3
7178
complete_str = generate_header_str(inputs) + func
7279
return asm.assemble_hex(complete_str)
7380

7481
def execute_in_evm(code: str, expected: str) -> str:
75-
pass
82+
# we could use py-evm to do it so everything will be in python.
83+
emv_path = ""
84+
try:
85+
emv_path = os.environ['EVM_PATH']
86+
except KeyError(key):
87+
print("\"" + key + "\" not defined, using pwd instead")
7688

89+
command = [emv_path + "/evm", "--code", code, "run"]
90+
result = subprocess.run(command, stdout=subprocess.PIPE)
91+
result.check_returncode()
92+
return result.stdout
93+
94+
def load_assembly_from_file(filename: str) -> str:
95+
pass
7796

78-
print(generate_contract(
79-
inputs=["0x12345678", "0x87654321"], func="JUMPDEST\nADD\nSWAP1\nJUMP"))
97+
contract = generate_contract(
98+
inputs=["0x12345678", "0x87654321"], func="JUMPDEST\nADD\nSWAP1\nJUMP")
99+
result = execute_in_evm(contract, "")
100+
print(result)

0 commit comments

Comments
 (0)