On Thu, Mar 02, 2017 at 01:50:01PM +0000, Frediano Ziglio wrote: > Allow to reuse this code in other tests. > > Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> > --- > server/glib-compat.h | 9 ++++ > server/tests/Makefile.am | 1 + > server/tests/test-glib-compat.c | 112 ++++++++++++++++++++++++++++++++++++++++ > server/tests/test-vdagent.c | 92 +-------------------------------- > 4 files changed, 123 insertions(+), 91 deletions(-) > create mode 100644 server/tests/test-glib-compat.c > > diff --git a/server/glib-compat.h b/server/glib-compat.h > index 50a0783..9d75701 100644 > --- a/server/glib-compat.h > +++ b/server/glib-compat.h > @@ -63,4 +63,13 @@ g_queue_remove_boolean(GQueue *queue, gconstpointer data) > #define g_queue_remove g_queue_remove_boolean > #endif > > +#if !GLIB_CHECK_VERSION(2, 34, 0) > +void g_test_assert_expected_messages_internal(const char *domain, > + const char *file, int line, const char *func); > +#define g_test_assert_expected_messages() \ > + g_test_assert_expected_messages_internal (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC) > +void g_test_expect_message(const gchar *log_domain, GLogLevelFlags log_level, > + const gchar *pattern); > +#endif > + This belongs to a new tests/test-glib-compat.h (using these fallback implementations is going to fail at link time if not built together with test-glib-compat.c) > #endif /* GLIB_COMPAT_H_ */ > diff --git a/server/tests/Makefile.am b/server/tests/Makefile.am > index dd04834..ca70e22 100644 > --- a/server/tests/Makefile.am > +++ b/server/tests/Makefile.am > @@ -25,6 +25,7 @@ libtest_a_SOURCES = \ > basic-event-loop.h \ > test-display-base.c \ > test-display-base.h \ > + test-glib-compat.c \ > $(NULL) > > LDADD = \ > diff --git a/server/tests/test-glib-compat.c b/server/tests/test-glib-compat.c > new file mode 100644 > index 0000000..9b47dc6 > --- /dev/null > +++ b/server/tests/test-glib-compat.c > @@ -0,0 +1,112 @@ > +/* -*- Mode: C; c-basic-offset: 4; indent-tabs-mode: nil -*- */ > +/* > + Copyright (C) 2017 Red Hat, Inc. > + > + This library is free software; you can redistribute it and/or > + modify it under the terms of the GNU Lesser General Public > + License as published by the Free Software Foundation; either > + version 2.1 of the License, or (at your option) any later version. > + > + This library is distributed in the hope that it will be useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + Lesser General Public License for more details. > + > + You should have received a copy of the GNU Lesser General Public > + License along with this library; if not, see <http://www.gnu.org/licenses/>. > +*/ > + > +#include <config.h> > + > +#include "glib-compat.h" > + > +#if !GLIB_CHECK_VERSION(2, 34, 0) > + > +/* The code in this #ifdef block is taken from glib and is licensed under the > + * GNU Lesser General Public License version 2 or later. > + * > + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald > + * Modified by the GLib Team and others 1997-2000. See GLib AUTHORS > + * file for a list of people on the GLib Team. Since it's in its own file now, maybe move that to the copyright block? Acked-by: Christophe Fergeau <cfergeau@xxxxxxxxxx> Christophe > + */ > + > +typedef struct { > + gchar *log_domain; > + GLogLevelFlags log_level; > + gchar *pattern; > +} GTestExpectedMessage; > + > +static GSList *expected_messages = NULL; > + > +static gboolean fatal_log_filter(const gchar *log_domain, > + GLogLevelFlags log_level, > + const gchar *msg, > + gpointer user_data) > +{ > + GTestExpectedMessage *expected = expected_messages->data; > + > + if ((g_strcmp0(expected->log_domain, log_domain) == 0) > + && ((log_level & expected->log_level) == expected->log_level) > + && (g_pattern_match_simple(expected->pattern, msg))) { > + expected_messages = g_slist_delete_link(expected_messages, > + expected_messages); > + g_free (expected->log_domain); > + g_free (expected->pattern); > + g_free (expected); > + > + return FALSE; > + } > + return TRUE; > +} > + > +void > +g_test_assert_expected_messages_internal (const char *domain, > + const char *file, > + int line, > + const char *func) > +{ > + if (expected_messages) > + { > + GTestExpectedMessage *expected; > + gchar *message; > + > + expected = expected_messages->data; > + > + message = g_strdup_printf ("Did not see expected message %s: %s", > + expected->log_domain ? expected->log_domain : "**", > + expected->pattern); > + g_error ("%s", message); > + g_free (message); > + } > +} > + > +#define g_test_assert_expected_messages() g_test_assert_expected_messages_internal (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC) > + > +void > +g_test_expect_message (const gchar *log_domain, > + GLogLevelFlags log_level, > + const gchar *pattern) > +{ > + GTestExpectedMessage *expected; > + > + g_return_if_fail (log_level != 0); > + g_return_if_fail (pattern != NULL); > + g_return_if_fail (~log_level & G_LOG_LEVEL_ERROR); > + > + if (expected_messages == NULL) > + { > + g_test_log_set_fatal_handler(fatal_log_filter, NULL); > + } > + > + expected = g_new (GTestExpectedMessage, 1); > + expected->log_domain = g_strdup (log_domain); > + expected->log_level = log_level; > + expected->pattern = g_strdup (pattern); > + > + if ((log_level & G_LOG_LEVEL_MASK) <= G_LOG_LEVEL_WARNING) > + { > + expected_messages = g_slist_append (expected_messages, expected); > + } > +} > + > +#endif /* GLIB_CHECK_VERSION(2, 34, 0) */ > diff --git a/server/tests/test-vdagent.c b/server/tests/test-vdagent.c > index a4d48ee..e19ca9c 100644 > --- a/server/tests/test-vdagent.c > +++ b/server/tests/test-vdagent.c > @@ -27,6 +27,7 @@ > #include <spice/vd_agent.h> > > #include "test-display-base.h" > +#include "glib-compat.h" > > SpiceCoreInterface *core; > SpiceTimer *ping_timer; > @@ -37,97 +38,6 @@ int ping_ms = 100; > #define MIN(a, b) ((a) > (b) ? (b) : (a)) > #endif > > -#if !GLIB_CHECK_VERSION(2, 34, 0) > - > -/* The code in this #ifdef block is taken from glib and is licensed under the > - * GNU Lesser General Public License version 2 or later. > - * > - * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald > - * Modified by the GLib Team and others 1997-2000. See GLib AUTHORS > - * file for a list of people on the GLib Team. > - */ > - > -typedef struct { > - gchar *log_domain; > - GLogLevelFlags log_level; > - gchar *pattern; > -} GTestExpectedMessage; > - > -static GSList *expected_messages = NULL; > - > -static gboolean fatal_log_filter(const gchar *log_domain, > - GLogLevelFlags log_level, > - const gchar *msg, > - gpointer user_data) > -{ > - GTestExpectedMessage *expected = expected_messages->data; > - > - if ((g_strcmp0(expected->log_domain, log_domain) == 0) > - && ((log_level & expected->log_level) == expected->log_level) > - && (g_pattern_match_simple(expected->pattern, msg))) { > - expected_messages = g_slist_delete_link(expected_messages, > - expected_messages); > - g_free (expected->log_domain); > - g_free (expected->pattern); > - g_free (expected); > - > - return FALSE; > - } > - return TRUE; > -} > - > -static void > -g_test_assert_expected_messages_internal (const char *domain, > - const char *file, > - int line, > - const char *func) > -{ > - if (expected_messages) > - { > - GTestExpectedMessage *expected; > - gchar *message; > - > - expected = expected_messages->data; > - > - message = g_strdup_printf ("Did not see expected message %s: %s", > - expected->log_domain ? expected->log_domain : "**", > - expected->pattern); > - g_error ("%s", message); > - g_free (message); > - } > -} > - > -#define g_test_assert_expected_messages() g_test_assert_expected_messages_internal (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC) > - > -static void > -g_test_expect_message (const gchar *log_domain, > - GLogLevelFlags log_level, > - const gchar *pattern) > -{ > - GTestExpectedMessage *expected; > - > - g_return_if_fail (log_level != 0); > - g_return_if_fail (pattern != NULL); > - g_return_if_fail (~log_level & G_LOG_LEVEL_ERROR); > - > - if (expected_messages == NULL) > - { > - g_test_log_set_fatal_handler(fatal_log_filter, NULL); > - } > - > - expected = g_new (GTestExpectedMessage, 1); > - expected->log_domain = g_strdup (log_domain); > - expected->log_level = log_level; > - expected->pattern = g_strdup (pattern); > - > - if ((log_level & G_LOG_LEVEL_MASK) <= G_LOG_LEVEL_WARNING) > - { > - expected_messages = g_slist_append (expected_messages, expected); > - } > -} > - > -#endif /* GLIB_CHECK_VERSION(2, 34, 0) */ > - > > static int vmc_write(SPICE_GNUC_UNUSED SpiceCharDeviceInstance *sin, > SPICE_GNUC_UNUSED const uint8_t *buf, > -- > 2.9.3 > > _______________________________________________ > Spice-devel mailing list > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/spice-devel
Attachment:
signature.asc
Description: PGP signature
_______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel