diff options
author | Matthias Clasen <mclasen@redhat.com> | 2004-07-30 19:00:01 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2004-07-30 19:00:01 +0000 |
commit | 0611985dd94a033ed4fc26494beffd72be1bfd34 (patch) | |
tree | 67c13c495a9d2d56e8f629ceeb043354c96e57cf /tests | |
parent | abc4662d80662efa540bee7689b2c5b96403a85a (diff) |
Don't validate for UTF-8 here. (#148420, Robert Ögren)
2004-07-30 Matthias Clasen <mclasen@redhat.com>
* glib/gconvert.c (g_unescape_uri_string): Don't validate
for UTF-8 here. (#148420, Robert Ögren)
* tests/uri-test.c (run_roundtrip_tests): Add tests for
roundtrip compatibility. Going from filename to uri and
back should always give you the same filename back.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/uri-test.c | 69 |
1 files changed, 66 insertions, 3 deletions
diff --git a/tests/uri-test.c b/tests/uri-test.c index b2ef5d55b..86536e4c5 100644 --- a/tests/uri-test.c +++ b/tests/uri-test.c @@ -127,10 +127,10 @@ from_uri_tests[] = { { "file://otherhost/etc", "/etc", "otherhost"}, { "file://otherhost/etc/%23%25%20file", "/etc/#% file", "otherhost"}, { "file://%C3%B6%C3%A4%C3%A5/etc", NULL, NULL, G_CONVERT_ERROR_BAD_URI}, - { "file:////etc/%C3%B6%C3%C3%C3%A5", NULL, NULL, G_CONVERT_ERROR_BAD_URI}, - { "file://localhost/\xE5\xE4\xF6", NULL, NULL, G_CONVERT_ERROR_BAD_URI}, + { "file:////etc/%C3%B6%C3%C3%C3%A5", "//etc/\xc3\xb6\xc3\xc3\xc3\xa5", NULL}, + { "file://localhost/\xE5\xE4\xF6", "/\xe5\xe4\xf6", "localhost"}, { "file://\xE5\xE4\xF6/etc", NULL, NULL, G_CONVERT_ERROR_BAD_URI}, - { "file://localhost/%E5%E4%F6", NULL, NULL, G_CONVERT_ERROR_BAD_URI}, + { "file://localhost/%E5%E4%F6", "/\xe5\xe4\xf6", "localhost"}, { "file://%E5%E4%F6/etc", NULL, NULL, G_CONVERT_ERROR_BAD_URI}, { "file:///some/file#bad", NULL, NULL, G_CONVERT_ERROR_BAD_URI}, { "file://some", NULL, NULL, G_CONVERT_ERROR_BAD_URI}, @@ -310,6 +310,68 @@ run_from_uri_tests (void) g_print ("\n"); } +static gint +safe_strcmp (const gchar *a, const gchar *b) +{ + return strcmp (a ? a : "", b ? b : ""); +} + +static void +run_roundtrip_tests (void) +{ + int i; + gchar *uri, *hostname, *res; + GError *error; + + for (i = 0; i < G_N_ELEMENTS (to_uri_tests); i++) + { + if (to_uri_tests[i].expected_error != 0) + continue; + + error = NULL; + uri = g_filename_to_uri (to_uri_tests[i].filename, + to_uri_tests[i].hostname, + &error); + + if (error != NULL) + { + g_print ("g_filename_to_uri failed unexpectedly: %s\n", + error->message); + any_failed = TRUE; + continue; + } + + error = NULL; + res = g_filename_from_uri (uri, &hostname, &error); + if (error != NULL) + { + g_print ("g_filename_from_uri failed unexpectedly: %s\n", + error->message); + any_failed = TRUE; + continue; + } + + if (safe_strcmp (to_uri_tests[i].filename, res)) + { + g_message ("roundtrip test %d failed, filename modified: " + " expected \"%s\", but got \"%s\"\n", + i, to_uri_tests[i].filename, res); + any_failed = TRUE; + } + + if (safe_strcmp (to_uri_tests[i].hostname, hostname)) + { + g_print ("roundtrip test %d failed, hostname modified: " + " expected \"%s\", but got \"%s\"\n", + i, to_uri_tests[i].hostname, hostname); + any_failed = TRUE; + } + + /* Give some output */ + g_print ("."); + } +} + int main (int argc, char *argv[]) @@ -327,6 +389,7 @@ main (int argc, run_to_uri_tests (); run_from_uri_tests (); + run_roundtrip_tests (); return any_failed ? 1 : 0; } |