aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Parpart <christian@ethereum.org>2018-08-07 00:52:49 +0800
committerChristian Parpart <christian@ethereum.org>2018-08-07 20:55:22 +0800
commit39ffd7500e68e1603cead1a8473c1fb990fbab8f (patch)
treee16672177bf8489e8bfa08861c709f8a237e8017
parentd33e5683f51dc9d85b4493abbf6f03f6ab7b8ff2 (diff)
downloaddexon-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.cpp8
-rwxr-xr-xtest/cmdlineTests.sh50
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/