summaryrefslogtreecommitdiff
path: root/tests/test-doc-portal.c
diff options
context:
space:
mode:
authorAlexander Larsson <alexander.larsson@gmail.com>2016-01-29 08:54:58 +0100
committerAlexander Larsson <alexander.larsson@gmail.com>2016-01-29 08:54:58 +0100
commita0a1bc4d0be5c6b3c85a1253d533d331b94e051d (patch)
tree1de016ef0516c580a4fb190ec45f10aeb36fc0a4 /tests/test-doc-portal.c
parentf0e87af9295710ef0ce9a8fedd267b70eb57a7a1 (diff)
parentaaae0d0b6db23b16ac4f5e455d29cc7b02c8c914 (diff)
downloadxdg-app-a0a1bc4d0be5c6b3c85a1253d533d331b94e051d.tar.gz
Merge pull request #108 from smcv/no-fuse
Fix `make check` when FUSE is unavailable
Diffstat (limited to 'tests/test-doc-portal.c')
-rw-r--r--tests/test-doc-portal.c57
1 files changed, 49 insertions, 8 deletions
diff --git a/tests/test-doc-portal.c b/tests/test-doc-portal.c
index f98eb92..d675360 100644
--- a/tests/test-doc-portal.c
+++ b/tests/test-doc-portal.c
@@ -21,6 +21,7 @@ GTestDBus *dbus;
GDBusConnection *session_bus;
XdpDbusDocuments *documents;
char *mountpoint;
+static gboolean have_fuse;
static char *
make_doc_dir (const char *id, const char *app)
@@ -157,6 +158,12 @@ test_create_doc (void)
const char *basename = "a-file";
GError *error = NULL;
+ if (!have_fuse)
+ {
+ g_test_skip ("this test requires FUSE");
+ return;
+ }
+
id = export_new_file (basename, "content", FALSE);
assert_doc_has_contents (id, basename, NULL, "content");
@@ -191,6 +198,12 @@ test_recursive_doc (void)
g_autofree char *path = NULL;
g_autofree char *app_path = NULL;
+ if (!have_fuse)
+ {
+ g_test_skip ("this test requires FUSE");
+ return;
+ }
+
id = export_new_file (basename, "recursive-content", FALSE);
assert_doc_has_contents (id, basename, NULL, "recursive-content");
@@ -211,14 +224,23 @@ test_recursive_doc (void)
g_assert_cmpstr (id, ==, id3);
}
-int
-main (int argc, char **argv)
+static void
+global_setup (void)
{
- int res;
gboolean inited;
+ g_autofree gchar *fusermount = NULL;
GError *error = NULL;
gint exit_status;
+ fusermount = g_find_program_in_path ("fusermount");
+ /* cache result so subsequent tests can be marked as skipped */
+ have_fuse = (access ("/dev/fuse", W_OK) == 0 &&
+ fusermount != NULL &&
+ g_file_test (fusermount, G_FILE_TEST_IS_EXECUTABLE));
+
+ if (!have_fuse)
+ return;
+
g_mkdtemp (outdir);
g_print ("outdir: %s\n", outdir);
@@ -251,13 +273,15 @@ main (int argc, char **argv)
g_assert_no_error (error);
g_assert (inited);
g_assert (mountpoint != NULL);
+}
- g_test_init (&argc, &argv, NULL);
-
- g_test_add_func ("/db/create_doc", test_create_doc);
- g_test_add_func ("/db/recursive_doc", test_recursive_doc);
+static void
+global_teardown (void)
+{
+ GError *error = NULL;
- res = g_test_run ();
+ if (!have_fuse)
+ return;
g_free (mountpoint);
@@ -277,6 +301,23 @@ main (int argc, char **argv)
sleep (1);
glnx_shutil_rm_rf_at (-1, outdir, NULL, NULL);
+}
+
+int
+main (int argc, char **argv)
+{
+ int res;
+
+ g_test_init (&argc, &argv, NULL);
+
+ g_test_add_func ("/db/create_doc", test_create_doc);
+ g_test_add_func ("/db/recursive_doc", test_recursive_doc);
+
+ global_setup ();
+
+ res = g_test_run ();
+
+ global_teardown ();
return res;
}