]> git.ipfire.org Git - thirdparty/dbus.git/commitdiff
tests: Move address test out of libdbus
authorSimon McVittie <smcv@collabora.com>
Wed, 3 Jul 2019 09:47:21 +0000 (10:47 +0100)
committerSimon McVittie <smcv@collabora.com>
Wed, 3 Jul 2019 10:19:19 +0000 (11:19 +0100)
Signed-off-by: Simon McVittie <smcv@collabora.com>
dbus/dbus-address.c
dbus/dbus-test.h
test/CMakeLists.txt
test/Makefile.am
test/internals/address.c [new file with mode: 0644]
test/internals/misc-internals.h

index 7eb1b1bff90424990c154265a068de42af6fdd7b..0eafdb2a2e81f8aba5c7422683548ac5244d401f 100644 (file)
@@ -2,7 +2,9 @@
 /* dbus-address.c  Server address parser.
  *
  * Copyright (C) 2003  CodeFactory AB
- * Copyright (C) 2004,2005  Red Hat, Inc.
+ * Copyright (C) 2004-2007  Red Hat, Inc.
+ * Copyright (C) 2007  Ralf Habacker
+ * Copyright (C) 2013  Chengwei Yang / Intel
  *
  * Licensed under the Academic Free License version 2.1
  *
@@ -648,182 +650,3 @@ dbus_address_unescape_value (const char *value,
 }
 
 /** @} */ /* End of public API */
-
-#ifdef DBUS_ENABLE_EMBEDDED_TESTS
-
-#ifndef DOXYGEN_SHOULD_SKIP_THIS
-
-#include "dbus-test.h"
-#include <stdlib.h>
-
-typedef struct
-{
-  const char *escaped;
-  const char *unescaped;
-} EscapeTest;
-
-static const EscapeTest escape_tests[] = {
-  { "abcde", "abcde" },
-  { "", "" },
-  { "%20%20", "  " },
-  { "%24", "$" },
-  { "%25", "%" },
-  { "abc%24", "abc$" },
-  { "%24abc", "$abc" },
-  { "abc%24abc", "abc$abc" },
-  { "/", "/" },
-  { "-", "-" },
-  { "_", "_" },
-  { "A", "A" },
-  { "I", "I" },
-  { "Z", "Z" },
-  { "a", "a" },
-  { "i", "i" },
-  { "z", "z" },
-  /* Bug: https://bugs.freedesktop.org/show_bug.cgi?id=53499 */
-  { "%c3%b6", "\xc3\xb6" }
-};
-
-static const char* invalid_escaped_values[] = {
-  "%a",
-  "%q",
-  "%az",
-  "%%",
-  "%$$",
-  "abc%a",
-  "%axyz",
-  "%",
-  "$",
-  " ",
-};
-
-dbus_bool_t
-_dbus_address_test (const char *test_data_dir _DBUS_GNUC_UNUSED)
-{
-  DBusAddressEntry **entries;
-  int len;
-  DBusError error = DBUS_ERROR_INIT;
-  int i;
-
-  i = 0;
-  while (i < _DBUS_N_ELEMENTS (escape_tests))
-    {
-      const EscapeTest *test = &escape_tests[i];
-      char *escaped;
-      char *unescaped;
-
-      escaped = dbus_address_escape_value (test->unescaped);
-      if (escaped == NULL)
-        _dbus_test_fatal ("oom");
-
-      if (strcmp (escaped, test->escaped) != 0)
-        {
-          _dbus_warn ("Escaped '%s' as '%s' should have been '%s'",
-                      test->unescaped, escaped, test->escaped);
-          exit (1);
-        }
-      dbus_free (escaped);
-
-      unescaped = dbus_address_unescape_value (test->escaped, &error);
-      if (unescaped == NULL)
-        {
-          _dbus_warn ("Failed to unescape '%s': %s",
-                      test->escaped, error.message);
-          dbus_error_free (&error);
-          exit (1);
-        }
-
-      if (strcmp (unescaped, test->unescaped) != 0)
-        {
-          _dbus_warn ("Unescaped '%s' as '%s' should have been '%s'",
-                      test->escaped, unescaped, test->unescaped);
-          exit (1);
-        }
-      dbus_free (unescaped);
-      
-      ++i;
-    }
-
-  i = 0;
-  while (i < _DBUS_N_ELEMENTS (invalid_escaped_values))
-    {
-      char *unescaped;
-
-      unescaped = dbus_address_unescape_value (invalid_escaped_values[i],
-                                               &error);
-      if (unescaped != NULL)
-        {
-          _dbus_warn ("Should not have successfully unescaped '%s' to '%s'",
-                      invalid_escaped_values[i], unescaped);
-          dbus_free (unescaped);
-          exit (1);
-        }
-
-      _dbus_assert (dbus_error_is_set (&error));
-      dbus_error_free (&error);
-
-      ++i;
-    }
-  
-  if (!dbus_parse_address ("unix:path=/tmp/foo;debug:name=test,sliff=sloff;",
-                          &entries, &len, &error))
-    _dbus_test_fatal ("could not parse address");
-  _dbus_assert (len == 2);
-  _dbus_assert (strcmp (dbus_address_entry_get_value (entries[0], "path"), "/tmp/foo") == 0);
-  _dbus_assert (strcmp (dbus_address_entry_get_value (entries[1], "name"), "test") == 0);
-  _dbus_assert (strcmp (dbus_address_entry_get_value (entries[1], "sliff"), "sloff") == 0);
-  
-  dbus_address_entries_free (entries);
-
-  /* Different possible errors */
-  if (dbus_parse_address ("", &entries, &len, &error))
-    _dbus_test_fatal ("Parsed incorrect address.");
-  else
-    dbus_error_free (&error);
-
-  if (dbus_parse_address ("foo", &entries, &len, &error))
-    _dbus_test_fatal ("Parsed incorrect address.");
-  else
-    dbus_error_free (&error);
-  
-  if (dbus_parse_address ("foo:bar", &entries, &len, &error))
-    _dbus_test_fatal ("Parsed incorrect address.");
-  else
-    dbus_error_free (&error);
-  
-  if (dbus_parse_address ("foo:bar,baz", &entries, &len, &error))
-    _dbus_test_fatal ("Parsed incorrect address.");
-  else
-    dbus_error_free (&error);
-  
-  if (dbus_parse_address ("foo:bar=foo,baz", &entries, &len, &error))
-    _dbus_test_fatal ("Parsed incorrect address.");
-  else
-    dbus_error_free (&error);
-  
-  if (dbus_parse_address ("foo:bar=foo;baz", &entries, &len, &error))
-    _dbus_test_fatal ("Parsed incorrect address.");
-  else
-    dbus_error_free (&error);
-  
-  if (dbus_parse_address ("foo:=foo", &entries, &len, &error))
-    _dbus_test_fatal ("Parsed incorrect address.");
-  else
-    dbus_error_free (&error);
-  
-  if (dbus_parse_address ("foo:foo=", &entries, &len, &error))
-    _dbus_test_fatal ("Parsed incorrect address.");
-  else
-    dbus_error_free (&error);
-
-  if (dbus_parse_address ("foo:foo,bar=baz", &entries, &len, &error))
-    _dbus_test_fatal ("Parsed incorrect address.");
-  else
-    dbus_error_free (&error);
-
-  return TRUE;
-}
-
-#endif /* !DOXYGEN_SHOULD_SKIP_THIS */
-
-#endif
index 804b5a705bb04b56db5a49129e034c9404fc4116..e3d4645e73e23768c0a56e7dff6740d47e90c0e8 100644 (file)
@@ -43,9 +43,6 @@ dbus_bool_t _dbus_marshal_test           (const char *test_data_dir);
 DBUS_PRIVATE_EXPORT
 dbus_bool_t _dbus_mem_pool_test          (const char *test_data_dir);
 
-DBUS_PRIVATE_EXPORT
-dbus_bool_t _dbus_address_test           (const char *test_data_dir);
-
 DBUS_PRIVATE_EXPORT
 dbus_bool_t _dbus_keyring_test           (const char *test_data_dir);
 
index 554500485a3d89c52f9ae36337c87e60c40fec52..83b161ba58eea75a9695c880a437f8814fb88b87 100644 (file)
@@ -116,6 +116,7 @@ if(DBUS_ENABLE_EMBEDDED_TESTS)
     set_target_properties(test-message-internals PROPERTIES COMPILE_FLAGS ${DBUS_INTERNAL_CLIENT_DEFINITIONS})
 
     set(SOURCES
+        internals/address.c
         internals/dbus-auth-script.c
         internals/dbus-auth-script.h
         internals/dbus-auth-util.c
index e29c954e5e30effb21b504b17d1f4c077b4fb7d8..2819c5f9ee23591c6b64e556f9e01fed24d34b0f 100644 (file)
@@ -237,6 +237,7 @@ test_message_internals_SOURCES = \
 test_message_internals_LDADD = libdbus-testutils.la
 
 test_misc_internals_SOURCES = \
+       internals/address.c \
        internals/dbus-auth-script.c \
        internals/dbus-auth-script.h \
        internals/dbus-auth-util.c \
diff --git a/test/internals/address.c b/test/internals/address.c
new file mode 100644 (file)
index 0000000..dbc8bca
--- /dev/null
@@ -0,0 +1,203 @@
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
+/* dbus-address.c  Server address parser.
+ *
+ * Copyright (C) 2003  CodeFactory AB
+ * Copyright (C) 2004-2006  Red Hat, Inc.
+ * Copyright (C) 2007  Ralf Habacker
+ * Copyright (C) 2013  Chengwei Yang / Intel
+ *
+ * Licensed under the Academic Free License version 2.1
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ */
+
+#include <config.h>
+#include "misc-internals.h"
+
+#include <stdlib.h>
+#include <string.h>
+
+#include <dbus/dbus.h>
+#include "dbus/dbus-internals.h"
+#include "dbus/dbus-test-tap.h"
+
+typedef struct
+{
+  const char *escaped;
+  const char *unescaped;
+} EscapeTest;
+
+static const EscapeTest escape_tests[] = {
+  { "abcde", "abcde" },
+  { "", "" },
+  { "%20%20", "  " },
+  { "%24", "$" },
+  { "%25", "%" },
+  { "abc%24", "abc$" },
+  { "%24abc", "$abc" },
+  { "abc%24abc", "abc$abc" },
+  { "/", "/" },
+  { "-", "-" },
+  { "_", "_" },
+  { "A", "A" },
+  { "I", "I" },
+  { "Z", "Z" },
+  { "a", "a" },
+  { "i", "i" },
+  { "z", "z" },
+  /* Bug: https://bugs.freedesktop.org/show_bug.cgi?id=53499 */
+  { "%c3%b6", "\xc3\xb6" }
+};
+
+static const char* invalid_escaped_values[] = {
+  "%a",
+  "%q",
+  "%az",
+  "%%",
+  "%$$",
+  "abc%a",
+  "%axyz",
+  "%",
+  "$",
+  " ",
+};
+
+dbus_bool_t
+_dbus_address_test (const char *test_data_dir _DBUS_GNUC_UNUSED)
+{
+  DBusAddressEntry **entries;
+  int len;
+  DBusError error = DBUS_ERROR_INIT;
+  int i;
+
+  i = 0;
+  while (i < _DBUS_N_ELEMENTS (escape_tests))
+    {
+      const EscapeTest *test = &escape_tests[i];
+      char *escaped;
+      char *unescaped;
+
+      escaped = dbus_address_escape_value (test->unescaped);
+      if (escaped == NULL)
+        _dbus_test_fatal ("oom");
+
+      if (strcmp (escaped, test->escaped) != 0)
+        {
+          _dbus_warn ("Escaped '%s' as '%s' should have been '%s'",
+                      test->unescaped, escaped, test->escaped);
+          exit (1);
+        }
+      dbus_free (escaped);
+
+      unescaped = dbus_address_unescape_value (test->escaped, &error);
+      if (unescaped == NULL)
+        {
+          _dbus_warn ("Failed to unescape '%s': %s",
+                      test->escaped, error.message);
+          dbus_error_free (&error);
+          exit (1);
+        }
+
+      if (strcmp (unescaped, test->unescaped) != 0)
+        {
+          _dbus_warn ("Unescaped '%s' as '%s' should have been '%s'",
+                      test->escaped, unescaped, test->unescaped);
+          exit (1);
+        }
+      dbus_free (unescaped);
+
+      ++i;
+    }
+
+  i = 0;
+  while (i < _DBUS_N_ELEMENTS (invalid_escaped_values))
+    {
+      char *unescaped;
+
+      unescaped = dbus_address_unescape_value (invalid_escaped_values[i],
+                                               &error);
+      if (unescaped != NULL)
+        {
+          _dbus_warn ("Should not have successfully unescaped '%s' to '%s'",
+                      invalid_escaped_values[i], unescaped);
+          dbus_free (unescaped);
+          exit (1);
+        }
+
+      _dbus_assert (dbus_error_is_set (&error));
+      dbus_error_free (&error);
+
+      ++i;
+    }
+
+  if (!dbus_parse_address ("unix:path=/tmp/foo;debug:name=test,sliff=sloff;",
+                          &entries, &len, &error))
+    _dbus_test_fatal ("could not parse address");
+  _dbus_assert (len == 2);
+  _dbus_assert (strcmp (dbus_address_entry_get_value (entries[0], "path"), "/tmp/foo") == 0);
+  _dbus_assert (strcmp (dbus_address_entry_get_value (entries[1], "name"), "test") == 0);
+  _dbus_assert (strcmp (dbus_address_entry_get_value (entries[1], "sliff"), "sloff") == 0);
+
+  dbus_address_entries_free (entries);
+
+  /* Different possible errors */
+  if (dbus_parse_address ("", &entries, &len, &error))
+    _dbus_test_fatal ("Parsed incorrect address.");
+  else
+    dbus_error_free (&error);
+
+  if (dbus_parse_address ("foo", &entries, &len, &error))
+    _dbus_test_fatal ("Parsed incorrect address.");
+  else
+    dbus_error_free (&error);
+
+  if (dbus_parse_address ("foo:bar", &entries, &len, &error))
+    _dbus_test_fatal ("Parsed incorrect address.");
+  else
+    dbus_error_free (&error);
+
+  if (dbus_parse_address ("foo:bar,baz", &entries, &len, &error))
+    _dbus_test_fatal ("Parsed incorrect address.");
+  else
+    dbus_error_free (&error);
+
+  if (dbus_parse_address ("foo:bar=foo,baz", &entries, &len, &error))
+    _dbus_test_fatal ("Parsed incorrect address.");
+  else
+    dbus_error_free (&error);
+
+  if (dbus_parse_address ("foo:bar=foo;baz", &entries, &len, &error))
+    _dbus_test_fatal ("Parsed incorrect address.");
+  else
+    dbus_error_free (&error);
+
+  if (dbus_parse_address ("foo:=foo", &entries, &len, &error))
+    _dbus_test_fatal ("Parsed incorrect address.");
+  else
+    dbus_error_free (&error);
+
+  if (dbus_parse_address ("foo:foo=", &entries, &len, &error))
+    _dbus_test_fatal ("Parsed incorrect address.");
+  else
+    dbus_error_free (&error);
+
+  if (dbus_parse_address ("foo:foo,bar=baz", &entries, &len, &error))
+    _dbus_test_fatal ("Parsed incorrect address.");
+  else
+    dbus_error_free (&error);
+
+  return TRUE;
+}
index 47e85aae2b5979ddca888dc30f514d4d2d5a488e..d207ae9f382ab2c9d713674d83dfae6cc2b59459 100644 (file)
@@ -26,6 +26,7 @@
 
 #include <dbus/dbus-types.h>
 
+dbus_bool_t _dbus_address_test           (const char *test_data_dir);
 dbus_bool_t _dbus_auth_test              (const char *test_data_dir);
 dbus_bool_t _dbus_credentials_test       (const char *test_data_dir);
 dbus_bool_t _dbus_marshal_byteswap_test  (const char *test_data_dir);