From 3d9302b6f95e3bb0f00695faf8c575440c685840 Mon Sep 17 00:00:00 2001 From: Craig Barnes Date: Tue, 25 May 2021 18:38:16 +0100 Subject: [PATCH] macros: add UNITTEST macro and use to replace test_keymap_lookup() --- input.c | 5 +---- macros.h | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/input.c b/input.c index 7c1004f9..96c41a15 100644 --- a/input.c +++ b/input.c @@ -884,9 +884,7 @@ keymap_lookup(struct terminal *term, xkb_keysym_t sym, enum modifier mods) return NULL; } -#if defined(_DEBUG) -static void __attribute__((constructor)) -test_keymap_lookup(void) +UNITTEST { struct terminal term = { .num_lock_modifier = false, @@ -897,7 +895,6 @@ test_keymap_lookup(void) const struct key_data *info = keymap_lookup(&term, XKB_KEY_ISO_Left_Tab, MOD_SHIFT | MOD_CTRL); xassert(strcmp(info->seq, "\033[27;6;9~") == 0); } -#endif static void key_press_release(struct seat *seat, struct terminal *term, uint32_t serial, diff --git a/macros.h b/macros.h index 52c24e0e..7cfe777e 100644 --- a/macros.h +++ b/macros.h @@ -1,5 +1,7 @@ #pragma once +#define PASTE(a, b) a##b +#define XPASTE(a, b) PASTE(a, b) #define DO_PRAGMA(x) _Pragma(#x) #define VERCMP(x, y, cx, cy) ((cx > x) || ((cx == x) && (cy >= y))) @@ -68,6 +70,7 @@ #if GNUC_AT_LEAST(3, 0) || HAS_ATTRIBUTE(constructor) #define CONSTRUCTOR __attribute__((__constructor__)) + #define HAVE_ATTR_CONSTRUCTOR 1 #else #define CONSTRUCTOR #endif @@ -175,6 +178,19 @@ #define UNROLL_LOOP(n) #endif +#ifdef __COUNTER__ + // Supported by GCC 4.3+ and Clang + #define COUNTER_ __COUNTER__ +#else + #define COUNTER_ __LINE__ +#endif + +#if defined(_DEBUG) && defined(HAVE_ATTR_CONSTRUCTOR) + #define UNITTEST static void CONSTRUCTOR XPASTE(unittest_, COUNTER_)(void) +#else + #define UNITTEST static void UNUSED XPASTE(unittest_, COUNTER_)(void) +#endif + #ifdef __clang__ #define IGNORE_WARNING(wflag) \ DO_PRAGMA(clang diagnostic push) \