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:
@@ -9,6 +9,7 @@
|
||||
#include "alert.h"
|
||||
#include "serialize.h"
|
||||
#include "util.h"
|
||||
#include "data/alertTests.raw.h"
|
||||
|
||||
#if 0
|
||||
//
|
||||
@@ -71,27 +72,13 @@ struct ReadAlerts
|
||||
{
|
||||
ReadAlerts()
|
||||
{
|
||||
std::string filename("alertTests");
|
||||
namespace fs = boost::filesystem;
|
||||
fs::path testFile = fs::current_path() / "data" / filename;
|
||||
#ifdef TEST_DATA_DIR
|
||||
if (!fs::exists(testFile))
|
||||
{
|
||||
testFile = fs::path(BOOST_PP_STRINGIZE(TEST_DATA_DIR)) / filename;
|
||||
}
|
||||
#endif
|
||||
FILE* fp = fopen(testFile.string().c_str(), "rb");
|
||||
if (!fp) return;
|
||||
|
||||
|
||||
CAutoFile filein = CAutoFile(fp, SER_DISK, CLIENT_VERSION);
|
||||
if (!filein) return;
|
||||
|
||||
std::vector<unsigned char> vch(alert_tests::alertTests, alert_tests::alertTests + sizeof(alert_tests::alertTests));
|
||||
CDataStream stream(vch, SER_DISK, CLIENT_VERSION);
|
||||
try {
|
||||
while (!feof(filein))
|
||||
while (stream.good())
|
||||
{
|
||||
CAlert alert;
|
||||
filein >> alert;
|
||||
stream >> alert;
|
||||
alerts.push_back(alert);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user