Improve GApplication test coverage
[platform/upstream/glib.git] / gio / tests / appinfo.c
index 4a7042f..e04071a 100644 (file)
@@ -1,11 +1,10 @@
 
 #include <locale.h>
+#include <string.h>
 
 #include <gio/gio.h>
 #include <gio/gdesktopappinfo.h>
 
-static const gchar *datapath;
-
 static void
 test_launch (void)
 {
@@ -13,12 +12,18 @@ test_launch (void)
   GError *error;
   GFile *file;
   GList *l;
-  gchar *path;
+  const gchar *path;
+  gchar *uri;
 
-  path = g_build_filename (datapath, "appinfo-test.desktop", NULL);
+  if (g_getenv ("DISPLAY") == NULL || g_getenv ("DISPLAY")[0] == '\0')
+    {
+      g_printerr ("No DISPLAY.  Skipping test.  ");
+      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);
-  g_free (path);
 
   error = NULL;
   g_assert (g_app_info_launch (appinfo, NULL, NULL, &error));
@@ -27,9 +32,7 @@ test_launch (void)
   g_assert (g_app_info_launch_uris (appinfo, NULL, NULL, &error));
   g_assert_no_error (error);
 
-  path = g_build_filename (datapath, "appinfo-test.desktop", NULL);
   file = g_file_new_for_path (path);
-  g_free (path);
   l = NULL;
   l = g_list_append (l, file);
 
@@ -39,14 +42,14 @@ test_launch (void)
   g_object_unref (file);
 
   l = NULL;
-  path = g_strconcat ("file://", datapath, "/appinfo-test.desktop", NULL);
-  l = g_list_append (l, path);
+  uri = g_strconcat ("file://", g_test_get_dir (G_TEST_DIST), "/appinfo-test.desktop", NULL);
+  l = g_list_append (l, uri);
   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);
-  g_free (path);
+  g_free (uri);
 
   g_object_unref (appinfo);
 }
@@ -56,15 +59,14 @@ test_locale (const char *locale)
 {
   GAppInfo *appinfo;
   const gchar *orig;
-  gchar *path;
+  const gchar *path;
 
   orig = setlocale (LC_ALL, NULL);
   g_setenv ("LANGUAGE", locale, TRUE);
   setlocale (LC_ALL, "");
 
-  path = g_build_filename (datapath, "appinfo-test.desktop", NULL);
+  path = g_test_get_filename (G_TEST_DIST, "appinfo-test.desktop", NULL);
   appinfo = (GAppInfo*)g_desktop_app_info_new_from_filename (path);
-  g_free (path);
 
   if (g_strcmp0 (locale, "C") == 0)
     {
@@ -106,14 +108,13 @@ test_basic (void)
   GAppInfo *appinfo;
   GAppInfo *appinfo2;
   GIcon *icon, *icon2;
-  gchar *path;
+  const gchar *path;
 
-  path = g_build_filename (datapath, "appinfo-test.desktop", NULL);
+  path = g_test_get_filename (G_TEST_DIST, "appinfo-test.desktop", NULL);
   appinfo = (GAppInfo*)g_desktop_app_info_new_from_filename (path);
-  g_free (path);
 
   g_assert_cmpstr (g_app_info_get_id (appinfo), ==, "appinfo-test.desktop");
-  g_assert_cmpstr (g_app_info_get_executable (appinfo), ==, "./appinfo-test");
+  g_assert (strstr (g_app_info_get_executable (appinfo), "appinfo-test") != NULL);
 
   icon = g_app_info_get_icon (appinfo);
   g_assert (G_IS_THEMED_ICON (icon));
@@ -133,27 +134,24 @@ static void
 test_show_in (void)
 {
   GAppInfo *appinfo;
-  gchar *path;
+  const gchar *path;
 
   g_desktop_app_info_set_desktop_env ("GNOME");
 
-  path = g_build_filename (datapath, "appinfo-test.desktop", NULL);
+  path = g_test_get_filename (G_TEST_DIST, "appinfo-test.desktop", NULL);
   appinfo = (GAppInfo*)g_desktop_app_info_new_from_filename (path);
   g_assert (g_app_info_should_show (appinfo));
   g_object_unref (appinfo);
-  g_free (path);
 
-  path = g_build_filename (datapath, "appinfo-test-gnome.desktop", NULL);
+  path = g_test_get_filename (G_TEST_DIST, "appinfo-test-gnome.desktop", NULL);
   appinfo = (GAppInfo*)g_desktop_app_info_new_from_filename (path);
   g_assert (g_app_info_should_show (appinfo));
   g_object_unref (appinfo);
-  g_free (path);
 
-  path = g_build_filename (datapath, "appinfo-test-notgnome.desktop", NULL);
+  path = g_test_get_filename (G_TEST_DIST, "appinfo-test-notgnome.desktop", NULL);
   appinfo = (GAppInfo*)g_desktop_app_info_new_from_filename (path);
   g_assert (!g_app_info_should_show (appinfo));
   g_object_unref (appinfo);
-  g_free (path);
 }
 
 static void
@@ -164,7 +162,7 @@ test_commandline (void)
   gchar *cmdline;
   gchar *cmdline_out;
 
-  cmdline = g_strconcat (datapath, "/appinfo-test --option", NULL);
+  cmdline = g_strconcat (g_test_get_dir (G_TEST_BUILT), "/appinfo-test --option", NULL);
   cmdline_out = g_strconcat (cmdline, " %u", NULL);
 
   error = NULL;
@@ -210,7 +208,7 @@ test_launch_context (void)
   gchar *str;
   gchar *cmdline;
 
-  cmdline = g_strconcat (datapath, "/appinfo-test --option", NULL);
+  cmdline = g_strconcat (g_test_get_dir (G_TEST_BUILT), "/appinfo-test --option", NULL);
 
   context = g_app_launch_context_new ();
   appinfo = g_app_info_create_from_commandline (cmdline,
@@ -262,7 +260,7 @@ test_launch_context_signals (void)
   GError *error = NULL;
   gchar *cmdline;
 
-  cmdline = g_strconcat (datapath, "/appinfo-test --option", NULL);
+  cmdline = g_strconcat (g_test_get_dir (G_TEST_BUILT), "/appinfo-test --option", NULL);
 
   context = g_app_launch_context_new ();
   g_signal_connect (context, "launched", G_CALLBACK (launched), NULL);
@@ -288,14 +286,12 @@ static void
 test_tryexec (void)
 {
   GAppInfo *appinfo;
-  gchar *path;
+  const gchar *path;
 
-  path = g_build_filename (datapath, "appinfo-test2.desktop", NULL);
+  path = g_test_get_filename (G_TEST_DIST, "appinfo-test2.desktop", NULL);
   appinfo = (GAppInfo*)g_desktop_app_info_new_from_filename (path);
 
   g_assert (appinfo == NULL);
-
-  g_free (path);
 }
 
 /* Test that we can set an appinfo as default for a mime type or
@@ -311,7 +307,7 @@ test_associations (void)
   GList *list;
   gchar *cmdline;
 
-  cmdline = g_strconcat (datapath, "/appinfo-test --option", NULL);
+  cmdline = g_strconcat (g_test_get_dir (G_TEST_BUILT), "/appinfo-test --option", NULL);
   appinfo = g_app_info_create_from_commandline (cmdline,
                                                 "cmdline-app-test",
                                                 G_APP_INFO_CREATE_SUPPORTS_URIS,
@@ -411,16 +407,15 @@ test_startup_wm_class (void)
 {
   GDesktopAppInfo *appinfo;
   const char *wm_class;
-  gchar *path;
+  const gchar *path;
 
-  path = g_build_filename (datapath, "appinfo-test.desktop", NULL);
+  path = g_test_get_filename (G_TEST_DIST, "appinfo-test.desktop", NULL);
   appinfo = g_desktop_app_info_new_from_filename (path);
   wm_class = g_desktop_app_info_get_startup_wm_class (appinfo);
 
   g_assert_cmpstr (wm_class, ==, "appinfo-class");
 
   g_object_unref (appinfo);
-  g_free (path);
 }
 
 static void
@@ -428,9 +423,9 @@ test_supported_types (void)
 {
   GAppInfo *appinfo;
   const char * const *content_types;
-  gchar *path;
+  const gchar *path;
 
-  path = g_build_filename (datapath, "appinfo-test.desktop", NULL);
+  path = g_test_get_filename (G_TEST_DIST, "appinfo-test.desktop", NULL);
   appinfo = G_APP_INFO (g_desktop_app_info_new_from_filename (path));
   content_types = g_app_info_get_supported_types (appinfo);
 
@@ -438,7 +433,6 @@ test_supported_types (void)
   g_assert_cmpstr (content_types[0], ==, "image/png");
 
   g_object_unref (appinfo);
-  g_free (path);
 }
 
 static void
@@ -451,16 +445,15 @@ test_from_keyfile (void)
   gchar **keywords;
   const gchar *file;
   const gchar *name;
-  gchar *path;
+  const gchar *path;
 
-  path = g_build_filename (datapath, "appinfo-test.desktop", NULL);
+  path = g_test_get_filename (G_TEST_DIST, "appinfo-test.desktop", NULL);
   kf = g_key_file_new ();
   g_key_file_load_from_file (kf, path, 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_free (path);
 
   g_object_get (info, "filename", &file, NULL);
   g_assert (file == NULL);
@@ -483,11 +476,6 @@ test_from_keyfile (void)
 int
 main (int argc, char *argv[])
 {
-  if (g_getenv ("G_TEST_DATA"))
-    datapath = g_getenv ("G_TEST_DATA");
-  else
-    datapath = SRCDIR;
-
   g_test_init (&argc, &argv, NULL);
 
   g_test_add_func ("/appinfo/basic", test_basic);