mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-06-10 14:50:08 +02:00
gtestutils: Bail out of g_test_init() if G_DISABLE_ASSERT is defined
If G_DISABLE_ASSERT is defined, g_assert() is a no-op. Despite it now being standard practice to *not* use g_assert() in unit tests (use g_assert_*() instead), a lot of existing unit tests still use it. Compiling those tests with G_DISABLE_ASSERT would make them silently no-ops. Avoid that by warning the user loudly. Note that it’s pretty rare for people to compile with G_DISABLE_ASSERT, so it’s not expected that this will be hit often. Signed-off-by: Philip Withnall <withnall@endlessm.com> https://gitlab.gnome.org/GNOME/glib/issues/976
This commit is contained in:
parent
51ce8d204c
commit
ca23acdb24
@ -1274,7 +1274,7 @@ parse_args (gint *argc_p,
|
|||||||
* Since: 2.16
|
* Since: 2.16
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
g_test_init (int *argc,
|
(g_test_init) (int *argc,
|
||||||
char ***argv,
|
char ***argv,
|
||||||
...)
|
...)
|
||||||
{
|
{
|
||||||
|
@ -147,6 +147,29 @@ GLIB_AVAILABLE_IN_ALL
|
|||||||
void g_test_init (int *argc,
|
void g_test_init (int *argc,
|
||||||
char ***argv,
|
char ***argv,
|
||||||
...) G_GNUC_NULL_TERMINATED;
|
...) G_GNUC_NULL_TERMINATED;
|
||||||
|
|
||||||
|
/* While we discourage its use, g_assert() is often used in unit tests
|
||||||
|
* (especially in legacy code). g_assert_*() should really be used instead.
|
||||||
|
* g_assert() can be disabled at client program compile time, which can render
|
||||||
|
* tests useless. Highlight that to the user. */
|
||||||
|
#ifdef G_DISABLE_ASSERT
|
||||||
|
#if defined(G_HAVE_ISO_VARARGS)
|
||||||
|
#define g_test_init(argc, argv, ...) \
|
||||||
|
G_STMT_START { \
|
||||||
|
g_printerr ("Tests were compiled with G_DISABLE_ASSERT and are likely no-ops. Aborting.\n"); \
|
||||||
|
exit (1); \
|
||||||
|
} G_STMT_END
|
||||||
|
#elif defined(G_HAVE_GNUC_VARARGS)
|
||||||
|
#define g_test_init(argc, argv...) \
|
||||||
|
G_STMT_START { \
|
||||||
|
g_printerr ("Tests were compiled with G_DISABLE_ASSERT and are likely no-ops. Aborting.\n"); \
|
||||||
|
exit (1); \
|
||||||
|
} G_STMT_END
|
||||||
|
#else /* no varargs */
|
||||||
|
/* do nothing */
|
||||||
|
#endif /* varargs support */
|
||||||
|
#endif /* G_DISABLE_ASSERT */
|
||||||
|
|
||||||
/* query testing framework config */
|
/* query testing framework config */
|
||||||
#define g_test_initialized() (g_test_config_vars->test_initialized)
|
#define g_test_initialized() (g_test_config_vars->test_initialized)
|
||||||
#define g_test_quick() (g_test_config_vars->test_quick)
|
#define g_test_quick() (g_test_config_vars->test_quick)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user