diff options
author | Christian Parpart <christian@ethereum.org> | 2018-08-07 00:52:49 +0800 |
---|---|---|
committer | Christian Parpart <christian@ethereum.org> | 2018-08-07 20:55:22 +0800 |
commit | 39ffd7500e68e1603cead1a8473c1fb990fbab8f (patch) | |
tree | e16672177bf8489e8bfa08861c709f8a237e8017 | |
parent | d33e5683f51dc9d85b4493abbf6f03f6ab7b8ff2 (diff) | |
download | dexon-solidity-39ffd7500e68e1603cead1a8473c1fb990fbab8f.tar.gz dexon-solidity-39ffd7500e68e1603cead1a8473c1fb990fbab8f.tar.zst dexon-solidity-39ffd7500e68e1603cead1a8473c1fb990fbab8f.zip |
solc: Fixes double-quoting path names on stderr and adds tests for it.
Before it was possible to get a failure message, such as:
""notfound.sol"" is not found
whereas it should be:
"notfound.sol" is not found.
-rw-r--r-- | solc/CommandLineInterface.cpp | 8 | ||||
-rwxr-xr-x | test/cmdlineTests.sh | 50 |
2 files changed, 54 insertions, 4 deletions
diff --git a/solc/CommandLineInterface.cpp b/solc/CommandLineInterface.cpp index 6a768a00..6dd8fac0 100644 --- a/solc/CommandLineInterface.cpp +++ b/solc/CommandLineInterface.cpp @@ -416,11 +416,11 @@ bool CommandLineInterface::readInputFilesAndConfigureRemappings() { if (!ignoreMissing) { - cerr << "\"" << infile << "\" is not found" << endl; + cerr << infile << " is not found." << endl; return false; } else - cerr << "\"" << infile << "\" is not found. Skipping." << endl; + cerr << infile << " is not found. Skipping." << endl; continue; } @@ -429,11 +429,11 @@ bool CommandLineInterface::readInputFilesAndConfigureRemappings() { if (!ignoreMissing) { - cerr << "\"" << infile << "\" is not a valid file" << endl; + cerr << infile << " is not a valid file." << endl; return false; } else - cerr << "\"" << infile << "\" is not a valid file. Skipping." << endl; + cerr << infile << " is not a valid file. Skipping." << endl; continue; } diff --git a/test/cmdlineTests.sh b/test/cmdlineTests.sh index bc0ee786..a8e271d2 100755 --- a/test/cmdlineTests.sh +++ b/test/cmdlineTests.sh @@ -94,6 +94,56 @@ printTask "Testing unknown options..." 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_file_input_failures() { + local filename="${1}" + local solc_args="${2}" + local stdout_expected="${3}" + local stderr_expected="${4}" + local stdout_path=`mktemp` + local stderr_path=`mktemp` + + set +e + "$SOLC" "${filename}" ${solc_args} 1>$stdout_path 2>$stderr_path + exitCode=$? + set -e + + if [[ $exitCode -eq 0 ]]; then + printError "Incorrect exit code. Expected failure (non-zero) but got success (0)." + rm -f $stdout_path $stderr_path + exit 1 + fi + + if [[ "$(cat $stdout_path)" != "${stdout_expected}" ]]; then + printError "Incorrect output on stderr received. Expected:" + echo -e "${stdout_expected}" + + printError "But got:" + cat $stdout_path + rm -f $stdout_path $stderr_path + exit 1 + fi + + if [[ "$(cat $stderr_path)" != "${stderr_expected}" ]]; then + printError "Incorrect output on stderr received. Expected:" + echo -e "${stderr_expected}" + + printError "But got:" + cat $stderr_path + rm -f $stdout_path $stderr_path + exit 1 + fi + + rm -f $stdout_path $stderr_path +} + +printTask "Testing passing files that are not found..." +test_solc_file_input_failures "file_not_found.sol" "" "" "\"file_not_found.sol\" is not found." + +printTask "Testing passing files that are not files..." +test_solc_file_input_failures "." "" "" "\".\" is not a valid file." + printTask "Compiling various other contracts and libraries..." ( cd "$REPO_ROOT"/test/compilationTests/ |