Get rid of implicit hidden dependencies between test .cpp files
This commit is contained in:
parent
a4a020de7b
commit
0bab947bc5
|
@ -83,6 +83,8 @@ BITCOIN_TESTS =\
|
|||
test/skiplist_tests.cpp \
|
||||
test/test_bitcoin.cpp \
|
||||
test/test_bitcoin.h \
|
||||
test/test_util.cpp \
|
||||
test/test_util.h \
|
||||
test/timedata_tests.cpp \
|
||||
test/torcontrol_tests.cpp \
|
||||
test/transaction_tests.cpp \
|
||||
|
|
|
@ -14,14 +14,13 @@
|
|||
#include "util.h"
|
||||
#include "utilstrencodings.h"
|
||||
#include "test/test_bitcoin.h"
|
||||
#include "test/test_util.h"
|
||||
|
||||
#include <boost/foreach.hpp>
|
||||
#include <boost/test/unit_test.hpp>
|
||||
|
||||
#include <univalue.h>
|
||||
|
||||
extern UniValue read_json(const std::string& jsondata);
|
||||
|
||||
BOOST_FIXTURE_TEST_SUITE(base58_tests, BasicTestingSetup)
|
||||
|
||||
// Goal: test low-level base58 encoding functionality
|
||||
|
|
|
@ -9,51 +9,14 @@
|
|||
#include "netbase.h"
|
||||
|
||||
#include "test/test_bitcoin.h"
|
||||
#include "test/test_util.h"
|
||||
|
||||
#include <boost/algorithm/string.hpp>
|
||||
#include <boost/test/unit_test.hpp>
|
||||
|
||||
#include <univalue.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
UniValue
|
||||
createArgs(int nRequired, const char* address1=NULL, const char* address2=NULL)
|
||||
{
|
||||
UniValue result(UniValue::VARR);
|
||||
result.push_back(nRequired);
|
||||
UniValue addresses(UniValue::VARR);
|
||||
if (address1) addresses.push_back(address1);
|
||||
if (address2) addresses.push_back(address2);
|
||||
result.push_back(addresses);
|
||||
return result;
|
||||
}
|
||||
|
||||
UniValue CallRPC(string args)
|
||||
{
|
||||
vector<string> vArgs;
|
||||
boost::split(vArgs, args, boost::is_any_of(" \t"));
|
||||
string strMethod = vArgs[0];
|
||||
vArgs.erase(vArgs.begin());
|
||||
// Handle empty strings the same way as CLI
|
||||
for (auto i = 0; i < vArgs.size(); i++) {
|
||||
if (vArgs[i] == "\"\"") {
|
||||
vArgs[i] = "";
|
||||
}
|
||||
}
|
||||
UniValue params = RPCConvertValues(strMethod, vArgs);
|
||||
|
||||
rpcfn_type method = tableRPC[strMethod]->actor;
|
||||
try {
|
||||
UniValue result = (*method)(params, false);
|
||||
return result;
|
||||
}
|
||||
catch (const UniValue& objError) {
|
||||
throw runtime_error(find_value(objError, "message").get_str());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BOOST_FIXTURE_TEST_SUITE(rpc_tests, TestingSetup)
|
||||
|
||||
BOOST_AUTO_TEST_CASE(rpc_rawparams)
|
||||
|
|
|
@ -10,10 +10,10 @@
|
|||
#include "wallet/wallet.h"
|
||||
|
||||
#include "test/test_bitcoin.h"
|
||||
#include "test/test_util.h"
|
||||
|
||||
#include "zcash/Address.hpp"
|
||||
|
||||
#include "rpcserver.h"
|
||||
#include "asyncrpcqueue.h"
|
||||
#include "asyncrpcoperation.h"
|
||||
#include "wallet/asyncrpcoperation_sendmany.h"
|
||||
|
@ -32,14 +32,12 @@
|
|||
#include <boost/test/unit_test.hpp>
|
||||
#include <boost/format.hpp>
|
||||
#include <boost/filesystem.hpp>
|
||||
#include <boost/optional.hpp>
|
||||
|
||||
#include <univalue.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
extern UniValue createArgs(int nRequired, const char* address1 = NULL, const char* address2 = NULL);
|
||||
extern UniValue CallRPC(string args);
|
||||
|
||||
extern CWallet* pwalletMain;
|
||||
|
||||
bool find_error(const UniValue& objError, const std::string& expected) {
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#include "script/sign.h"
|
||||
#include "util.h"
|
||||
#include "test/test_bitcoin.h"
|
||||
#include "test/test_util.h"
|
||||
|
||||
#if defined(HAVE_CONSENSUS_LIB)
|
||||
#include "script/zcashconsensus.h"
|
||||
|
@ -36,22 +37,6 @@ using namespace std;
|
|||
|
||||
static const unsigned int flags = SCRIPT_VERIFY_P2SH | SCRIPT_VERIFY_STRICTENC;
|
||||
|
||||
unsigned int ParseScriptFlags(string strFlags);
|
||||
string FormatScriptFlags(unsigned int flags);
|
||||
|
||||
UniValue
|
||||
read_json(const std::string& jsondata)
|
||||
{
|
||||
UniValue v;
|
||||
|
||||
if (!v.read(jsondata) || !v.isArray())
|
||||
{
|
||||
BOOST_ERROR("Parse error.");
|
||||
return UniValue(UniValue::VARR);
|
||||
}
|
||||
return v.get_array();
|
||||
}
|
||||
|
||||
BOOST_FIXTURE_TEST_SUITE(script_tests, BasicTestingSetup)
|
||||
|
||||
CMutableTransaction BuildCreditingTransaction(const CScript& scriptPubKey)
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#include "script/script.h"
|
||||
#include "serialize.h"
|
||||
#include "test/test_bitcoin.h"
|
||||
#include "test/test_util.h"
|
||||
#include "util.h"
|
||||
#include "version.h"
|
||||
#include "sodium.h"
|
||||
|
@ -20,8 +21,6 @@
|
|||
|
||||
#include <univalue.h>
|
||||
|
||||
extern UniValue read_json(const std::string& jsondata);
|
||||
|
||||
// Old script.cpp SignatureHash function
|
||||
uint256 static SignatureHashOld(CScript scriptCode, const CTransaction& txTo, unsigned int nIn, int nHashType)
|
||||
{
|
||||
|
|
|
@ -0,0 +1,109 @@
|
|||
#include "test_util.h"
|
||||
|
||||
#include <boost/algorithm/string/classification.hpp>
|
||||
#include <boost/algorithm/string/split.hpp>
|
||||
#include <boost/assign/list_of.hpp>
|
||||
#include <boost/foreach.hpp>
|
||||
#include <boost/test/unit_test.hpp>
|
||||
#include <map>
|
||||
#include <vector>
|
||||
|
||||
#include "script/interpreter.h"
|
||||
#include "rpcclient.h"
|
||||
#include "rpcserver.h"
|
||||
|
||||
static std::map<std::string, unsigned int> mapFlagNames = boost::assign::map_list_of
|
||||
(std::string("NONE"), (unsigned int)SCRIPT_VERIFY_NONE)
|
||||
(std::string("P2SH"), (unsigned int)SCRIPT_VERIFY_P2SH)
|
||||
(std::string("STRICTENC"), (unsigned int)SCRIPT_VERIFY_STRICTENC)
|
||||
(std::string("LOW_S"), (unsigned int)SCRIPT_VERIFY_LOW_S)
|
||||
(std::string("SIGPUSHONLY"), (unsigned int)SCRIPT_VERIFY_SIGPUSHONLY)
|
||||
(std::string("MINIMALDATA"), (unsigned int)SCRIPT_VERIFY_MINIMALDATA)
|
||||
(std::string("NULLDUMMY"), (unsigned int)SCRIPT_VERIFY_NULLDUMMY)
|
||||
(std::string("DISCOURAGE_UPGRADABLE_NOPS"), (unsigned int)SCRIPT_VERIFY_DISCOURAGE_UPGRADABLE_NOPS)
|
||||
(std::string("CLEANSTACK"), (unsigned int)SCRIPT_VERIFY_CLEANSTACK)
|
||||
(std::string("CHECKLOCKTIMEVERIFY"), (unsigned int)SCRIPT_VERIFY_CHECKLOCKTIMEVERIFY);
|
||||
|
||||
UniValue
|
||||
read_json(const std::string& jsondata)
|
||||
{
|
||||
UniValue v;
|
||||
|
||||
if (!v.read(jsondata) || !v.isArray())
|
||||
{
|
||||
BOOST_ERROR("Parse error.");
|
||||
return UniValue(UniValue::VARR);
|
||||
}
|
||||
return v.get_array();
|
||||
}
|
||||
|
||||
unsigned int ParseScriptFlags(std::string strFlags)
|
||||
{
|
||||
if (strFlags.empty()) {
|
||||
return 0;
|
||||
}
|
||||
unsigned int flags = 0;
|
||||
std::vector<std::string> words;
|
||||
boost::algorithm::split(words, strFlags, boost::algorithm::is_any_of(","));
|
||||
|
||||
BOOST_FOREACH(std::string word, words)
|
||||
{
|
||||
if (!mapFlagNames.count(word))
|
||||
BOOST_ERROR("Bad test: unknown verification flag '" << word << "'");
|
||||
flags |= mapFlagNames[word];
|
||||
}
|
||||
|
||||
return flags;
|
||||
}
|
||||
|
||||
std::string FormatScriptFlags(unsigned int flags)
|
||||
{
|
||||
if (flags == 0) {
|
||||
return "";
|
||||
}
|
||||
std::string ret;
|
||||
std::map<std::string, unsigned int>::const_iterator it = mapFlagNames.begin();
|
||||
while (it != mapFlagNames.end()) {
|
||||
if (flags & it->second) {
|
||||
ret += it->first + ",";
|
||||
}
|
||||
it++;
|
||||
}
|
||||
return ret.substr(0, ret.size() - 1);
|
||||
}
|
||||
|
||||
UniValue
|
||||
createArgs(int nRequired, const char* address1, const char* address2)
|
||||
{
|
||||
UniValue result(UniValue::VARR);
|
||||
result.push_back(nRequired);
|
||||
UniValue addresses(UniValue::VARR);
|
||||
if (address1) addresses.push_back(address1);
|
||||
if (address2) addresses.push_back(address2);
|
||||
result.push_back(addresses);
|
||||
return result;
|
||||
}
|
||||
|
||||
UniValue CallRPC(std::string args)
|
||||
{
|
||||
std::vector<std::string> vArgs;
|
||||
boost::split(vArgs, args, boost::is_any_of(" \t"));
|
||||
std::string strMethod = vArgs[0];
|
||||
vArgs.erase(vArgs.begin());
|
||||
// Handle empty strings the same way as CLI
|
||||
for (auto i = 0; i < vArgs.size(); i++) {
|
||||
if (vArgs[i] == "\"\"") {
|
||||
vArgs[i] = "";
|
||||
}
|
||||
}
|
||||
UniValue params = RPCConvertValues(strMethod, vArgs);
|
||||
|
||||
rpcfn_type method = tableRPC[strMethod]->actor;
|
||||
try {
|
||||
UniValue result = (*method)(params, false);
|
||||
return result;
|
||||
}
|
||||
catch (const UniValue& objError) {
|
||||
throw std::runtime_error(find_value(objError, "message").get_str());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
#ifndef BITCOIN_TEST_TEST_UTIL_H
|
||||
#define BITCOIN_TEST_TEST_UTIL_H
|
||||
|
||||
#include <string>
|
||||
|
||||
#include <univalue.h>
|
||||
|
||||
UniValue read_json(const std::string& jsondata);
|
||||
unsigned int ParseScriptFlags(std::string strFlags);
|
||||
std::string FormatScriptFlags(unsigned int flags);
|
||||
UniValue createArgs(int nRequired, const char* address1 = NULL, const char* address2 = NULL);
|
||||
UniValue CallRPC(std::string args);
|
||||
|
||||
|
||||
#endif
|
|
@ -15,6 +15,7 @@
|
|||
#include "main.h"
|
||||
#include "script/script.h"
|
||||
#include "script/script_error.h"
|
||||
#include "test/test_util.h"
|
||||
#include "primitives/transaction.h"
|
||||
|
||||
#include "sodium.h"
|
||||
|
@ -22,11 +23,7 @@
|
|||
#include <map>
|
||||
#include <string>
|
||||
|
||||
#include <boost/algorithm/string/classification.hpp>
|
||||
#include <boost/algorithm/string/split.hpp>
|
||||
#include <boost/assign/list_of.hpp>
|
||||
#include <boost/test/unit_test.hpp>
|
||||
#include <boost/assign/list_of.hpp>
|
||||
|
||||
#include <univalue.h>
|
||||
|
||||
|
@ -36,56 +33,6 @@
|
|||
|
||||
using namespace std;
|
||||
|
||||
// In script_tests.cpp
|
||||
extern UniValue read_json(const std::string& jsondata);
|
||||
|
||||
static std::map<string, unsigned int> mapFlagNames = boost::assign::map_list_of
|
||||
(string("NONE"), (unsigned int)SCRIPT_VERIFY_NONE)
|
||||
(string("P2SH"), (unsigned int)SCRIPT_VERIFY_P2SH)
|
||||
(string("STRICTENC"), (unsigned int)SCRIPT_VERIFY_STRICTENC)
|
||||
(string("LOW_S"), (unsigned int)SCRIPT_VERIFY_LOW_S)
|
||||
(string("SIGPUSHONLY"), (unsigned int)SCRIPT_VERIFY_SIGPUSHONLY)
|
||||
(string("MINIMALDATA"), (unsigned int)SCRIPT_VERIFY_MINIMALDATA)
|
||||
(string("NULLDUMMY"), (unsigned int)SCRIPT_VERIFY_NULLDUMMY)
|
||||
(string("DISCOURAGE_UPGRADABLE_NOPS"), (unsigned int)SCRIPT_VERIFY_DISCOURAGE_UPGRADABLE_NOPS)
|
||||
(string("CLEANSTACK"), (unsigned int)SCRIPT_VERIFY_CLEANSTACK)
|
||||
(string("CHECKLOCKTIMEVERIFY"), (unsigned int)SCRIPT_VERIFY_CHECKLOCKTIMEVERIFY);
|
||||
|
||||
unsigned int ParseScriptFlags(string strFlags)
|
||||
{
|
||||
if (strFlags.empty()) {
|
||||
return 0;
|
||||
}
|
||||
unsigned int flags = 0;
|
||||
vector<string> words;
|
||||
boost::algorithm::split(words, strFlags, boost::algorithm::is_any_of(","));
|
||||
|
||||
BOOST_FOREACH(string word, words)
|
||||
{
|
||||
if (!mapFlagNames.count(word))
|
||||
BOOST_ERROR("Bad test: unknown verification flag '" << word << "'");
|
||||
flags |= mapFlagNames[word];
|
||||
}
|
||||
|
||||
return flags;
|
||||
}
|
||||
|
||||
string FormatScriptFlags(unsigned int flags)
|
||||
{
|
||||
if (flags == 0) {
|
||||
return "";
|
||||
}
|
||||
string ret;
|
||||
std::map<string, unsigned int>::const_iterator it = mapFlagNames.begin();
|
||||
while (it != mapFlagNames.end()) {
|
||||
if (flags & it->second) {
|
||||
ret += it->first + ",";
|
||||
}
|
||||
it++;
|
||||
}
|
||||
return ret.substr(0, ret.size() - 1);
|
||||
}
|
||||
|
||||
BOOST_FIXTURE_TEST_SUITE(transaction_tests, JoinSplitTestingSetup)
|
||||
|
||||
BOOST_AUTO_TEST_CASE(tx_valid)
|
||||
|
|
Loading…
Reference in New Issue