Skip to content

Commit

Permalink
Create and update bugs by version list.
Browse files Browse the repository at this point in the history
  • Loading branch information
chriseth committed Apr 12, 2017
1 parent 291ece2 commit a7e605a
Show file tree
Hide file tree
Showing 3 changed files with 344 additions and 1 deletion.
297 changes: 297 additions & 0 deletions docs/bugs_by_version.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,297 @@
{
"0.1.0": {
"bugs": [
"IdentityPrecompileReturnIgnored",
"StaleKnowledegAboutSHA3",
"SendFailsForZeroEther",
"DynamicAllocationInfiniteLoop",
"ClearStateOnCodePathJoin",
"CleanBytesHigherOrderBits",
"ArrayAccessCleanHigherOrderBits",
"AncientCompiler"
],
"released": "2015-07-10"
},
"0.1.1": {
"bugs": [
"IdentityPrecompileReturnIgnored",
"StaleKnowledegAboutSHA3",
"SendFailsForZeroEther",
"DynamicAllocationInfiniteLoop",
"ClearStateOnCodePathJoin",
"CleanBytesHigherOrderBits",
"ArrayAccessCleanHigherOrderBits",
"AncientCompiler"
],
"released": "2015-08-04"
},
"0.1.2": {
"bugs": [
"IdentityPrecompileReturnIgnored",
"StaleKnowledegAboutSHA3",
"SendFailsForZeroEther",
"DynamicAllocationInfiniteLoop",
"ClearStateOnCodePathJoin",
"CleanBytesHigherOrderBits",
"ArrayAccessCleanHigherOrderBits",
"AncientCompiler"
],
"released": "2015-08-20"
},
"0.1.3": {
"bugs": [
"IdentityPrecompileReturnIgnored",
"StaleKnowledegAboutSHA3",
"SendFailsForZeroEther",
"DynamicAllocationInfiniteLoop",
"ClearStateOnCodePathJoin",
"CleanBytesHigherOrderBits",
"ArrayAccessCleanHigherOrderBits",
"AncientCompiler"
],
"released": "2015-09-25"
},
"0.1.4": {
"bugs": [
"IdentityPrecompileReturnIgnored",
"StaleKnowledegAboutSHA3",
"SendFailsForZeroEther",
"DynamicAllocationInfiniteLoop",
"ClearStateOnCodePathJoin",
"CleanBytesHigherOrderBits",
"ArrayAccessCleanHigherOrderBits",
"AncientCompiler"
],
"released": "2015-09-30"
},
"0.1.5": {
"bugs": [
"IdentityPrecompileReturnIgnored",
"StaleKnowledegAboutSHA3",
"SendFailsForZeroEther",
"DynamicAllocationInfiniteLoop",
"ClearStateOnCodePathJoin",
"CleanBytesHigherOrderBits",
"ArrayAccessCleanHigherOrderBits",
"AncientCompiler"
],
"released": "2015-10-07"
},
"0.1.6": {
"bugs": [
"IdentityPrecompileReturnIgnored",
"HighOrderByteCleanStorage",
"StaleKnowledegAboutSHA3",
"SendFailsForZeroEther",
"DynamicAllocationInfiniteLoop",
"ClearStateOnCodePathJoin",
"CleanBytesHigherOrderBits",
"ArrayAccessCleanHigherOrderBits",
"AncientCompiler"
],
"released": "2015-10-16"
},
"0.1.7": {
"bugs": [
"IdentityPrecompileReturnIgnored",
"HighOrderByteCleanStorage",
"StaleKnowledegAboutSHA3",
"SendFailsForZeroEther",
"DynamicAllocationInfiniteLoop",
"ClearStateOnCodePathJoin",
"CleanBytesHigherOrderBits",
"ArrayAccessCleanHigherOrderBits",
"AncientCompiler"
],
"released": "2015-11-17"
},
"0.2.0": {
"bugs": [
"IdentityPrecompileReturnIgnored",
"HighOrderByteCleanStorage",
"StaleKnowledegAboutSHA3",
"SendFailsForZeroEther",
"DynamicAllocationInfiniteLoop",
"ClearStateOnCodePathJoin",
"CleanBytesHigherOrderBits",
"ArrayAccessCleanHigherOrderBits",
"AncientCompiler"
],
"released": "2015-12-02"
},
"0.2.1": {
"bugs": [
"IdentityPrecompileReturnIgnored",
"HighOrderByteCleanStorage",
"StaleKnowledegAboutSHA3",
"SendFailsForZeroEther",
"DynamicAllocationInfiniteLoop",
"ClearStateOnCodePathJoin",
"CleanBytesHigherOrderBits",
"ArrayAccessCleanHigherOrderBits",
"AncientCompiler"
],
"released": "2016-01-30"
},
"0.2.2": {
"bugs": [
"IdentityPrecompileReturnIgnored",
"HighOrderByteCleanStorage",
"StaleKnowledegAboutSHA3",
"SendFailsForZeroEther",
"DynamicAllocationInfiniteLoop",
"ClearStateOnCodePathJoin",
"CleanBytesHigherOrderBits",
"ArrayAccessCleanHigherOrderBits",
"AncientCompiler"
],
"released": "2016-02-17"
},
"0.3.0": {
"bugs": [
"IdentityPrecompileReturnIgnored",
"HighOrderByteCleanStorage",
"StaleKnowledegAboutSHA3",
"SendFailsForZeroEther",
"DynamicAllocationInfiniteLoop",
"ClearStateOnCodePathJoin",
"CleanBytesHigherOrderBits",
"ArrayAccessCleanHigherOrderBits"
],
"released": "2016-03-11"
},
"0.3.1": {
"bugs": [
"IdentityPrecompileReturnIgnored",
"HighOrderByteCleanStorage",
"StaleKnowledegAboutSHA3",
"SendFailsForZeroEther",
"DynamicAllocationInfiniteLoop",
"ClearStateOnCodePathJoin",
"CleanBytesHigherOrderBits"
],
"released": "2016-03-31"
},
"0.3.2": {
"bugs": [
"IdentityPrecompileReturnIgnored",
"HighOrderByteCleanStorage",
"StaleKnowledegAboutSHA3",
"SendFailsForZeroEther",
"DynamicAllocationInfiniteLoop",
"ClearStateOnCodePathJoin",
"CleanBytesHigherOrderBits"
],
"released": "2016-04-18"
},
"0.3.3": {
"bugs": [
"IdentityPrecompileReturnIgnored",
"HighOrderByteCleanStorage",
"StaleKnowledegAboutSHA3",
"SendFailsForZeroEther",
"DynamicAllocationInfiniteLoop",
"ClearStateOnCodePathJoin"
],
"released": "2016-05-27"
},
"0.3.4": {
"bugs": [
"IdentityPrecompileReturnIgnored",
"HighOrderByteCleanStorage",
"StaleKnowledegAboutSHA3",
"SendFailsForZeroEther",
"DynamicAllocationInfiniteLoop",
"ClearStateOnCodePathJoin"
],
"released": "2016-05-31"
},
"0.3.5": {
"bugs": [
"IdentityPrecompileReturnIgnored",
"HighOrderByteCleanStorage",
"StaleKnowledegAboutSHA3",
"SendFailsForZeroEther",
"DynamicAllocationInfiniteLoop",
"ClearStateOnCodePathJoin"
],
"released": "2016-06-10"
},
"0.3.6": {
"bugs": [
"IdentityPrecompileReturnIgnored",
"HighOrderByteCleanStorage",
"StaleKnowledegAboutSHA3",
"SendFailsForZeroEther"
],
"released": "2016-08-10"
},
"0.4.0": {
"bugs": [
"IdentityPrecompileReturnIgnored",
"HighOrderByteCleanStorage",
"StaleKnowledegAboutSHA3",
"LibrariesNotCallableFromPayableFunctions"
],
"released": "2016-09-08"
},
"0.4.1": {
"bugs": [
"IdentityPrecompileReturnIgnored",
"HighOrderByteCleanStorage",
"StaleKnowledegAboutSHA3",
"LibrariesNotCallableFromPayableFunctions"
],
"released": "2016-09-09"
},
"0.4.10": {
"bugs": [],
"released": "2017-03-15"
},
"0.4.2": {
"bugs": [
"IdentityPrecompileReturnIgnored",
"HighOrderByteCleanStorage",
"StaleKnowledegAboutSHA3"
],
"released": "2016-09-17"
},
"0.4.3": {
"bugs": [
"IdentityPrecompileReturnIgnored",
"HighOrderByteCleanStorage"
],
"released": "2016-10-25"
},
"0.4.4": {
"bugs": [
"IdentityPrecompileReturnIgnored"
],
"released": "2016-10-31"
},
"0.4.5": {
"bugs": [
"IdentityPrecompileReturnIgnored",
"StateKnowledgeNotResetForJumpdest"
],
"released": "2016-11-21"
},
"0.4.6": {
"bugs": [
"IdentityPrecompileReturnIgnored"
],
"released": "2016-11-22"
},
"0.4.7": {
"bugs": [],
"released": "2016-12-15"
},
"0.4.8": {
"bugs": [],
"released": "2017-01-13"
},
"0.4.9": {
"bugs": [],
"released": "2017-01-31"
}
}
43 changes: 43 additions & 0 deletions scripts/update_bugs_by_version.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#!/usr/bin/env python
#
# This script is used to generate the list of bugs per compiler version
# from the list of bugs.
# It updates the list in place and signals failure if there were changes.
# This makes it possible to use this script as part of CI to check
# that the list is up to date.

import os
import json
import re
import sys

def comp(version_string):
return [int(c) for c in version_string.split('.')]

path = os.path.dirname(os.path.realpath(__file__))
with open(path + '/../docs/bugs.json') as bugsFile:
bugs = json.load(bugsFile)

versions = {}
with open(path + '/../Changelog.md') as changelog:
for line in changelog:
m = re.search(r'^### (\S+) \((\d+-\d+-\d+)\)$', line)
if m:
versions[m.group(1)] = {}
versions[m.group(1)]['released'] = m.group(2)

for v in versions:
versions[v]['bugs'] = []
for bug in bugs:
if 'introduced' in bug and comp(bug['introduced']) > comp(v):
continue
if comp(bug['fixed']) <= comp(v):
continue
versions[v]['bugs'] += [bug['name']]

with open(path + '/../docs/bugs_by_version.json', 'r+') as bugs_by_version:
old_contents = bugs_by_version.read()
new_contents = json.dumps(versions, sort_keys=True, indent=4)
bugs_by_version.seek(0)
bugs_by_version.write(new_contents)
sys.exit(old_contents != new_contents)
5 changes: 4 additions & 1 deletion test/cmdlineTests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,10 @@ set -e
REPO_ROOT="$(dirname "$0")"/..
SOLC="$REPO_ROOT/build/solc/solc"

# Compile all files in std and examples.
echo "Checking that the bug list is up to date..."
"$REPO_ROOT"/scripts/update_bugs_by_version.py

echo "Compiling all files in std and examples..."

for f in "$REPO_ROOT"/std/*.sol
do
Expand Down

0 comments on commit a7e605a

Please sign in to comment.