diff options
author | Xan Lopez <xan@igalia.com> | 2012-08-17 23:24:36 +0800 |
---|---|---|
committer | Xan Lopez <xan@igalia.com> | 2012-08-17 23:25:06 +0800 |
commit | 70b9a089b39208856f73e26d533d4912bb37050d (patch) | |
tree | ba2f226a891da13f747f2271057d9ee86d145baa | |
parent | cf9c1a366b1424ee55e621302c5cba02803832a8 (diff) | |
download | gsoc2013-epiphany-70b9a089b39208856f73e26d533d4912bb37050d.tar.gz gsoc2013-epiphany-70b9a089b39208856f73e26d533d4912bb37050d.tar.zst gsoc2013-epiphany-70b9a089b39208856f73e26d533d4912bb37050d.zip |
ephy-string: improve a bit ephy_string_get_host_name
And add unit tests for it.
-rw-r--r-- | lib/ephy-string.c | 9 | ||||
-rw-r--r-- | tests/Makefile.am | 4 | ||||
-rw-r--r-- | 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 671ed55bf..48a054d8a 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 8a2f10690..d41bd8ad4 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 000000000..df3972e90 --- /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; +} |