diff --git a/test/cmdlineTests.sh b/test/cmdlineTests.sh index eb5c714da..f12a66865 100755 --- a/test/cmdlineTests.sh +++ b/test/cmdlineTests.sh @@ -147,6 +147,13 @@ TMPDIR=$(mktemp -d) cat "$f" exit 1 fi + + "$REPO_ROOT"/build/test/solfuzzer --without-optimizer --quiet < "$f" + if [ $? -ne 0 ]; then + echo "Fuzzer (without optimizer) failed on:" + cat "$f" + exit 1 + fi set -e done ) diff --git a/test/fuzzer.cpp b/test/fuzzer.cpp index 2c39dde27..53ba72017 100644 --- a/test/fuzzer.cpp +++ b/test/fuzzer.cpp @@ -121,13 +121,12 @@ void testStandardCompiler() } } -void testCompiler() +void testCompiler(bool optimize) { if (!quiet) - cout << "Testing compiler." << endl; + cout << "Testing compiler " << (optimize ? "with" : "without") << " optimizer." << endl; string input = readInput(); - bool optimize = true; string outputString(compileJSON(input.c_str(), optimize)); Json::Value outputJson; if (!Json::Reader().parse(outputString, outputJson)) @@ -191,6 +190,10 @@ Allowed options)", "const-opt", "Run the constant optimizer instead of compiling. " "Expects a binary string of up to 32 bytes on stdin." + ) + ( + "without-optimizer", + "Run without optimizations. Cannot be used together with standard-json." ); po::variables_map arguments; @@ -216,7 +219,7 @@ Allowed options)", else if (arguments.count("standard-json")) testStandardCompiler(); else - testCompiler(); + testCompiler(!arguments.count("without-optimizer")); return 0; }