From 35cecd32fd9c27f67d3151247692d0d38185f149 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 24 Oct 2018 11:51:57 +0200 Subject: core/tests: allow temporarily suppressing logging during tests Often, during tests we want to assert against the logged messages. In fact, most tests enable assertions for all logging and enforce them with g_test_assert_expected_messages(). So, this is common. However, sometimes it can be cumbersome to understand which logging lines will be produced. For example, the next commits will call nm_dhcp_manager_get() during the tests, which initializes NMDhcpManager and logs a message which plugin was selected (or an additional warning, if the selected plugin was not found). The availability of the DHCP plugin depends on searching the path for "/usr/bin/dhclient", so from testing code it's hard to determine what will be logged. Instead, add a way to temporarily disable logging during testing. --- shared/nm-utils/nm-test-utils.h | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/shared/nm-utils/nm-test-utils.h b/shared/nm-utils/nm-test-utils.h index 4a329f1534..18b42888e8 100644 --- a/shared/nm-utils/nm-test-utils.h +++ b/shared/nm-utils/nm-test-utils.h @@ -1347,6 +1347,42 @@ _nmtst_assert_resolve_relative_path_equals (const char *f1, const char *f2, cons /*****************************************************************************/ +#ifdef __NETWORKMANAGER_LOGGING_H__ +static inline gpointer +nmtst_logging_disable (gboolean always) +{ + gpointer p; + + g_assert (nmtst_initialized ()); + if (!always && __nmtst_internal.no_expect_message) { + /* The caller does not want to @always suppress logging. Instead, + * the caller wants to suppress unexpected log messages that would + * fail assertions (since we possibly assert against all unexpected + * log messages). + * + * If the test is run with no-expect-message, then don't suppress + * the loggings, because they also wouldn't fail assertions. */ + return NULL; + } + + p = g_memdup (_nm_logging_enabled_state, sizeof (_nm_logging_enabled_state)); + memset (_nm_logging_enabled_state, 0, sizeof (_nm_logging_enabled_state)); + return p; +} + +static inline void +nmtst_logging_reenable (gpointer old_state) +{ + g_assert (nmtst_initialized ()); + if (old_state) { + memcpy (_nm_logging_enabled_state, old_state, sizeof (_nm_logging_enabled_state)); + g_free (old_state); + } +} +#endif + +/*****************************************************************************/ + #ifdef NM_SETTING_IP_CONFIG_H static inline void nmtst_setting_ip_config_add_address (NMSettingIPConfig *s_ip, -- cgit v1.2.1