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/skiplist_tests.cpp \
|
||||||
test/test_bitcoin.cpp \
|
test/test_bitcoin.cpp \
|
||||||
test/test_bitcoin.h \
|
test/test_bitcoin.h \
|
||||||
|
test/test_util.cpp \
|
||||||
|
test/test_util.h \
|
||||||
test/timedata_tests.cpp \
|
test/timedata_tests.cpp \
|
||||||
test/torcontrol_tests.cpp \
|
test/torcontrol_tests.cpp \
|
||||||
test/transaction_tests.cpp \
|
test/transaction_tests.cpp \
|
||||||
|
|
|
@ -14,14 +14,13 @@
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "utilstrencodings.h"
|
#include "utilstrencodings.h"
|
||||||
#include "test/test_bitcoin.h"
|
#include "test/test_bitcoin.h"
|
||||||
|
#include "test/test_util.h"
|
||||||
|
|
||||||
#include <boost/foreach.hpp>
|
#include <boost/foreach.hpp>
|
||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <univalue.h>
|
#include <univalue.h>
|
||||||
|
|
||||||
extern UniValue read_json(const std::string& jsondata);
|
|
||||||
|
|
||||||
BOOST_FIXTURE_TEST_SUITE(base58_tests, BasicTestingSetup)
|
BOOST_FIXTURE_TEST_SUITE(base58_tests, BasicTestingSetup)
|
||||||
|
|
||||||
// Goal: test low-level base58 encoding functionality
|
// Goal: test low-level base58 encoding functionality
|
||||||
|
|
|
@ -9,51 +9,14 @@
|
||||||
#include "netbase.h"
|
#include "netbase.h"
|
||||||
|
|
||||||
#include "test/test_bitcoin.h"
|
#include "test/test_bitcoin.h"
|
||||||
|
#include "test/test_util.h"
|
||||||
|
|
||||||
#include <boost/algorithm/string.hpp>
|
|
||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
#include <univalue.h>
|
#include <univalue.h>
|
||||||
|
|
||||||
using namespace std;
|
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_FIXTURE_TEST_SUITE(rpc_tests, TestingSetup)
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(rpc_rawparams)
|
BOOST_AUTO_TEST_CASE(rpc_rawparams)
|
||||||
|
|
|
@ -10,10 +10,10 @@
|
||||||
#include "wallet/wallet.h"
|
#include "wallet/wallet.h"
|
||||||
|
|
||||||
#include "test/test_bitcoin.h"
|
#include "test/test_bitcoin.h"
|
||||||
|
#include "test/test_util.h"
|
||||||
|
|
||||||
#include "zcash/Address.hpp"
|
#include "zcash/Address.hpp"
|
||||||
|
|
||||||
#include "rpcserver.h"
|
|
||||||
#include "asyncrpcqueue.h"
|
#include "asyncrpcqueue.h"
|
||||||
#include "asyncrpcoperation.h"
|
#include "asyncrpcoperation.h"
|
||||||
#include "wallet/asyncrpcoperation_sendmany.h"
|
#include "wallet/asyncrpcoperation_sendmany.h"
|
||||||
|
@ -32,14 +32,12 @@
|
||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
#include <boost/format.hpp>
|
#include <boost/format.hpp>
|
||||||
#include <boost/filesystem.hpp>
|
#include <boost/filesystem.hpp>
|
||||||
|
#include <boost/optional.hpp>
|
||||||
|
|
||||||
#include <univalue.h>
|
#include <univalue.h>
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
extern UniValue createArgs(int nRequired, const char* address1 = NULL, const char* address2 = NULL);
|
|
||||||
extern UniValue CallRPC(string args);
|
|
||||||
|
|
||||||
extern CWallet* pwalletMain;
|
extern CWallet* pwalletMain;
|
||||||
|
|
||||||
bool find_error(const UniValue& objError, const std::string& expected) {
|
bool find_error(const UniValue& objError, const std::string& expected) {
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
#include "script/sign.h"
|
#include "script/sign.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "test/test_bitcoin.h"
|
#include "test/test_bitcoin.h"
|
||||||
|
#include "test/test_util.h"
|
||||||
|
|
||||||
#if defined(HAVE_CONSENSUS_LIB)
|
#if defined(HAVE_CONSENSUS_LIB)
|
||||||
#include "script/zcashconsensus.h"
|
#include "script/zcashconsensus.h"
|
||||||
|
@ -36,22 +37,6 @@ using namespace std;
|
||||||
|
|
||||||
static const unsigned int flags = SCRIPT_VERIFY_P2SH | SCRIPT_VERIFY_STRICTENC;
|
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)
|
BOOST_FIXTURE_TEST_SUITE(script_tests, BasicTestingSetup)
|
||||||
|
|
||||||
CMutableTransaction BuildCreditingTransaction(const CScript& scriptPubKey)
|
CMutableTransaction BuildCreditingTransaction(const CScript& scriptPubKey)
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#include "script/script.h"
|
#include "script/script.h"
|
||||||
#include "serialize.h"
|
#include "serialize.h"
|
||||||
#include "test/test_bitcoin.h"
|
#include "test/test_bitcoin.h"
|
||||||
|
#include "test/test_util.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "version.h"
|
#include "version.h"
|
||||||
#include "sodium.h"
|
#include "sodium.h"
|
||||||
|
@ -20,8 +21,6 @@
|
||||||
|
|
||||||
#include <univalue.h>
|
#include <univalue.h>
|
||||||
|
|
||||||
extern UniValue read_json(const std::string& jsondata);
|
|
||||||
|
|
||||||
// Old script.cpp SignatureHash function
|
// Old script.cpp SignatureHash function
|
||||||
uint256 static SignatureHashOld(CScript scriptCode, const CTransaction& txTo, unsigned int nIn, int nHashType)
|
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 "main.h"
|
||||||
#include "script/script.h"
|
#include "script/script.h"
|
||||||
#include "script/script_error.h"
|
#include "script/script_error.h"
|
||||||
|
#include "test/test_util.h"
|
||||||
#include "primitives/transaction.h"
|
#include "primitives/transaction.h"
|
||||||
|
|
||||||
#include "sodium.h"
|
#include "sodium.h"
|
||||||
|
@ -22,11 +23,7 @@
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <string>
|
#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/test/unit_test.hpp>
|
||||||
#include <boost/assign/list_of.hpp>
|
|
||||||
|
|
||||||
#include <univalue.h>
|
#include <univalue.h>
|
||||||
|
|
||||||
|
@ -36,56 +33,6 @@
|
||||||
|
|
||||||
using namespace std;
|
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_FIXTURE_TEST_SUITE(transaction_tests, JoinSplitTestingSetup)
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(tx_valid)
|
BOOST_AUTO_TEST_CASE(tx_valid)
|
||||||
|
|
Loading…
Reference in New Issue