#include "config.h" #include #include #include #include "hostname-helper.h" static void test_hostname (void) { char *contents; char *result; guint i; char **lines; if (g_file_get_contents (TEST_SRCDIR "/hostnames-test.txt", &contents, NULL, NULL) == FALSE) { g_warning ("Failed to load '%s'", TEST_SRCDIR "/hostnames-test.txt"); g_test_fail (); return; } lines = g_strsplit (contents, "\n", -1); if (lines == NULL) { g_warning ("Test file is empty"); g_test_fail (); return; } for (i = 0; lines[i] != NULL; i++) { char *utf8; char **items; if (*lines[i] == '#') continue; if (*lines[i] == '\0') break; items = g_strsplit (lines[i], "\t", -1); utf8 = g_locale_from_utf8 (items[0], -1, NULL, NULL, NULL); result = pretty_hostname_to_static (items[0], FALSE); if (g_strcmp0 (result, items[2]) != 0) { g_error ("Result for '%s' doesn't match '%s' (got: '%s')", utf8, items[2], result); g_test_fail (); } else { g_debug ("Result for '%s' matches '%s'", utf8, result); } g_free (result); g_free (utf8); result = pretty_hostname_to_static (items[0], TRUE); utf8 = g_locale_from_utf8 (items[0], -1, NULL, NULL, NULL); if (g_strcmp0 (result, items[1]) != 0) { g_error ("Result for '%s' doesn't match '%s' (got: '%s')", utf8, items[1], result); g_test_fail (); } else { g_debug ("Result for '%s' matches '%s'", utf8, result); } g_free (result); g_free (utf8); g_strfreev (items); } g_strfreev (lines); g_free (contents); } static void test_ssid (void) { char *contents; guint i; char **lines; if (g_file_get_contents (TEST_SRCDIR "/ssids-test.txt", &contents, NULL, NULL) == FALSE) { g_warning ("Failed to load '%s'", TEST_SRCDIR "/ssids-test.txt"); g_test_fail (); return; } lines = g_strsplit (contents, "\n", -1); if (lines == NULL) { g_warning ("Test file is empty"); g_test_fail (); return; } for (i = 0; lines[i] != NULL; i++) { char *ssid; char **items; if (*lines[i] == '#') continue; if (*lines[i] == '\0') break; items = g_strsplit (lines[i], "\t", -1); ssid = pretty_hostname_to_ssid (items[0]); g_assert_cmpstr (ssid, ==, items[1]); g_free (ssid); g_strfreev (items); } g_strfreev (lines); g_free (contents); } int main (int argc, char **argv) { char *locale; /* Running in some locales will * break the tests as "ΓΌ" will be transliterated to * "ue" in de_DE, and 'u"' in the C locale. * * Work around that by forcing en_US with UTF-8 in * our tests * https://bugzilla.gnome.org/show_bug.cgi?id=650342 */ locale = setlocale (LC_ALL, "en_US.UTF-8"); if (locale == NULL) { g_debug("Missing en_US.UTF-8 locale, ignoring test."); return 0; } bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); g_test_init (&argc, &argv, NULL); g_test_add_func ("/shell/hostname", test_hostname); g_test_add_func ("/shell/ssid", test_ssid); return g_test_run (); }