aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rwxr-xr-xtest/cmdlineTests.sh66
1 files changed, 51 insertions, 15 deletions
diff --git a/test/cmdlineTests.sh b/test/cmdlineTests.sh
index 97823515..eb5c714d 100755
--- a/test/cmdlineTests.sh
+++ b/test/cmdlineTests.sh
@@ -28,25 +28,68 @@
set -e
-REPO_ROOT="$(dirname "$0")"/..
+REPO_ROOT=$(cd $(dirname "$0")/.. && pwd)
+echo $REPO_ROOT
SOLC="$REPO_ROOT/build/solc/solc"
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..."
+echo "Checking that StandardToken.sol, owned.sol and mortal.sol produce bytecode..."
+output=$("$REPO_ROOT"/build/solc/solc --bin "$REPO_ROOT"/std/*.sol 2>/dev/null | grep "ffff" | wc -l)
+test "${output//[[:blank:]]/}" = "3"
-for f in "$REPO_ROOT"/std/*.sol
-do
- echo "Compiling $f..."
+function compileFull()
+{
+ files="$*"
+ set +e
+ "$SOLC" --optimize \
+ --combined-json abi,asm,ast,bin,bin-runtime,clone-bin,compact-format,devdoc,hashes,interface,metadata,opcodes,srcmap,srcmap-runtime,userdoc \
+ $files >/dev/null 2>&1
+ failed=$?
+ set -e
+ if [ $failed -ne 0 ]
+ then
+ echo "Compilation failed on:"
+ cat $files
+ false
+ fi
+}
+
+function compileWithoutWarning()
+{
+ files="$*"
set +e
- output=$("$SOLC" "$f" 2>&1)
+ output=$("$SOLC" $files 2>&1)
failed=$?
# Remove the pre-release warning from the compiler output
output=$(echo "$output" | grep -v 'pre-release')
echo "$output"
set -e
test -z "$output" -a "$failed" -eq 0
+}
+
+echo "Compiling various other contracts and libraries..."
+(
+cd "$REPO_ROOT"/test/compilationTests/
+for dir in *
+do
+ if [ "$dir" != "README.md" ]
+ then
+ echo " - $dir"
+ cd "$dir"
+ compileFull *.sol */*.sol
+ cd ..
+ fi
+done
+)
+
+echo "Compiling all files in std and examples..."
+
+for f in "$REPO_ROOT"/std/*.sol
+do
+ echo "$f"
+ compileWithoutWarning "$f"
done
echo "Compiling all examples from the documentation..."
@@ -59,15 +102,8 @@ TMPDIR=$(mktemp -d)
"$REPO_ROOT"/scripts/isolate_tests.py "$REPO_ROOT"/docs/ docs
for f in *.sol
do
- echo "trying $f"
- set +e
- output=$("$SOLC" "$f" 2>&1)
- failed=$?
- # Remove the pre-release warning from the compiler output
- output=$(echo "$output" | grep -v 'pre-release')
- echo "$output"
- set -e
- test -z "$output" -a "$failed" -eq 0
+ echo "$f"
+ compileFull "$TMPDIR/$f"
done
)
rm -rf "$TMPDIR"