[glib/glib-2-54] gio/tests/appinfo: New test for launch with "appId-less" applications
- From: Philip Withnall <pwithnall src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib/glib-2-54] gio/tests/appinfo: New test for launch with "appId-less" applications
- Date: Fri, 8 Dec 2017 13:50:44 +0000 (UTC)
commit 620c50ba1ef663462e8d250e66f4c5df7bb580f2
Author: Mario Sanchez Prada <mario endlessm com>
Date: Thu Dec 7 22:10:58 2017 +0000
gio/tests/appinfo: New test for launch with "appId-less" applications
New test to make sure we exercise the code paths in gdesktopappinfo.c
that get triggered when g_desktop_app_info_launch_uris_with_spawn()
is used (i.e. unknown app ID, no session bus), both for when either
a single URI or multiple ones are expected by the application.
https://bugzilla.gnome.org/show_bug.cgi?id=791337
gio/tests/appinfo.c | 83 +++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 77 insertions(+), 6 deletions(-)
---
diff --git a/gio/tests/appinfo.c b/gio/tests/appinfo.c
index 1902053..2e69da0 100644
--- a/gio/tests/appinfo.c
+++ b/gio/tests/appinfo.c
@@ -7,9 +7,8 @@
#include <gio/gdesktopappinfo.h>
static void
-test_launch (void)
+test_launch_for_app_info (GAppInfo *appinfo)
{
- GAppInfo *appinfo;
GError *error;
GFile *file;
GList *l;
@@ -22,10 +21,6 @@ test_launch (void)
return;
}
- path = g_test_get_filename (G_TEST_DIST, "appinfo-test.desktop", NULL);
- appinfo = (GAppInfo*)g_desktop_app_info_new_from_filename (path);
- g_assert (appinfo != NULL);
-
error = NULL;
g_assert (g_app_info_launch (appinfo, NULL, NULL, &error));
g_assert_no_error (error);
@@ -33,6 +28,7 @@ test_launch (void)
g_assert (g_app_info_launch_uris (appinfo, NULL, NULL, &error));
g_assert_no_error (error);
+ path = g_test_get_filename (G_TEST_DIST, "appinfo-test.desktop", NULL);
file = g_file_new_for_path (path);
l = NULL;
l = g_list_append (l, file);
@@ -51,11 +47,84 @@ test_launch (void)
g_assert_no_error (error);
g_list_free (l);
g_free (uri);
+}
+
+static void
+test_launch (void)
+{
+ GAppInfo *appinfo;
+ const gchar *path;
+ path = g_test_get_filename (G_TEST_DIST, "appinfo-test.desktop", NULL);
+ appinfo = (GAppInfo*)g_desktop_app_info_new_from_filename (path);
+ g_assert (appinfo != NULL);
+
+ test_launch_for_app_info (appinfo);
g_object_unref (appinfo);
}
static void
+test_launch_no_app_id (void)
+{
+ const gchar desktop_file_base_contents[] =
+ "[Desktop Entry]\n"
+ "Type=Application\n"
+ "GenericName=generic-appinfo-test\n"
+ "Name=appinfo-test\n"
+ "Name[de]=appinfo-test-de\n"
+ "X-GNOME-FullName=example\n"
+ "X-GNOME-FullName[de]=Beispiel\n"
+ "Comment=GAppInfo example\n"
+ "Comment[de]=GAppInfo Beispiel\n"
+ "Icon=testicon.svg\n"
+ "Terminal=true\n"
+ "StartupNotify=true\n"
+ "StartupWMClass=appinfo-class\n"
+ "MimeType=image/png;image/jpeg;\n"
+ "Keywords=keyword1;test keyword;\n"
+ "Categories=GNOME;GTK;\n";
+
+ const char *exec_line_variants[] = {
+ "Exec=./appinfo-test --option %U %i --name %c --filename %k %m %%",
+ "Exec=./appinfo-test --option %u %i --name %c --filename %k %m %%"
+ };
+
+ gsize i;
+
+ g_test_bug ("791337");
+
+ for (i = 0; i < G_N_ELEMENTS (exec_line_variants); i++)
+ {
+ gchar *desktop_file_contents;
+ GKeyFile *fake_desktop_file;
+ GAppInfo *appinfo;
+ gboolean loaded;
+
+ g_test_message ("Exec line variant #%" G_GSIZE_FORMAT, i);
+
+ desktop_file_contents = g_strdup_printf ("%s\n%s",
+ desktop_file_base_contents,
+ exec_line_variants[i]);
+
+ /* We load a desktop file from memory to force the app not
+ * to have an app ID, which would check different codepaths.
+ */
+ fake_desktop_file = g_key_file_new ();
+ loaded = g_key_file_load_from_data (fake_desktop_file, desktop_file_contents, -1, G_KEY_FILE_NONE, NULL);
+ g_assert_true (loaded);
+
+ appinfo = (GAppInfo*)g_desktop_app_info_new_from_keyfile (fake_desktop_file);
+ g_assert (appinfo != NULL);
+
+ test_launch_for_app_info (appinfo);
+
+ g_free (desktop_file_contents);
+ g_object_unref (appinfo);
+ g_key_file_unref (fake_desktop_file);
+ }
+}
+
+static void
test_locale (const char *locale)
{
GAppInfo *appinfo;
@@ -480,6 +549,7 @@ main (int argc, char *argv[])
g_setenv ("XDG_CURRENT_DESKTOP", "GNOME", TRUE);
g_test_init (&argc, &argv, NULL);
+ g_test_bug_base ("https://bugzilla.gnome.org/show_bug.cgi?id=");
/* With Meson build we need to change into right directory, so that the
* appinfo-test binary can be found. */
@@ -490,6 +560,7 @@ main (int argc, char *argv[])
g_test_add_func ("/appinfo/basic", test_basic);
g_test_add_func ("/appinfo/text", test_text);
g_test_add_func ("/appinfo/launch", test_launch);
+ g_test_add_func ("/appinfo/launch/no-appid", test_launch_no_app_id);
g_test_add_func ("/appinfo/show-in", test_show_in);
g_test_add_func ("/appinfo/commandline", test_commandline);
g_test_add_func ("/appinfo/launch-context", test_launch_context);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]