mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
testeth: fix --singletest option
This commit is contained in:
parent
2fdea4d563
commit
e608be8299
@ -549,58 +549,50 @@ void checkCallCreates(eth::Transactions _resultCallCreates, eth::Transactions _e
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void userDefinedTest(string testTypeFlag, std::function<void(json_spirit::mValue&, bool)> doTests)
|
void userDefinedTest(std::function<void(json_spirit::mValue&, bool)> doTests)
|
||||||
{
|
{
|
||||||
Options::get(); // parse command line options, e.g. to enable JIT
|
if (!Options::get().singleTest)
|
||||||
|
|
||||||
for (int i = 1; i < boost::unit_test::framework::master_test_suite().argc; ++i)
|
|
||||||
{
|
{
|
||||||
string arg = boost::unit_test::framework::master_test_suite().argv[i];
|
cnote << "Missing user test specification\nUsage: testeth --singletest <filename> <testname>\n";
|
||||||
if (arg == testTypeFlag)
|
return;
|
||||||
{
|
|
||||||
if (boost::unit_test::framework::master_test_suite().argc <= i + 2)
|
|
||||||
{
|
|
||||||
cnote << "Missing filename\nUsage: testeth " << testTypeFlag << " <filename> <testname>\n";
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
string filename = boost::unit_test::framework::master_test_suite().argv[i + 1];
|
|
||||||
string testname = boost::unit_test::framework::master_test_suite().argv[i + 2];
|
|
||||||
int currentVerbosity = g_logVerbosity;
|
|
||||||
g_logVerbosity = 12;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
cnote << "Testing user defined test: " << filename;
|
|
||||||
json_spirit::mValue v;
|
|
||||||
string s = asString(contents(filename));
|
|
||||||
BOOST_REQUIRE_MESSAGE(s.length() > 0, "Contents of " + filename + " is empty. ");
|
|
||||||
json_spirit::read_string(s, v);
|
|
||||||
json_spirit::mObject oSingleTest;
|
|
||||||
|
|
||||||
json_spirit::mObject::const_iterator pos = v.get_obj().find(testname);
|
|
||||||
if (pos == v.get_obj().end())
|
|
||||||
{
|
|
||||||
cnote << "Could not find test: " << testname << " in " << filename << "\n";
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
oSingleTest[pos->first] = pos->second;
|
|
||||||
|
|
||||||
json_spirit::mValue v_singleTest(oSingleTest);
|
|
||||||
doTests(v_singleTest, false);
|
|
||||||
}
|
|
||||||
catch (Exception const& _e)
|
|
||||||
{
|
|
||||||
BOOST_ERROR("Failed Test with Exception: " << diagnostic_information(_e));
|
|
||||||
g_logVerbosity = currentVerbosity;
|
|
||||||
}
|
|
||||||
catch (std::exception const& _e)
|
|
||||||
{
|
|
||||||
BOOST_ERROR("Failed Test with Exception: " << _e.what());
|
|
||||||
g_logVerbosity = currentVerbosity;
|
|
||||||
}
|
|
||||||
g_logVerbosity = currentVerbosity;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto& filename = Options::get().singleTestFile;
|
||||||
|
auto& testname = Options::get().singleTestName;
|
||||||
|
int currentVerbosity = g_logVerbosity;
|
||||||
|
g_logVerbosity = 12;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
cnote << "Testing user defined test: " << filename;
|
||||||
|
json_spirit::mValue v;
|
||||||
|
string s = asString(contents(filename));
|
||||||
|
BOOST_REQUIRE_MESSAGE(s.length() > 0, "Contents of " + filename + " is empty. ");
|
||||||
|
json_spirit::read_string(s, v);
|
||||||
|
json_spirit::mObject oSingleTest;
|
||||||
|
|
||||||
|
json_spirit::mObject::const_iterator pos = v.get_obj().find(testname);
|
||||||
|
if (pos == v.get_obj().end())
|
||||||
|
{
|
||||||
|
cnote << "Could not find test: " << testname << " in " << filename << "\n";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
oSingleTest[pos->first] = pos->second;
|
||||||
|
|
||||||
|
json_spirit::mValue v_singleTest(oSingleTest);
|
||||||
|
doTests(v_singleTest, false);
|
||||||
|
}
|
||||||
|
catch (Exception const& _e)
|
||||||
|
{
|
||||||
|
BOOST_ERROR("Failed Test with Exception: " << diagnostic_information(_e));
|
||||||
|
g_logVerbosity = currentVerbosity;
|
||||||
|
}
|
||||||
|
catch (std::exception const& _e)
|
||||||
|
{
|
||||||
|
BOOST_ERROR("Failed Test with Exception: " << _e.what());
|
||||||
|
g_logVerbosity = currentVerbosity;
|
||||||
|
}
|
||||||
|
g_logVerbosity = currentVerbosity;
|
||||||
}
|
}
|
||||||
|
|
||||||
void executeTests(const string& _name, const string& _testPathAppendix, const boost::filesystem::path _pathToFiller, std::function<void(json_spirit::mValue&, bool)> doTests)
|
void executeTests(const string& _name, const string& _testPathAppendix, const boost::filesystem::path _pathToFiller, std::function<void(json_spirit::mValue&, bool)> doTests)
|
||||||
@ -739,10 +731,11 @@ Options::Options()
|
|||||||
inputLimits = true;
|
inputLimits = true;
|
||||||
bigData = true;
|
bigData = true;
|
||||||
}
|
}
|
||||||
else if (arg == "--singletest" && i + 1 < argc)
|
else if (arg == "--singletest" && i + 2 < argc)
|
||||||
{
|
{
|
||||||
singleTest = true;
|
singleTest = true;
|
||||||
singleTestName = argv[i + 1];
|
singleTestFile = argv[i + 1];
|
||||||
|
singleTestName = argv[i + 2];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -157,7 +157,7 @@ void checkLog(eth::LogEntries _resultLogs, eth::LogEntries _expectedLogs);
|
|||||||
void checkCallCreates(eth::Transactions _resultCallCreates, eth::Transactions _expectedCallCreates);
|
void checkCallCreates(eth::Transactions _resultCallCreates, eth::Transactions _expectedCallCreates);
|
||||||
|
|
||||||
void executeTests(const std::string& _name, const std::string& _testPathAppendix, const boost::filesystem::path _pathToFiller, std::function<void(json_spirit::mValue&, bool)> doTests);
|
void executeTests(const std::string& _name, const std::string& _testPathAppendix, const boost::filesystem::path _pathToFiller, std::function<void(json_spirit::mValue&, bool)> doTests);
|
||||||
void userDefinedTest(std::string testTypeFlag, std::function<void(json_spirit::mValue&, bool)> doTests);
|
void userDefinedTest(std::function<void(json_spirit::mValue&, bool)> doTests);
|
||||||
RLPStream createRLPStreamFromTransactionFields(json_spirit::mObject& _tObj);
|
RLPStream createRLPStreamFromTransactionFields(json_spirit::mObject& _tObj);
|
||||||
eth::LastHashes lastHashes(u256 _currentBlockNumber);
|
eth::LastHashes lastHashes(u256 _currentBlockNumber);
|
||||||
json_spirit::mObject fillJsonWithState(eth::State _state);
|
json_spirit::mObject fillJsonWithState(eth::State _state);
|
||||||
@ -188,6 +188,7 @@ public:
|
|||||||
/// Test selection
|
/// Test selection
|
||||||
/// @{
|
/// @{
|
||||||
bool singleTest = false;
|
bool singleTest = false;
|
||||||
|
std::string singleTestFile;
|
||||||
std::string singleTestName;
|
std::string singleTestName;
|
||||||
bool performance = false;
|
bool performance = false;
|
||||||
bool quadratic = false;
|
bool quadratic = false;
|
||||||
|
Loading…
Reference in New Issue
Block a user