mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Refactor logging
- Add warning log level - Change debug_log_level setting to enumeration string - Map Irrlicht log events to MT log events - Encapsulate log_* functions and global variables into a class, Logger - Unify dstream with standard logging mechanism - Unify core.debug() with standard core.log() script API
This commit is contained in:
parent
e0b57c1140
commit
2139d7d45f
25 changed files with 599 additions and 652 deletions
|
@ -19,7 +19,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
|
||||
#include "test.h"
|
||||
|
||||
#include "debug.h"
|
||||
#include "log.h"
|
||||
#include "nodedef.h"
|
||||
#include "itemdef.h"
|
||||
|
@ -223,7 +222,7 @@ void run_tests()
|
|||
u32 t1 = porting::getTime(PRECISION_MILLI);
|
||||
TestGameDef gamedef;
|
||||
|
||||
log_set_lev_silence(LMT_ERROR, true);
|
||||
g_logger.setLevelSilenced(LL_ERROR, true);
|
||||
|
||||
u32 num_modules_failed = 0;
|
||||
u32 num_total_tests_failed = 0;
|
||||
|
@ -239,11 +238,11 @@ void run_tests()
|
|||
|
||||
u32 tdiff = porting::getTime(PRECISION_MILLI) - t1;
|
||||
|
||||
log_set_lev_silence(LMT_ERROR, false);
|
||||
g_logger.setLevelSilenced(LL_ERROR, false);
|
||||
|
||||
const char *overall_status = (num_modules_failed == 0) ? "PASSED" : "FAILED";
|
||||
|
||||
dstream
|
||||
rawstream
|
||||
<< "++++++++++++++++++++++++++++++++++++++++"
|
||||
<< "++++++++++++++++++++++++++++++++++++++++" << std::endl
|
||||
<< "Unit Test Results: " << overall_status << std::endl
|
||||
|
@ -264,14 +263,14 @@ void run_tests()
|
|||
|
||||
bool TestBase::testModule(IGameDef *gamedef)
|
||||
{
|
||||
dstream << "======== Testing module " << getName() << std::endl;
|
||||
rawstream << "======== Testing module " << getName() << std::endl;
|
||||
u32 t1 = porting::getTime(PRECISION_MILLI);
|
||||
|
||||
|
||||
runTests(gamedef);
|
||||
|
||||
u32 tdiff = porting::getTime(PRECISION_MILLI) - t1;
|
||||
dstream << "======== Module " << getName() << " "
|
||||
rawstream << "======== Module " << getName() << " "
|
||||
<< (num_tests_failed ? "failed" : "passed") << " (" << num_tests_failed
|
||||
<< " failures / " << num_tests_run << " tests) - " << tdiff
|
||||
<< "ms" << std::endl;
|
||||
|
|
|
@ -32,60 +32,61 @@ class TestFailedException : public std::exception {
|
|||
};
|
||||
|
||||
// Runs a unit test and reports results
|
||||
#define TEST(fxn, ...) do { \
|
||||
u32 t1 = porting::getTime(PRECISION_MILLI); \
|
||||
try { \
|
||||
fxn(__VA_ARGS__); \
|
||||
dstream << "[PASS] "; \
|
||||
} catch (TestFailedException &e) { \
|
||||
dstream << "[FAIL] "; \
|
||||
num_tests_failed++; \
|
||||
} catch (std::exception &e) { \
|
||||
dstream << "Caught unhandled exception: " << e.what() << std::endl; \
|
||||
dstream << "[FAIL] "; \
|
||||
num_tests_failed++; \
|
||||
} \
|
||||
num_tests_run++; \
|
||||
u32 tdiff = porting::getTime(PRECISION_MILLI) - t1; \
|
||||
dstream << #fxn << " - " << tdiff << "ms" << std::endl; \
|
||||
#define TEST(fxn, ...) do { \
|
||||
u32 t1 = porting::getTime(PRECISION_MILLI); \
|
||||
try { \
|
||||
fxn(__VA_ARGS__); \
|
||||
rawstream << "[PASS] "; \
|
||||
} catch (TestFailedException &e) { \
|
||||
rawstream << "[FAIL] "; \
|
||||
num_tests_failed++; \
|
||||
} catch (std::exception &e) { \
|
||||
rawstream << "Caught unhandled exception: " << e.what() << std::endl; \
|
||||
rawstream << "[FAIL] "; \
|
||||
num_tests_failed++; \
|
||||
} \
|
||||
num_tests_run++; \
|
||||
u32 tdiff = porting::getTime(PRECISION_MILLI) - t1; \
|
||||
rawstream << #fxn << " - " << tdiff << "ms" << std::endl; \
|
||||
} while (0)
|
||||
|
||||
// Asserts the specified condition is true, or fails the current unit test
|
||||
#define UASSERT(x) do { \
|
||||
if (!(x)) { \
|
||||
dstream << "Test assertion failed: " #x << std::endl \
|
||||
<< " at " << fs::GetFilenameFromPath(__FILE__) \
|
||||
<< ":" << __LINE__ << std::endl; \
|
||||
throw TestFailedException(); \
|
||||
} \
|
||||
#define UASSERT(x) do { \
|
||||
if (!(x)) { \
|
||||
rawstream << "Test assertion failed: " #x << std::endl \
|
||||
<< " at " << fs::GetFilenameFromPath(__FILE__) \
|
||||
<< ":" << __LINE__ << std::endl; \
|
||||
throw TestFailedException(); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
// Asserts the specified condition is true, or fails the current unit test
|
||||
// and prints the format specifier fmt
|
||||
#define UTEST(x, fmt, ...) do { \
|
||||
if (!(x)) { \
|
||||
char utest_buf[1024]; \
|
||||
snprintf(utest_buf, sizeof(utest_buf), fmt, __VA_ARGS__); \
|
||||
dstream << "Test assertion failed: " << utest_buf << std::endl \
|
||||
<< " at " << fs::GetFilenameFromPath(__FILE__) \
|
||||
<< ":" << __LINE__ << std::endl; \
|
||||
throw TestFailedException(); \
|
||||
} \
|
||||
#define UTEST(x, fmt, ...) do { \
|
||||
if (!(x)) { \
|
||||
char utest_buf[1024]; \
|
||||
snprintf(utest_buf, sizeof(utest_buf), fmt, __VA_ARGS__); \
|
||||
rawstream << "Test assertion failed: " << utest_buf << std::endl \
|
||||
<< " at " << fs::GetFilenameFromPath(__FILE__) \
|
||||
<< ":" << __LINE__ << std::endl; \
|
||||
throw TestFailedException(); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
// Asserts the comparison specified by CMP is true, or fails the current unit test
|
||||
#define UASSERTCMP(T, CMP, actual, expected) do { \
|
||||
T a = (actual); \
|
||||
T e = (expected); \
|
||||
if (!(a CMP e)) { \
|
||||
dstream << "Test assertion failed: " << #actual << " " << #CMP << " " \
|
||||
<< #expected << std::endl \
|
||||
<< " at " << fs::GetFilenameFromPath(__FILE__) << ":" \
|
||||
<< __LINE__ << std::endl \
|
||||
<< " actual: " << a << std::endl << " expected: " \
|
||||
<< e << std::endl; \
|
||||
throw TestFailedException(); \
|
||||
} \
|
||||
#define UASSERTCMP(T, CMP, actual, expected) do { \
|
||||
T a = (actual); \
|
||||
T e = (expected); \
|
||||
if (!(a CMP e)) { \
|
||||
rawstream \
|
||||
<< "Test assertion failed: " << #actual << " " << #CMP << " " \
|
||||
<< #expected << std::endl \
|
||||
<< " at " << fs::GetFilenameFromPath(__FILE__) << ":" \
|
||||
<< __LINE__ << std::endl \
|
||||
<< " actual: " << a << std::endl << " expected: " \
|
||||
<< e << std::endl; \
|
||||
throw TestFailedException(); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define UASSERTEQ(T, actual, expected) UASSERTCMP(T, ==, actual, expected)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue