Add ASSERT_OK_ZERO_ERRNO() and ASSERT_OK_EQ_ERRNO()
This commit is contained in:
@@ -281,6 +281,44 @@ static inline int run_test_table(void) {
|
||||
} \
|
||||
})
|
||||
|
||||
#define ASSERT_OK_ZERO_ERRNO(expr) \
|
||||
({ \
|
||||
typeof(expr) _result = (expr); \
|
||||
if (_result < 0) { \
|
||||
log_error_errno(errno, "%s:%i: Assertion failed: expected \"%s\" to succeed but got the following error: %m", \
|
||||
PROJECT_FILE, __LINE__, #expr); \
|
||||
abort(); \
|
||||
} \
|
||||
if (_result != 0) { \
|
||||
char _sexpr[DECIMAL_STR_MAX(typeof(expr))]; \
|
||||
xsprintf(_sexpr, DECIMAL_STR_FMT(_result), _result); \
|
||||
log_error("%s:%i: Assertion failed: expected \"%s\" to be zero, but it is %s.", \
|
||||
PROJECT_FILE, __LINE__, #expr, _sexpr); \
|
||||
abort(); \
|
||||
} \
|
||||
})
|
||||
|
||||
#define ASSERT_OK_EQ_ERRNO(expr1, expr2) \
|
||||
({ \
|
||||
typeof(expr1) _expr1 = (expr1); \
|
||||
typeof(expr2) _expr2 = (expr2); \
|
||||
if (_expr1 < 0) { \
|
||||
log_error_errno(errno, "%s:%i: Assertion failed: expected \"%s\" to succeed but got the following error: %m", \
|
||||
PROJECT_FILE, __LINE__, #expr1); \
|
||||
abort(); \
|
||||
} \
|
||||
if (_expr1 != _expr2) { \
|
||||
char _sexpr1[DECIMAL_STR_MAX(typeof(expr1))]; \
|
||||
char _sexpr2[DECIMAL_STR_MAX(typeof(expr2))]; \
|
||||
xsprintf(_sexpr1, DECIMAL_STR_FMT(_expr1), _expr1); \
|
||||
xsprintf(_sexpr2, DECIMAL_STR_FMT(_expr2), _expr2); \
|
||||
log_error("%s:%i: Assertion failed: expected \"%s == %s\", but %s != %s", \
|
||||
PROJECT_FILE, __LINE__, #expr1, #expr2, _sexpr1, _sexpr2); \
|
||||
abort(); \
|
||||
} \
|
||||
})
|
||||
|
||||
|
||||
#define ASSERT_FAIL(expr) \
|
||||
({ \
|
||||
typeof(expr) _result = (expr); \
|
||||
|
||||
@@ -1141,6 +1141,18 @@ TEST(ASSERT) {
|
||||
ASSERT_SIGNAL(ASSERT_OK_ERRNO(-1), SIGABRT);
|
||||
ASSERT_SIGNAL(ASSERT_OK_ERRNO(-ENOANO), SIGABRT);
|
||||
|
||||
ASSERT_OK_ZERO_ERRNO(0);
|
||||
ASSERT_SIGNAL(ASSERT_OK_ZERO_ERRNO(1), SIGABRT);
|
||||
ASSERT_SIGNAL(ASSERT_OK_ZERO_ERRNO(255), SIGABRT);
|
||||
ASSERT_SIGNAL(ASSERT_OK_ZERO_ERRNO(-1), SIGABRT);
|
||||
ASSERT_SIGNAL(ASSERT_OK_ZERO_ERRNO(-ENOANO), SIGABRT);
|
||||
|
||||
ASSERT_OK_EQ_ERRNO(0, 0);
|
||||
ASSERT_SIGNAL(ASSERT_OK_EQ_ERRNO(1, 0), SIGABRT);
|
||||
ASSERT_SIGNAL(ASSERT_OK_EQ_ERRNO(255, 5), SIGABRT);
|
||||
ASSERT_SIGNAL(ASSERT_OK_EQ_ERRNO(-1, 0), SIGABRT);
|
||||
ASSERT_SIGNAL(ASSERT_OK_EQ_ERRNO(-ENOANO, 0), SIGABRT);
|
||||
|
||||
ASSERT_FAIL(-ENOENT);
|
||||
ASSERT_FAIL(-EPERM);
|
||||
ASSERT_SIGNAL(ASSERT_FAIL(0), SIGABRT);
|
||||
|
||||
Reference in New Issue
Block a user