included-tests: generate binary data from test files for inclusion into test binaries
This change moves test data into the binaries rather than reading them from the disk at runtime. Advantages: - Tests become distributable - Cross-compile friendly. Build on one machine and execute in an arbitrary location on another. - Easier testing for backports. Users can verify that tests pass without having to track down corresponding test data. - More trustworthy test results and easier quality assurance as tests make fewer assumptions about their environment. - Tests could theoretically run at client/daemon startup and exit on failure. Disadvantages: - Required 'hexdump' build-dependency. This is a standard bsd tool that should be usable everywhere. It is likely already installed on all build-machines. - Tests can no longer be fudged after build by altering test-data.
This commit is contained in:
@@ -8,13 +8,15 @@
|
||||
#include "key.h"
|
||||
#include "script.h"
|
||||
#include "util.h"
|
||||
#include "data/sig_noncanonical.json.h"
|
||||
#include "data/sig_canonical.json.h"
|
||||
|
||||
using namespace std;
|
||||
using namespace json_spirit;
|
||||
|
||||
|
||||
// In script_tests.cpp
|
||||
extern Array read_json(const std::string& filename);
|
||||
extern Array read_json(const std::string& jsondata);
|
||||
|
||||
BOOST_AUTO_TEST_SUITE(canonical_tests)
|
||||
|
||||
@@ -58,7 +60,7 @@ bool static IsCanonicalSignature_OpenSSL(const std::vector<unsigned char> &vchSi
|
||||
|
||||
BOOST_AUTO_TEST_CASE(script_canon)
|
||||
{
|
||||
Array tests = read_json("sig_canonical.json");
|
||||
Array tests = read_json(std::string(json_tests::sig_canonical, json_tests::sig_canonical + sizeof(json_tests::sig_canonical)));
|
||||
|
||||
BOOST_FOREACH(Value &tv, tests) {
|
||||
string test = tv.get_str();
|
||||
@@ -72,7 +74,7 @@ BOOST_AUTO_TEST_CASE(script_canon)
|
||||
|
||||
BOOST_AUTO_TEST_CASE(script_noncanon)
|
||||
{
|
||||
Array tests = read_json("sig_noncanonical.json");
|
||||
Array tests = read_json(std::string(json_tests::sig_noncanonical, json_tests::sig_noncanonical + sizeof(json_tests::sig_noncanonical)));
|
||||
|
||||
BOOST_FOREACH(Value &tv, tests) {
|
||||
string test = tv.get_str();
|
||||
|
||||
Reference in New Issue
Block a user