aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/isolate_tests.py
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2016-12-07 18:29:37 +0800
committerGitHub <noreply@github.com>2016-12-07 18:29:37 +0800
commit740294f65ac78d57989820b5efe45f787069bc9d (patch)
treeab623e6d191827d1e79150f62f8b0450216144c9 /scripts/isolate_tests.py
parentfd7561ed609c07ea38b8647982121d73be9224f7 (diff)
parent72f9a4a73eba906f349ccb3e577899d0f9add963 (diff)
downloaddexon-solidity-740294f65ac78d57989820b5efe45f787069bc9d.tar
dexon-solidity-740294f65ac78d57989820b5efe45f787069bc9d.tar.gz
dexon-solidity-740294f65ac78d57989820b5efe45f787069bc9d.tar.bz2
dexon-solidity-740294f65ac78d57989820b5efe45f787069bc9d.tar.lz
dexon-solidity-740294f65ac78d57989820b5efe45f787069bc9d.tar.xz
dexon-solidity-740294f65ac78d57989820b5efe45f787069bc9d.tar.zst
dexon-solidity-740294f65ac78d57989820b5efe45f787069bc9d.zip
Merge pull request #1489 from federicobond/isolate-tests
Cleanup and fix scripts/isolate_tests.py
Diffstat (limited to 'scripts/isolate_tests.py')
-rwxr-xr-xscripts/isolate_tests.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/scripts/isolate_tests.py b/scripts/isolate_tests.py
new file mode 100755
index 00000000..91900aa6
--- /dev/null
+++ b/scripts/isolate_tests.py
@@ -0,0 +1,44 @@
+#!/usr/bin/python
+#
+# This script reads C++ 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
+
+
+def extract_cases(path):
+ lines = open(path).read().splitlines()
+
+ inside = False
+ tests = []
+
+ for l in lines:
+ if inside:
+ if l.strip().endswith(')";'):
+ inside = False
+ else:
+ tests[-1] += l + '\n'
+ else:
+ if l.strip().endswith('R"('):
+ inside = True
+ tests += ['']
+
+ return tests
+
+
+def write_cases(tests, start=0):
+ for i, test in enumerate(tests, start=start):
+ open('test%d.sol' % i, 'w').write(test)
+
+
+if __name__ == '__main__':
+ files = sys.argv[1:]
+
+ i = 0
+ for path in files:
+ cases = extract_cases(path)
+ write_cases(cases, start=i)
+ i += len(cases)