[Spice-devel] [PATCH spice-server v2 1/3] tests: Move some glib compatibility code to a separate file

Frediano Ziglio fziglio at redhat.com
Fri Mar 3 14:21:21 UTC 2017


Allow to reuse this code in other tests.

Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
 server/tests/Makefile.am        |   2 +
 server/tests/test-glib-compat.c | 112 ++++++++++++++++++++++++++++++++++++++++
 server/tests/test-glib-compat.h |  34 ++++++++++++
 server/tests/test-vdagent.c     |  92 +--------------------------------
 4 files changed, 149 insertions(+), 91 deletions(-)
 create mode 100644 server/tests/test-glib-compat.c
 create mode 100644 server/tests/test-glib-compat.h

diff --git a/server/tests/Makefile.am b/server/tests/Makefile.am
index dd04834..6983f6c 100644
--- a/server/tests/Makefile.am
+++ b/server/tests/Makefile.am
@@ -25,6 +25,8 @@ libtest_a_SOURCES =				\
 	basic-event-loop.h			\
 	test-display-base.c			\
 	test-display-base.h			\
+	test-glib-compat.c			\
+	test-glib-compat.h			\
 	$(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.
+ */
+
+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-glib-compat.h b/server/tests/test-glib-compat.h
new file mode 100644
index 0000000..23e094d
--- /dev/null
+++ b/server/tests/test-glib-compat.h
@@ -0,0 +1,34 @@
+/* -*- 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/>.
+*/
+#ifndef TEST_GLIB_COMPAT_H_
+#define TEST_GLIB_COMPAT_H_
+
+#include <glib.h>
+
+#include "glib-compat.h"
+
+#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
+
+#endif // TEST_GLIB_COMPAT_H_
diff --git a/server/tests/test-vdagent.c b/server/tests/test-vdagent.c
index a4d48ee..e1d8b82 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 "test-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



More information about the Spice-devel mailing list