> > 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) > Mumble... not easy to understand but I got it. > > > #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? > I don't know, maybe we'll need to add other copyright notes... > 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, Sending a new version (testing on RHEL6) Frediano _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel