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.

(cherry picked from commit 35cecd32fd)
This commit is contained in:
Thomas Haller 2018-10-24 11:51:57 +02:00
parent 9672ea128e
commit e2d777ff13

View file

@ -1337,6 +1337,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,