[epiphany] ephy-string: improve a bit ephy_string_get_host_name



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]