about summary refs log tree commit diff stats
path: root/tests/config
diff options
context:
space:
mode:
Diffstat (limited to 'tests/config')
-rw-r--r--tests/config/helpers.c46
-rw-r--r--tests/config/helpers.h2
2 files changed, 48 insertions, 0 deletions
diff --git a/tests/config/helpers.c b/tests/config/helpers.c
new file mode 100644
index 00000000..f7e7fdb9
--- /dev/null
+++ b/tests/config/helpers.c
@@ -0,0 +1,46 @@
+#define _XOPEN_SOURCE 600
+#include <glib.h>
+#include <setjmp.h>
+#include <stdarg.h>
+#include <stddef.h>
+#include <ftw.h>
+#include <stdlib.h>
+#include <cmocka.h>
+
+#include "common.h"
+
+static int unlink_cb(const char *fpath, const struct stat *sb, int typeflag, struct FTW *ftwbuf)
+{
+    int rv = remove(fpath);
+
+    if (rv)
+        perror(fpath);
+
+    return rv;
+}
+
+static int rmrf(char *path)
+{
+    return nftw(path, unlink_cb, 64, FTW_DEPTH | FTW_PHYS);
+}
+
+void create_config_dir(void **state)
+{
+    setenv("XDG_CONFIG_HOME", "./tests/files/xdg_config_home", 1);
+    gchar *xdg_config = xdg_get_config_home();
+
+    GString *profanity_dir = g_string_new(xdg_config);
+    g_string_append(profanity_dir, "/profanity");
+
+    if (!mkdir_recursive(profanity_dir->str)) {
+        assert_true(FALSE);
+    }
+    g_string_free(profanity_dir, TRUE);
+
+    g_free(xdg_config);
+}
+
+void delete_config_dir(void **state)
+{
+   rmrf("./tests/files");
+}
diff --git a/tests/config/helpers.h b/tests/config/helpers.h
new file mode 100644
index 00000000..cd4d5f9d
--- /dev/null
+++ b/tests/config/helpers.h
@@ -0,0 +1,2 @@
+void create_config_dir(void **state);
+void delete_config_dir(void **state);