mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge remote-tracking branch 'origin/develop' into breaking
This commit is contained in:
@@ -149,6 +149,7 @@ BOOST_AUTO_TEST_CASE(cli_mode_options)
|
||||
"--model-checker-contracts=contract1.yul:A,contract2.yul:B",
|
||||
"--model-checker-div-mod-no-slacks",
|
||||
"--model-checker-engine=bmc",
|
||||
"--model-checker-invariants=contract,reentrancy",
|
||||
"--model-checker-show-unproved",
|
||||
"--model-checker-solvers=z3,smtlib2",
|
||||
"--model-checker-targets=underflow,divByZero",
|
||||
@@ -212,6 +213,7 @@ BOOST_AUTO_TEST_CASE(cli_mode_options)
|
||||
{{{"contract1.yul", {"A"}}, {"contract2.yul", {"B"}}}},
|
||||
true,
|
||||
{true, false},
|
||||
{{InvariantType::Contract, InvariantType::Reentrancy}},
|
||||
true,
|
||||
{false, true, true},
|
||||
{{VerificationTargetType::Underflow, VerificationTargetType::DivByZero}},
|
||||
@@ -267,7 +269,6 @@ BOOST_AUTO_TEST_CASE(assembly_mode_options)
|
||||
"--include-path=/home/user/include",
|
||||
"--allow-paths=/tmp,/home,project,../contracts",
|
||||
"--ignore-missing",
|
||||
"--error-recovery", // Ignored in assembly mode
|
||||
"--overwrite",
|
||||
"--evm-version=spuriousDragon",
|
||||
"--revert-strings=strip", // Accepted but has no effect in assembly mode
|
||||
@@ -286,6 +287,7 @@ BOOST_AUTO_TEST_CASE(assembly_mode_options)
|
||||
"contract2.yul:B",
|
||||
"--model-checker-div-mod-no-slacks", // Ignored in assembly mode
|
||||
"--model-checker-engine=bmc", // Ignored in assembly mode
|
||||
"--model-checker-invariants=contract,reentrancy", // Ignored in assembly mode
|
||||
"--model-checker-show-unproved", // Ignored in assembly mode
|
||||
"--model-checker-solvers=z3,smtlib2", // Ignored in assembly mode
|
||||
"--model-checker-targets=" // Ignored in assembly mode
|
||||
@@ -356,7 +358,6 @@ BOOST_AUTO_TEST_CASE(standard_json_mode_options)
|
||||
"--include-path=/home/user/include",
|
||||
"--allow-paths=/tmp,/home,project,../contracts",
|
||||
"--ignore-missing",
|
||||
"--error-recovery", // Ignored in Standard JSON mode
|
||||
"--output-dir=/tmp/out", // Accepted but has no effect in Standard JSON mode
|
||||
"--overwrite", // Accepted but has no effect in Standard JSON mode
|
||||
"--evm-version=spuriousDragon", // Ignored in Standard JSON mode
|
||||
@@ -377,6 +378,7 @@ BOOST_AUTO_TEST_CASE(standard_json_mode_options)
|
||||
"contract2.yul:B",
|
||||
"--model-checker-div-mod-no-slacks", // Ignored in Standard JSON mode
|
||||
"--model-checker-engine=bmc", // Ignored in Standard JSON mode
|
||||
"--model-checker-invariants=contract,reentrancy", // Ignored in Standard JSON mode
|
||||
"--model-checker-show-unproved", // Ignored in Standard JSON mode
|
||||
"--model-checker-solvers=z3,smtlib2", // Ignored in Standard JSON mode
|
||||
"--model-checker-targets=" // Ignored in Standard JSON mode
|
||||
@@ -413,30 +415,25 @@ BOOST_AUTO_TEST_CASE(standard_json_mode_options)
|
||||
BOOST_TEST(parsedOptions.value() == expectedOptions);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(experimental_via_ir_invalid_input_modes)
|
||||
BOOST_AUTO_TEST_CASE(invalid_options_input_modes_combinations)
|
||||
{
|
||||
static array<string, 5> const inputModeOptions = {
|
||||
"--assemble",
|
||||
"--yul",
|
||||
"--strict-assembly",
|
||||
"--standard-json",
|
||||
"--link",
|
||||
map<string, vector<string>> invalidOptionInputModeCombinations = {
|
||||
// TODO: This should eventually contain all options.
|
||||
{"--error-recovery", {"--assemble", "--yul", "--strict-assembly", "--standard-json", "--link"}},
|
||||
{"--experimental-via-ir", {"--assemble", "--yul", "--strict-assembly", "--standard-json", "--link"}}
|
||||
};
|
||||
for (string const& inputModeOption: inputModeOptions)
|
||||
{
|
||||
stringstream sout, serr;
|
||||
vector<string> commandLine = {
|
||||
"solc",
|
||||
"--experimental-via-ir",
|
||||
"file",
|
||||
inputModeOption,
|
||||
};
|
||||
optional<CommandLineOptions> parsedOptions = parseCommandLine(commandLine, sout, serr);
|
||||
|
||||
BOOST_TEST(sout.str() == "");
|
||||
BOOST_TEST(serr.str() == "The option --experimental-via-ir is only supported in the compiler mode.\n");
|
||||
BOOST_REQUIRE(!parsedOptions.has_value());
|
||||
}
|
||||
for (auto const& [optionName, inputModes]: invalidOptionInputModeCombinations)
|
||||
for (string const& inputMode: inputModes)
|
||||
{
|
||||
stringstream sout, serr;
|
||||
vector<string> commandLine = {"solc", optionName, "file", inputMode};
|
||||
optional<CommandLineOptions> parsedOptions = parseCommandLine(commandLine, sout, serr);
|
||||
|
||||
BOOST_TEST(sout.str() == "");
|
||||
BOOST_TEST(serr.str() == "The following options are not supported in the current input mode: " + optionName + "\n");
|
||||
BOOST_REQUIRE(!parsedOptions.has_value());
|
||||
}
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END()
|
||||
|
||||
Reference in New Issue
Block a user