python scripts: Some pylint tweaks.

This commit is contained in:
Christian Parpart 2020-01-15 14:21:33 +01:00
parent 44e892634b
commit 54b81b0fda
2 changed files with 30 additions and 36 deletions

View File

@ -5,37 +5,37 @@ import glob
import subprocess import subprocess
import json import json
solc = sys.argv[1] SOLC_BIN = sys.argv[1]
report = open("report.txt", "wb") REPORT_FILE = open("report.txt", "wb")
for optimize in [False, True]: for optimize in [False, True]:
for f in sorted(glob.glob("*.sol")): for f in sorted(glob.glob("*.sol")):
sources = {} sources = {}
sources[f] = {'content': open(f, 'r').read()} sources[f] = {'content': open(f, 'r').read()}
input = { input_json = {
'language': 'Solidity', 'language': 'Solidity',
'sources': sources, 'sources': sources,
'settings': { 'settings': {
'optimizer': { 'optimizer': {
'enabled': optimize 'enabled': optimize
}, },
'outputSelection': { '*': { '*': ['evm.bytecode.object', 'metadata'] } } 'outputSelection': {'*': {'*': ['evm.bytecode.object', 'metadata']}}
} }
} }
args = [solc, '--standard-json'] args = [SOLC_BIN, '--standard-json']
if optimize: if optimize:
args += ['--optimize'] args += ['--optimize']
proc = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) proc = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(out, err) = proc.communicate(json.dumps(input)) (out, err) = proc.communicate(json.dumps(input_json))
try: try:
result = json.loads(out.strip()) result = json.loads(out.strip())
for filename in sorted(result['contracts'].keys()): for filename in sorted(result['contracts'].keys()):
for contractName in sorted(result['contracts'][filename].keys()): for contractName in sorted(result['contracts'][filename].keys()):
contractData = result['contracts'][filename][contractName] contractData = result['contracts'][filename][contractName]
if 'evm' in contractData and 'bytecode' in contractData['evm']: if 'evm' in contractData and 'bytecode' in contractData['evm']:
report.write(filename + ':' + contractName + ' ' + contractData['evm']['bytecode']['object'] + '\n') REPORT_FILE.write(filename + ':' + contractName + ' ' + contractData['evm']['bytecode']['object'] + '\n')
else: else:
report.write(filename + ':' + contractName + ' NO BYTECODE\n') REPORT_FILE.write(filename + ':' + contractName + ' NO BYTECODE\n')
report.write(filename + ':' + contractName + ' ' + contractData['metadata'] + '\n') REPORT_FILE.write(filename + ':' + contractName + ' ' + contractData['metadata'] + '\n')
except KeyError: except KeyError:
report.write(f + ": ERROR\n") REPORT_FILE.write(f + ": ERROR\n")

View File

@ -8,12 +8,9 @@
import sys import sys
import re import re
import os
import hashlib
from os.path import join
def extract_test_cases(path): def extract_test_cases(_path):
lines = open(path, 'rb').read().splitlines() lines = open(_path, 'rb').read().splitlines()
inside = False inside = False
delimiter = '' delimiter = ''
@ -23,27 +20,24 @@ def extract_test_cases(path):
test_name = '' test_name = ''
for l in lines: for l in lines:
if inside: if inside:
if l.strip().endswith(')' + delimiter + '";'): if l.strip().endswith(')' + delimiter + '";'):
open('%03d_%s.sol' % (ctr, test_name), 'wb').write(test) open('%03d_%s.sol' % (ctr, test_name), 'wb').write(test)
ctr += 1 ctr += 1
inside = False inside = False
test = '' test = ''
else:
l = re.sub('^\t\t', '', l)
l = l.replace('\t', ' ')
test += l + '\n'
else: else:
l = re.sub('^\t\t', '', l) m = re.search(r'BOOST_AUTO_TEST_CASE\(([^(]*)\)', l.strip())
l = l.replace('\t', ' ') if m:
test += l + '\n' test_name = m.group(1)
else: m = re.search(r'R"([^(]*)\($', l.strip())
m = re.search(r'BOOST_AUTO_TEST_CASE\(([^(]*)\)', l.strip()) if m:
if m: inside = True
test_name = m.group(1) delimiter = m.group(1)
m = re.search(r'R"([^(]*)\($', l.strip())
if m:
inside = True
delimiter = m.group(1)
if __name__ == '__main__': if __name__ == '__main__':
path = sys.argv[1] extract_test_cases(sys.argv[1])
extract_test_cases(path)