mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Unified use of settings. Removed a couple of unused functions.
This commit is contained in:
parent
3b9e926559
commit
f4d9f6772f
@ -28,7 +28,7 @@ using namespace solidity;
|
|||||||
using namespace solidity::frontend;
|
using namespace solidity::frontend;
|
||||||
using namespace solidity::frontend::test;
|
using namespace solidity::frontend::test;
|
||||||
|
|
||||||
void TestCase::printUpdatedSettings(ostream& _stream, const string& _linePrefix, const bool)
|
void TestCase::printSettings(ostream& _stream, const string& _linePrefix, const bool)
|
||||||
{
|
{
|
||||||
auto& settings = m_reader.settings();
|
auto& settings = m_reader.settings();
|
||||||
if (settings.empty())
|
if (settings.empty())
|
||||||
@ -63,11 +63,10 @@ void TestCase::expect(string::iterator& _it, string::iterator _end, string::valu
|
|||||||
EVMVersionRestrictedTestCase::EVMVersionRestrictedTestCase(string const& _filename):
|
EVMVersionRestrictedTestCase::EVMVersionRestrictedTestCase(string const& _filename):
|
||||||
TestCase(_filename)
|
TestCase(_filename)
|
||||||
{
|
{
|
||||||
if (!m_reader.hasSetting("EVMVersion"))
|
string versionString = m_reader.stringSetting("EVMVersion", "any");
|
||||||
|
if (versionString == "any")
|
||||||
return;
|
return;
|
||||||
|
|
||||||
string versionString = m_reader.stringSetting("EVMVersion", "");
|
|
||||||
|
|
||||||
string comparator;
|
string comparator;
|
||||||
size_t versionBegin = 0;
|
size_t versionBegin = 0;
|
||||||
for (auto character: versionString)
|
for (auto character: versionString)
|
||||||
|
@ -57,8 +57,8 @@ public:
|
|||||||
/// If @arg _formatted is true, color-coding may be used to indicate
|
/// If @arg _formatted is true, color-coding may be used to indicate
|
||||||
/// error locations in the contract, if applicable.
|
/// error locations in the contract, if applicable.
|
||||||
virtual void printSource(std::ostream &_stream, std::string const &_linePrefix = "", bool const _formatted = false) const = 0;
|
virtual void printSource(std::ostream &_stream, std::string const &_linePrefix = "", bool const _formatted = false) const = 0;
|
||||||
/// Outputs the updated settings.
|
/// Outputs settings.
|
||||||
virtual void printUpdatedSettings(std::ostream &_stream, std::string const &_linePrefix = "", bool const _formatted = false);
|
virtual void printSettings(std::ostream &_stream, std::string const &_linePrefix = "", bool const _formatted = false);
|
||||||
/// Outputs test expectations to @arg _stream that match the actual results of the test.
|
/// Outputs test expectations to @arg _stream that match the actual results of the test.
|
||||||
/// Each line of output is prefixed with @arg _linePrefix.
|
/// Each line of output is prefixed with @arg _linePrefix.
|
||||||
virtual void printUpdatedExpectations(std::ostream& _stream, std::string const& _linePrefix) const = 0;
|
virtual void printUpdatedExpectations(std::ostream& _stream, std::string const& _linePrefix) const = 0;
|
||||||
|
@ -49,14 +49,9 @@ string TestCaseReader::simpleExpectations()
|
|||||||
return parseSimpleExpectations(m_file);
|
return parseSimpleExpectations(m_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TestCaseReader::hasSetting(std::string const& _name) const
|
|
||||||
{
|
|
||||||
return m_settings.count(_name) != 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TestCaseReader::boolSetting(std::string const& _name, bool _defaultValue)
|
bool TestCaseReader::boolSetting(std::string const& _name, bool _defaultValue)
|
||||||
{
|
{
|
||||||
if (!hasSetting(_name))
|
if (m_settings.count(_name) == 0)
|
||||||
return _defaultValue;
|
return _defaultValue;
|
||||||
|
|
||||||
m_unreadSettings.erase(_name);
|
m_unreadSettings.erase(_name);
|
||||||
@ -71,7 +66,7 @@ bool TestCaseReader::boolSetting(std::string const& _name, bool _defaultValue)
|
|||||||
|
|
||||||
size_t TestCaseReader::sizetSetting(std::string const& _name, size_t _defaultValue)
|
size_t TestCaseReader::sizetSetting(std::string const& _name, size_t _defaultValue)
|
||||||
{
|
{
|
||||||
if (!hasSetting(_name))
|
if (m_settings.count(_name) == 0)
|
||||||
return _defaultValue;
|
return _defaultValue;
|
||||||
|
|
||||||
m_unreadSettings.erase(_name);
|
m_unreadSettings.erase(_name);
|
||||||
@ -82,18 +77,13 @@ size_t TestCaseReader::sizetSetting(std::string const& _name, size_t _defaultVal
|
|||||||
|
|
||||||
string TestCaseReader::stringSetting(string const& _name, string const& _defaultValue)
|
string TestCaseReader::stringSetting(string const& _name, string const& _defaultValue)
|
||||||
{
|
{
|
||||||
if (!hasSetting(_name))
|
if (m_settings.count(_name) == 0)
|
||||||
return _defaultValue;
|
return _defaultValue;
|
||||||
|
|
||||||
m_unreadSettings.erase(_name);
|
m_unreadSettings.erase(_name);
|
||||||
return m_settings.at(_name);
|
return m_settings.at(_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestCaseReader::setSetting(std::string const& _name, std::string const& _value)
|
|
||||||
{
|
|
||||||
m_settings[_name] = _value;
|
|
||||||
}
|
|
||||||
|
|
||||||
void TestCaseReader::ensureAllSettingsRead() const
|
void TestCaseReader::ensureAllSettingsRead() const
|
||||||
{
|
{
|
||||||
if (!m_unreadSettings.empty())
|
if (!m_unreadSettings.empty())
|
||||||
|
@ -40,11 +40,9 @@ public:
|
|||||||
|
|
||||||
std::string simpleExpectations();
|
std::string simpleExpectations();
|
||||||
|
|
||||||
bool hasSetting(std::string const& _name) const;
|
|
||||||
bool boolSetting(std::string const& _name, bool _defaultValue);
|
bool boolSetting(std::string const& _name, bool _defaultValue);
|
||||||
size_t sizetSetting(std::string const& _name, size_t _defaultValue);
|
size_t sizetSetting(std::string const& _name, size_t _defaultValue);
|
||||||
std::string stringSetting(std::string const& _name, std::string const& _defaultValue);
|
std::string stringSetting(std::string const& _name, std::string const& _defaultValue);
|
||||||
void setSetting(std::string const& _name, std::string const& _value);
|
|
||||||
|
|
||||||
void ensureAllSettingsRead() const;
|
void ensureAllSettingsRead() const;
|
||||||
|
|
||||||
|
@ -43,21 +43,24 @@ SemanticTest::SemanticTest(string const& _filename, langutil::EVMVersion _evmVer
|
|||||||
m_source = m_reader.source();
|
m_source = m_reader.source();
|
||||||
m_lineOffset = m_reader.lineNumber();
|
m_lineOffset = m_reader.lineNumber();
|
||||||
|
|
||||||
if (m_reader.hasSetting("compileViaYul"))
|
string choice = m_reader.stringSetting("compileViaYul", "false");
|
||||||
{
|
|
||||||
string choice = m_reader.stringSetting("compileViaYul", "");
|
|
||||||
if (choice == "also")
|
if (choice == "also")
|
||||||
{
|
{
|
||||||
m_runWithYul = true;
|
m_runWithYul = true;
|
||||||
m_runWithoutYul = true;
|
m_runWithoutYul = true;
|
||||||
}
|
}
|
||||||
else
|
else if (choice == "true")
|
||||||
{
|
{
|
||||||
m_reader.setSetting("compileViaYul", "only");
|
|
||||||
m_runWithYul = true;
|
m_runWithYul = true;
|
||||||
m_runWithoutYul = false;
|
m_runWithoutYul = false;
|
||||||
}
|
}
|
||||||
|
else if (choice == "false")
|
||||||
|
{
|
||||||
|
m_runWithYul = false;
|
||||||
|
m_runWithoutYul = true;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
BOOST_THROW_EXCEPTION(runtime_error("Invalid compileViaYul value: " + choice + "."));
|
||||||
|
|
||||||
m_runWithABIEncoderV1Only = m_reader.boolSetting("ABIEncoderV1Only", false);
|
m_runWithABIEncoderV1Only = m_reader.boolSetting("ABIEncoderV1Only", false);
|
||||||
if (m_runWithABIEncoderV1Only && solidity::test::CommonOptions::get().useABIEncoderV2)
|
if (m_runWithABIEncoderV1Only && solidity::test::CommonOptions::get().useABIEncoderV2)
|
||||||
|
@ -7,7 +7,7 @@ contract C {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// ====
|
// ====
|
||||||
// compileViaYul: only
|
// compileViaYul: true
|
||||||
// ----
|
// ----
|
||||||
// f(uint256,uint256): 10, 3 -> 1
|
// f(uint256,uint256): 10, 3 -> 1
|
||||||
// f(uint256,uint256): 10, 2 -> 0
|
// f(uint256,uint256): 10, 2 -> 0
|
||||||
|
@ -7,7 +7,7 @@ contract C {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// ====
|
// ====
|
||||||
// compileViaYul: only
|
// compileViaYul: true
|
||||||
// ----
|
// ----
|
||||||
// f(int256,int256): 10, 3 -> 1
|
// f(int256,int256): 10, 3 -> 1
|
||||||
// f(int256,int256): 10, 2 -> 0
|
// f(int256,int256): 10, 2 -> 0
|
||||||
|
@ -8,7 +8,7 @@ contract C {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// ====
|
// ====
|
||||||
// compileViaYul: only
|
// compileViaYul: true
|
||||||
// ----
|
// ----
|
||||||
// keccak1() -> 0x64e604787cbf194841e7b68d7cd28786f6c9a0a3ab9f8b0a0e87cb4387ab0107
|
// keccak1() -> 0x64e604787cbf194841e7b68d7cd28786f6c9a0a3ab9f8b0a0e87cb4387ab0107
|
||||||
// keccak2() -> 0x64e604787cbf194841e7b68d7cd28786f6c9a0a3ab9f8b0a0e87cb4387ab0107
|
// keccak2() -> 0x64e604787cbf194841e7b68d7cd28786f6c9a0a3ab9f8b0a0e87cb4387ab0107
|
||||||
|
@ -5,7 +5,7 @@ contract C {
|
|||||||
function h() external pure returns (bytes4) { return 0xcafecafe; }
|
function h() external pure returns (bytes4) { return 0xcafecafe; }
|
||||||
}
|
}
|
||||||
// ====
|
// ====
|
||||||
// compileViaYul: only
|
// compileViaYul: true
|
||||||
// ----
|
// ----
|
||||||
// f1() -> 0x20, 6, left(0x616263616263)
|
// f1() -> 0x20, 6, left(0x616263616263)
|
||||||
// f2() -> 32, 47, 44048183223289766195424279195050628400112610419087780792899004030957505095210, 18165586057823232067963737336409268114628061002662705707816940456850361417728
|
// f2() -> 32, 47, 44048183223289766195424279195050628400112610419087780792899004030957505095210, 18165586057823232067963737336409268114628061002662705707816940456850361417728
|
||||||
|
@ -172,7 +172,7 @@ TestTool::Result TestTool::process()
|
|||||||
|
|
||||||
AnsiColorized(cout, formatted, {BOLD, CYAN}) << " Contract:" << endl;
|
AnsiColorized(cout, formatted, {BOLD, CYAN}) << " Contract:" << endl;
|
||||||
m_test->printSource(cout, " ", formatted);
|
m_test->printSource(cout, " ", formatted);
|
||||||
m_test->printUpdatedSettings(cout, " ", formatted);
|
m_test->printSettings(cout, " ", formatted);
|
||||||
|
|
||||||
cout << endl << outputMessages.str() << endl;
|
cout << endl << outputMessages.str() << endl;
|
||||||
return result == TestCase::TestResult::FatalError ? Result::Exception : Result::Failure;
|
return result == TestCase::TestResult::FatalError ? Result::Exception : Result::Failure;
|
||||||
@ -231,7 +231,7 @@ TestTool::Request TestTool::handleResponse(bool _exception)
|
|||||||
cout << endl;
|
cout << endl;
|
||||||
ofstream file(m_path.string(), ios::trunc);
|
ofstream file(m_path.string(), ios::trunc);
|
||||||
m_test->printSource(file);
|
m_test->printSource(file);
|
||||||
m_test->printUpdatedSettings(file);
|
m_test->printSettings(file);
|
||||||
file << "// ----" << endl;
|
file << "// ----" << endl;
|
||||||
m_test->printUpdatedExpectations(file, "// ");
|
m_test->printUpdatedExpectations(file, "// ");
|
||||||
return Request::Rerun;
|
return Request::Rerun;
|
||||||
|
Loading…
Reference in New Issue
Block a user