From f89e9deaec3bf279eac5073a30d6d3d7b2a1568b Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 19 Aug 2012 02:23:32 -0400 Subject: [PATCH] Improve GAppInfo test coverage --- gio/tests/appinfo-test.desktop | 8 ++++-- gio/tests/appinfo.c | 60 +++++++++++++++++++++++++++++++++++++++++- gio/tests/mimeapps.c | 21 ++++++++++++--- 3 files changed, 83 insertions(+), 6 deletions(-) diff --git a/gio/tests/appinfo-test.desktop b/gio/tests/appinfo-test.desktop index e4d8396..6c9a85c 100644 --- a/gio/tests/appinfo-test.desktop +++ b/gio/tests/appinfo-test.desktop @@ -1,13 +1,17 @@ [Desktop Entry] Type=Application +GenericName=generic-appinfo-test Name=appinfo-test Name[de]=appinfo-test-de X-GNOME-FullName=example X-GNOME-FullName[de]=Beispiel Comment=GAppInfo example Comment[de]=GAppInfo Beispiel -Exec=./appinfo-test --option -Icon=testicon +Exec=./appinfo-test --option %U %i --name %c --filename %k %m %% +Icon=testicon.svg +Terminal=true StartupNotify=true StartupWMClass=appinfo-class MimeType=image/png;image/jpeg; +Keywords=keyword1;test keyword; +Categories=GNOME;GTK; diff --git a/gio/tests/appinfo.c b/gio/tests/appinfo.c index 939e34b..7e82173 100644 --- a/gio/tests/appinfo.c +++ b/gio/tests/appinfo.c @@ -9,6 +9,8 @@ test_launch (void) { GAppInfo *appinfo; GError *error; + GFile *file; + GList *l; appinfo = (GAppInfo*)g_desktop_app_info_new_from_filename (SRCDIR "/appinfo-test.desktop"); g_assert (appinfo != NULL); @@ -19,6 +21,23 @@ test_launch (void) g_assert (g_app_info_launch_uris (appinfo, NULL, NULL, &error)); g_assert_no_error (error); + + file = g_file_new_for_path (SRCDIR "/appinfo-test.desktop"); + l = NULL; + l = g_list_append (l, file); + + g_assert (g_app_info_launch (appinfo, l, NULL, &error)); + g_assert_no_error (error); + g_list_free (l); + g_object_unref (file); + + l = NULL; + l = g_list_append (l, "file://" SRCDIR "/appinfo-test.desktop"); + l = g_list_append (l, "file:///etc/group#adm"); + + g_assert (g_app_info_launch_uris (appinfo, l, NULL, &error)); + g_assert_no_error (error); + g_list_free (l); } static void @@ -78,7 +97,6 @@ test_basic (void) g_assert (g_app_info_get_id (appinfo) == NULL); g_assert_cmpstr (g_app_info_get_executable (appinfo), ==, "./appinfo-test"); - g_assert_cmpstr (g_app_info_get_commandline (appinfo), ==, "./appinfo-test --option"); icon = g_app_info_get_icon (appinfo); g_assert (G_IS_THEMED_ICON (icon)); @@ -317,6 +335,45 @@ test_supported_types (void) g_object_unref (appinfo); } +static void +test_from_keyfile (void) +{ + GDesktopAppInfo *info; + GKeyFile *kf; + GError *error = NULL; + const gchar *categories; + gchar **keywords; + const gchar *file; + const gchar *name; + + kf = g_key_file_new (); + g_key_file_load_from_file (kf, + SRCDIR "/appinfo-test.desktop", + G_KEY_FILE_NONE, + &error); + g_assert_no_error (error); + info = g_desktop_app_info_new_from_keyfile (kf); + g_key_file_free (kf); + g_assert (info != NULL); + + g_object_get (info, "filename", &file, NULL); + g_assert (file == NULL); + + file = g_desktop_app_info_get_filename (info); + g_assert (file == NULL); + categories = g_desktop_app_info_get_categories (info); + g_assert_cmpstr (categories, ==, "GNOME;GTK;"); + keywords = (gchar **)g_desktop_app_info_get_keywords (info); + g_assert_cmpint (g_strv_length (keywords), ==, 2); + g_assert_cmpstr (keywords[0], ==, "keyword1"); + g_assert_cmpstr (keywords[1], ==, "test keyword"); + name = g_desktop_app_info_get_generic_name (info); + g_assert_cmpstr (name, ==, "generic-appinfo-test"); + g_assert (!g_desktop_app_info_get_nodisplay (info)); + + g_object_unref (info); +} + int main (int argc, char *argv[]) { @@ -334,6 +391,7 @@ main (int argc, char *argv[]) g_test_add_func ("/appinfo/environment", test_environment); g_test_add_func ("/appinfo/startup-wm-class", test_startup_wm_class); g_test_add_func ("/appinfo/supported-types", test_supported_types); + g_test_add_func ("/appinfo/from-keyfile", test_from_keyfile); return g_test_run (); } diff --git a/gio/tests/mimeapps.c b/gio/tests/mimeapps.c index 46b3f23..05816e6 100644 --- a/gio/tests/mimeapps.c +++ b/gio/tests/mimeapps.c @@ -73,12 +73,13 @@ const gchar *myapp5_data = "Type=Application\n" "Exec=my_app5 %f\n" "Name=my app 5\n" - "MimeType=image/bmp;"; + "MimeType=image/bmp;x-scheme-handler/ftp;"; const gchar *defaults_data = "[Default Applications]\n" "image/bmp=myapp4.desktop;\n" - "image/png=myapp3.desktop;\n"; + "image/png=myapp3.desktop;\n" + "x-scheme-handler/ftp=myapp5.desktop;\n"; const gchar *mimecache_data = "[MIME Cache]\n" @@ -562,6 +563,19 @@ test_mime_default_last_used (void) g_object_unref (appinfo5); } +static void +test_scheme_handler (void) +{ + GAppInfo *info, *info5; + + info5 = (GAppInfo*)g_desktop_app_info_new ("myapp5.desktop"); + info = g_app_info_get_default_for_uri_scheme ("ftp"); + g_assert (g_app_info_equal (info, info5)); + + g_object_unref (info); + g_object_unref (info5); +} + int main (int argc, char *argv[]) { @@ -573,7 +587,8 @@ main (int argc, char *argv[]) g_test_add_func ("/appinfo/mime/api", test_mime_api); g_test_add_func ("/appinfo/mime/default", test_mime_default); g_test_add_func ("/appinfo/mime/file", test_mime_file); - g_test_add_func ("/appinfo/mime/default_last_used", test_mime_default_last_used); + g_test_add_func ("/appinfo/mime/scheme-handler", test_scheme_handler); + g_test_add_func ("/appinfo/mime/default-last-used", test_mime_default_last_used); return g_test_run (); } -- 2.7.4