[Spice-devel] [PATCH spice-server 1/3] tests: Move some glib compatibility code to a separate file
Christophe Fergeau
cfergeau at redhat.com
Thu Mar 2 14:22:34 UTC 2017
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 at redhat.com>
> ---
> 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 at redhat.com>
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 at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20170302/70d7f5b1/attachment-0001.sig>
More information about the Spice-devel
mailing list