Allow tests to be marked ABIEncoderV1Only.

This commit is contained in:
Daniel Kirchner 2020-02-04 16:01:30 +01:00
parent af9fc8b634
commit d882b6fa83
3 changed files with 21 additions and 0 deletions

View File

@ -61,10 +61,26 @@ SemanticTest::SemanticTest(string const& _filename, langutil::EVMVersion _evmVer
} }
m_settings.erase("compileViaYul"); m_settings.erase("compileViaYul");
} }
if (m_settings.count("ABIEncoderV1Only"))
{
if (m_settings["ABIEncoderV1Only"] == "true")
{
m_validatedSettings["ABIEncoderV1Only"] = "true";
m_runWithABIEncoderV1Only = true;
}
m_settings.erase("ABIEncoderV1Only");
}
parseExpectations(file); parseExpectations(file);
soltestAssert(!m_tests.empty(), "No tests specified in " + _filename); soltestAssert(!m_tests.empty(), "No tests specified in " + _filename);
} }
bool SemanticTest::validateSettings(langutil::EVMVersion _evmVersion)
{
if (m_runWithABIEncoderV1Only && solidity::test::CommonOptions::get().useABIEncoderV2)
return false;
return EVMVersionRestrictedTestCase::validateSettings(_evmVersion);
}
TestCase::TestResult SemanticTest::run(ostream& _stream, string const& _linePrefix, bool _formatted) TestCase::TestResult SemanticTest::run(ostream& _stream, string const& _linePrefix, bool _formatted)
{ {
for(bool compileViaYul: set<bool>{!m_runWithoutYul, m_runWithYul}) for(bool compileViaYul: set<bool>{!m_runWithoutYul, m_runWithYul})

View File

@ -44,6 +44,8 @@ public:
explicit SemanticTest(std::string const& _filename, langutil::EVMVersion _evmVersion); explicit SemanticTest(std::string const& _filename, langutil::EVMVersion _evmVersion);
bool validateSettings(langutil::EVMVersion _evmVersion) override;
TestResult run(std::ostream& _stream, std::string const& _linePrefix = "", bool _formatted = false) override; TestResult run(std::ostream& _stream, std::string const& _linePrefix = "", bool _formatted = false) override;
void printSource(std::ostream &_stream, std::string const& _linePrefix = "", bool _formatted = false) const override; void printSource(std::ostream &_stream, std::string const& _linePrefix = "", bool _formatted = false) const override;
void printUpdatedExpectations(std::ostream& _stream, std::string const& _linePrefix = "") const override; void printUpdatedExpectations(std::ostream& _stream, std::string const& _linePrefix = "") const override;
@ -64,6 +66,7 @@ private:
std::vector<TestFunctionCall> m_tests; std::vector<TestFunctionCall> m_tests;
bool m_runWithYul = false; bool m_runWithYul = false;
bool m_runWithoutYul = true; bool m_runWithoutYul = true;
bool m_runWithABIEncoderV1Only = false;
}; };
} }

View File

@ -8,6 +8,8 @@ contract test {
return this.table(k); return this.table(k);
} }
} }
// ====
// ABIEncoderV1Only: true
// ---- // ----
// table(uint8): 0 -> 0 // table(uint8): 0 -> 0
// table(uint8): 0x01 -> 0 // table(uint8): 0x01 -> 0