From 236f7ab07cbeba069fd739f7353458c11b9faac1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sun, 29 Jun 2025 22:57:08 +0200 Subject: [PATCH] tests: cast to intmax_t instead of printing to a temp buffer We can do this for int types, i.e. the variants where we expect a success/error code. The macros which do generating comparison operations also support floats so we shouldn't use intmax_t there. The code is shorter and calling printf once is certainly more efficient. --- src/shared/tests.h | 36 ++++++++++++------------------------ 1 file changed, 12 insertions(+), 24 deletions(-) diff --git a/src/shared/tests.h b/src/shared/tests.h index 8ae09fc4ebb..7641b446b0a 100644 --- a/src/shared/tests.h +++ b/src/shared/tests.h @@ -203,11 +203,9 @@ _noreturn_ void log_test_failed_internal(const char *file, int line, const char typeof(expr) _result = (expr); \ if (_result < 0) \ log_test_failed("Expected \"%s\" to succeed, but got error: %s", #expr, STRERROR(_result)); \ - if (_result != 0) { \ - char _sexpr[DECIMAL_STR_MAX(typeof(expr))]; \ - xsprintf(_sexpr, DECIMAL_STR_FMT(_result), _result); \ - log_test_failed("Expected \"%s\" to be zero, but it is %s.", #expr, _sexpr); \ - } \ + if (_result != 0) \ + log_test_failed("Expected \"%s\" to be zero, but it is %"PRIiMAX".", \ + #expr, (intmax_t) _result); \ }) #endif @@ -220,13 +218,9 @@ _noreturn_ void log_test_failed_internal(const char *file, int line, const char typeof(expr2) _expr2 = (expr2); \ if (_expr1 < 0) \ log_test_failed("Expected \"%s\" to succeed, but got error: %s", #expr1, STRERROR(_expr1)); \ - 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_test_failed("Expected \"%s == %s\", got %s != %s", #expr1, #expr2, _sexpr1, _sexpr2); \ - } \ + if (_expr1 != _expr2) \ + log_test_failed("Expected \"%s == %s\", got %"PRIiMAX" != %"PRIiMAX, \ + #expr1, #expr2, (intmax_t) _expr1, (intmax_t) _expr2); \ }) #endif @@ -249,11 +243,9 @@ _noreturn_ void log_test_failed_internal(const char *file, int line, const char typeof(expr) _result = (expr); \ if (_result < 0) \ log_test_failed("Expected \"%s\" to succeed, but got error: %s", #expr, STRERROR(errno)); \ - if (_result != 0) { \ - char _sexpr[DECIMAL_STR_MAX(typeof(expr))]; \ - xsprintf(_sexpr, DECIMAL_STR_FMT(_result), _result); \ - log_test_failed("Expected \"%s\" to be zero, but it is %s.", #expr, _sexpr); \ - } \ + if (_result != 0) \ + log_test_failed("Expected \"%s\" to be zero, but it is %"PRIiMAX".", \ + #expr, (intmax_t) _result); \ }) #endif @@ -266,13 +258,9 @@ _noreturn_ void log_test_failed_internal(const char *file, int line, const char typeof(expr2) _expr2 = (expr2); \ if (_expr1 < 0) \ log_test_failed("Expected \"%s\" to succeed, but got error: %s", #expr1, STRERROR(errno)); \ - 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_test_failed("Expected \"%s == %s\", but %s != %s", #expr1, #expr2, _sexpr1, _sexpr2); \ - } \ + if (_expr1 != _expr2) \ + log_test_failed("Expected \"%s == %s\", but %"PRIiMAX" != %"PRIiMAX, \ + #expr1, #expr2, (intmax_t) _expr1, (intmax_t) _expr2); \ }) #endif -- 2.47.3