diff options
author | chriseth <chris@ethereum.org> | 2018-08-15 18:30:54 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-15 18:30:54 +0800 |
commit | c7d2af2637e061de43cc6c53e12bf35d1ac66387 (patch) | |
tree | cd486c80ba40b74e8ea5a688101b879d15ddca69 /test/buglistTests.js | |
parent | b9752b236b474e384a297fe832cf0efb161e8deb (diff) | |
parent | 55e67e41f9356e4953a57d8a15808e1c7d391686 (diff) | |
download | dexon-solidity-c7d2af2637e061de43cc6c53e12bf35d1ac66387.tar.gz dexon-solidity-c7d2af2637e061de43cc6c53e12bf35d1ac66387.tar.zst dexon-solidity-c7d2af2637e061de43cc6c53e12bf35d1ac66387.zip |
Merge pull request #4583 from ethereum/nested_array_library_changelog
Bugfix Changelog entry regarding nested arrays returned by library functions
Diffstat (limited to 'test/buglistTests.js')
-rwxr-xr-x | test/buglistTests.js | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/test/buglistTests.js b/test/buglistTests.js new file mode 100755 index 00000000..6b7df2f2 --- /dev/null +++ b/test/buglistTests.js @@ -0,0 +1,45 @@ +#!/usr/bin/env node + +"use strict"; + +var fs = require('fs') +var bugs = JSON.parse(fs.readFileSync(__dirname + '/../docs/bugs.json', 'utf8')) + +var bugsByName = {} +for (var i in bugs) +{ + if (bugs[i].name in bugsByName) + { + throw "Duplicate bug name: " + bugs[i].name + } + bugsByName[bugs[i].name] = bugs[i] +} + +var tests = fs.readFileSync(__dirname + '/buglist_test_vectors.md', 'utf8') + +var testVectorParser = /\s*#\s+(\S+)\s+## buggy\n([^#]*)## fine\n([^#]*)/g + +var result; +while ((result = testVectorParser.exec(tests)) !== null) +{ + var name = result[1] + var buggy = result[2].split('\n--\n') + var fine = result[3].split('\n--\n') + console.log("Testing " + name + " with " + buggy.length + " buggy and " + fine.length + " fine instances") + + var regex = RegExp(bugsByName[name].check['regex-source']) + for (var i in buggy) + { + if (!regex.exec(buggy[i])) + { + throw "Bug " + name + ": Buggy source does not match: " + buggy[i] + } + } + for (var i in fine) + { + if (regex.exec(fine[i])) + { + throw "Bug " + name + ": Non-buggy source matches: " + fine[i] + } + } +} |