mirror of
https://github.com/luanti-org/luanti.git
synced 2025-07-02 16:38:41 +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
|
@ -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