Skip to content

[cmdline tests] Select only directories to skip the readme #5709

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Dec 20, 2018
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
98 changes: 54 additions & 44 deletions test/cmdlineTests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -100,17 +100,19 @@ printTask "Testing unknown options..."
failed=$?
set -e

if [ "$output" == "unrecognised option '--allow=test'" ] && [ $failed -ne 0 ] ; then
echo "Passed"
if [ "$output" == "unrecognised option '--allow=test'" ] && [ $failed -ne 0 ]
then
echo "Passed"
else
printError "Incorrect response to unknown options: $STDERR"
exit 1
printError "Incorrect response to unknown options: $STDERR"
exit 1
fi
)

# General helper function for testing SOLC behaviour, based on file name, compile opts, exit code, stdout and stderr.
# An failure is expected.
test_solc_behaviour() {
function test_solc_behaviour()
{
local filename="${1}"
local solc_args="${2}"
local solc_stdin="${3}"
Expand All @@ -122,29 +124,33 @@ test_solc_behaviour() {
if [[ "$exit_code_expected" = "" ]]; then exit_code_expected="0"; fi

set +e
if [[ "$solc_stdin" = "" ]]; then
if [[ "$solc_stdin" = "" ]]
then
"$SOLC" "${filename}" ${solc_args} 1>$stdout_path 2>$stderr_path
else
"$SOLC" "${filename}" ${solc_args} <$solc_stdin 1>$stdout_path 2>$stderr_path
fi
exitCode=$?
set -e

if [[ "$solc_args" == *"--standard-json"* ]]; then
if [[ "$solc_args" == *"--standard-json"* ]]
then
sed -i -e 's/{[^{]*Warning: This is a pre-release compiler version[^}]*},\{0,1\}//' "$stdout_path"
sed -i -e 's/"errors":\[\],\{0,1\}//' "$stdout_path"
else
sed -i -e '/^Warning: This is a pre-release compiler version, please do not use it in production./d' "$stderr_path"
sed -i -e 's/ Consider adding "pragma .*$//' "$stderr_path"
fi

if [[ $exitCode -ne "$exit_code_expected" ]]; then
if [[ $exitCode -ne "$exit_code_expected" ]]
then
printError "Incorrect exit code. Expected $exit_code_expected but got $exitCode."
rm -f $stdout_path $stderr_path
exit 1
fi

if [[ "$(cat $stdout_path)" != "${stdout_expected}" ]]; then
if [[ "$(cat $stdout_path)" != "${stdout_expected}" ]]
then
printError "Incorrect output on stdout received. Expected:"
echo -e "${stdout_expected}"

Expand All @@ -154,7 +160,8 @@ test_solc_behaviour() {
exit 1
fi

if [[ "$(cat $stderr_path)" != "${stderr_expected}" ]]; then
if [[ "$(cat $stderr_path)" != "${stderr_expected}" ]]
then
printError "Incorrect output on stderr received. Expected:"
echo -e "${stderr_expected}"

Expand All @@ -179,46 +186,43 @@ test_solc_behaviour "${0}" "ctx:=/some/remapping/target" "" "" 1 "Invalid remapp

printTask "Running standard JSON commandline tests..."
(
cd "$REPO_ROOT"/test/cmdlineTests/
for file in *.json
do
args="--standard-json"
stdin="$REPO_ROOT/test/cmdlineTests/$file"
stdout=$(cat $file.stdout 2>/dev/null || true)
exitCode=$(cat $file.exit 2>/dev/null || true)
err=$(cat $file.err 2>/dev/null || true)
printTask " - $file"
test_solc_behaviour "" "$args" "$stdin" "$stdout" "$exitCode" "$err"
done
cd "$REPO_ROOT"/test/cmdlineTests/
for file in *.json
do
args="--standard-json"
stdin="$REPO_ROOT/test/cmdlineTests/$file"
stdout=$(cat $file.stdout 2>/dev/null || true)
exitCode=$(cat $file.exit 2>/dev/null || true)
err=$(cat $file.err 2>/dev/null || true)
printTask " - $file"
test_solc_behaviour "" "$args" "$stdin" "$stdout" "$exitCode" "$err"
done
)

printTask "Running general commandline tests..."
(
cd "$REPO_ROOT"/test/cmdlineTests/
for file in *.sol
do
args=$(cat $file.args 2>/dev/null || true)
stdout=$(cat $file.stdout 2>/dev/null || true)
exitCode=$(cat $file.exit 2>/dev/null || true)
err=$(cat $file.err 2>/dev/null || true)
printTask " - $file"
test_solc_behaviour "$file" "$args" "" "$stdout" "$exitCode" "$err"
done
cd "$REPO_ROOT"/test/cmdlineTests/
for file in *.sol
do
args=$(cat $file.args 2>/dev/null || true)
stdout=$(cat $file.stdout 2>/dev/null || true)
exitCode=$(cat $file.exit 2>/dev/null || true)
err=$(cat $file.err 2>/dev/null || true)
printTask " - $file"
test_solc_behaviour "$file" "$args" "" "$stdout" "$exitCode" "$err"
done
)

printTask "Compiling various other contracts and libraries..."
(
cd "$REPO_ROOT"/test/compilationTests/
for dir in *
do
if [ "$dir" != "README.md" ]
then
cd "$REPO_ROOT"/test/compilationTests/
for dir in */
do
echo " - $dir"
cd "$dir"
compileFull -w *.sol */*.sol
cd ..
fi
done
done
)

printTask "Compiling all examples from the documentation..."
Expand Down Expand Up @@ -293,7 +297,8 @@ SOLTMPDIR=$(mktemp -d)
)
rm -rf "$SOLTMPDIR"

test_solc_assembly_output() {
function test_solc_assembly_output()
{
local input="${1}"
local expected="${2}"
local solc_args="${3}"
Expand Down Expand Up @@ -342,7 +347,8 @@ SOLTMPDIR=$(mktemp -d)
set -e

# This should fail
if [[ !("$output" =~ "No input files given") || ($result == 0) ]] ; then
if [[ !("$output" =~ "No input files given") || ($result == 0) ]]
then
printError "Incorrect response to empty input arg list: $STDERR"
exit 1
fi
Expand All @@ -353,15 +359,17 @@ SOLTMPDIR=$(mktemp -d)
set -e

# The contract should be compiled
if [[ "$result" != 0 ]] ; then
if [[ "$result" != 0 ]]
then
exit 1
fi

# This should not fail
set +e
output=$(echo '' | "$SOLC" --ast - 2>/dev/null)
set -e
if [[ $? != 0 ]] ; then
if [[ $? != 0 ]]
then
exit 1
fi
)
Expand All @@ -379,14 +387,16 @@ SOLTMPDIR=$(mktemp -d)
do
set +e
"$REPO_ROOT"/build/test/tools/solfuzzer --quiet < "$f"
if [ $? -ne 0 ]; then
if [ $? -ne 0 ]
then
printError "Fuzzer failed on:"
cat "$f"
exit 1
fi

"$REPO_ROOT"/build/test/tools/solfuzzer --without-optimizer --quiet < "$f"
if [ $? -ne 0 ]; then
if [ $? -ne 0 ]
then
printError "Fuzzer (without optimizer) failed on:"
cat "$f"
exit 1
Expand Down