diff options
author | chriseth <chris@ethereum.org> | 2018-03-27 21:23:36 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-27 21:23:36 +0800 |
commit | af26228159d6fbf3240291d356878505ba42e33a (patch) | |
tree | 4c7123c939d6674ca741382aa9698df1031593c6 /scripts/extract_test_cases.py | |
parent | 32f08989dbacb7d839ebc916ac995ecc08eee6eb (diff) | |
parent | c9db105ad7c8cb4913d0e0ed859ce4808aae288a (diff) | |
download | dexon-solidity-af26228159d6fbf3240291d356878505ba42e33a.tar dexon-solidity-af26228159d6fbf3240291d356878505ba42e33a.tar.gz dexon-solidity-af26228159d6fbf3240291d356878505ba42e33a.tar.bz2 dexon-solidity-af26228159d6fbf3240291d356878505ba42e33a.tar.lz dexon-solidity-af26228159d6fbf3240291d356878505ba42e33a.tar.xz dexon-solidity-af26228159d6fbf3240291d356878505ba42e33a.tar.zst dexon-solidity-af26228159d6fbf3240291d356878505ba42e33a.zip |
Merge pull request #3748 from ethereum/extractScopingTests
Extract scoping tests
Diffstat (limited to 'scripts/extract_test_cases.py')
-rwxr-xr-x | scripts/extract_test_cases.py | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/scripts/extract_test_cases.py b/scripts/extract_test_cases.py new file mode 100755 index 00000000..07ef9a96 --- /dev/null +++ b/scripts/extract_test_cases.py @@ -0,0 +1,49 @@ +#!/usr/bin/python +# +# This script reads C++ or RST source files and writes all +# multi-line strings into individual files. +# This can be used to extract the Solidity test cases +# into files for e.g. fuzz testing as +# scripts/isolate_tests.py test/libsolidity/* + +import sys +import re +import os +import hashlib +from os.path import join + +def extract_test_cases(path): + lines = open(path, 'rb').read().splitlines() + + inside = False + delimiter = '' + test = '' + + ctr = 1 + test_name = '' + + for l in lines: + if inside: + if l.strip().endswith(')' + delimiter + '";'): + open('%03d_%s.sol' % (ctr, test_name), 'wb').write(test) + ctr += 1 + inside = False + test = '' + else: + l = re.sub('^\t\t', '', l) + l = l.replace('\t', ' ') + test += l + '\n' + else: + m = re.search(r'BOOST_AUTO_TEST_CASE\(([^(]*)\)', l.strip()) + if m: + test_name = m.group(1) + m = re.search(r'R"([^(]*)\($', l.strip()) + if m: + inside = True + delimiter = m.group(1) + + +if __name__ == '__main__': + path = sys.argv[1] + extract_test_cases(path) + |