[epiphany] ephy-string: improve a bit ephy_string_get_host_name
- From: Xan Lopez <xan src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [epiphany] ephy-string: improve a bit ephy_string_get_host_name
- Date: Fri, 17 Aug 2012 15:33:17 +0000 (UTC)
commit 70b9a089b39208856f73e26d533d4912bb37050d
Author: Xan Lopez <xan igalia com>
Date: Fri Aug 17 17:24:36 2012 +0200
ephy-string: improve a bit ephy_string_get_host_name
And add unit tests for it.
lib/ephy-string.c | 9 ++++++
tests/Makefile.am | 4 ++
tests/ephy-string-test.c | 70 ++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 83 insertions(+), 0 deletions(-)
---
diff --git a/lib/ephy-string.c b/lib/ephy-string.c
index 671ed55..48a054d 100644
--- a/lib/ephy-string.c
+++ b/lib/ephy-string.c
@@ -455,6 +455,15 @@ ephy_string_get_host_name (const char *url)
if (url == NULL || g_str_has_prefix (url, "file://")) return NULL;
uri = soup_uri_new (url);
+ /* If uri is NULL it's very possible that we just got
+ * something without a scheme, let's try to prepend
+ * 'http://' */
+ if (uri == NULL)
+ {
+ char *effective_url = g_strconcat ("http://", url, NULL);
+ uri = soup_uri_new (effective_url);
+ g_free (effective_url);
+ }
if (uri == NULL) return NULL;
ret = g_strdup (uri->host);
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 8a2f106..d41bd8a 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -13,6 +13,7 @@ noinst_PROGRAMS = \
test-ephy-session \
test-ephy-shell \
test-ephy-sqlite \
+ test-ephy-string \
test-ephy-web-app-utils \
test-ephy-web-view \
$(NULL)
@@ -154,6 +155,9 @@ test_ephy_shell_SOURCES = \
test_ephy_sqlite_SOURCES = \
ephy-sqlite-test.c
+test_ephy_string_SOURCES = \
+ ephy-string-test.c
+
test_ephy_web_app_utils_SOURCES = \
ephy-web-app-utils-test.c
diff --git a/tests/ephy-string-test.c b/tests/ephy-string-test.c
new file mode 100644
index 0000000..df3972e
--- /dev/null
+++ b/tests/ephy-string-test.c
@@ -0,0 +1,70 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+ * Copyright  2012 Igalia S.L.
+ *
+ * Epiphany 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.
+ *
+ * Epiphany 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 Epiphany; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ */
+
+#include "config.h"
+#include "ephy-string.h"
+
+#include <glib.h>
+#include <gtk/gtk.h>
+
+typedef struct {
+ char *uri;
+ char *hostname;
+} HostnameTest;
+
+static const HostnameTest hostname_tests[] = {
+ { "http://www.google.com", "www.google.com" },
+ { "http://www.google.com/this/is/a/path", "www.google.com" },
+ { "www.google.com", "www.google.com" },
+ { "google.com", "google.com" },
+ { "file:///tmp/", NULL },
+ { NULL, NULL },
+ { "garbage garbage", "garbage garbage" } /* FIXME: should this be NULL? */
+};
+
+static void
+test_ephy_string_get_hostname ()
+{
+ int i;
+
+ for (i = 0; i < G_N_ELEMENTS (hostname_tests); i++) {
+ char *host;
+ HostnameTest test = hostname_tests[i];
+
+ host = ephy_string_get_host_name (test.uri);
+ g_assert_cmpstr (host, ==, test.hostname);
+ g_free (host);
+ }
+}
+
+int
+main (int argc, char *argv[])
+{
+ gboolean ret;
+
+ gtk_test_init (&argc, &argv);
+
+ g_test_add_func ("/lib/ephy-string/get_hostname",
+ test_ephy_string_get_hostname);
+
+ ret = g_test_run ();
+
+ return ret;
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]