72
test_get_config_home (void)
86
_test_get_home (char * env_var_name, char * dir_name, char * (*function)(void))
74
88
char dirname[PATH_MAX];
89
char onemore[PATH_MAX];
78
TEST_FUNCTION ("xdg_get_config_home");
80
93
TEST_FEATURE ("with HOME set and without environment override");
81
94
TEST_FILENAME (dirname);
82
95
TEST_EQ (setenv ("HOME", dirname, 1), 0);
83
TEST_EQ (unsetenv ("XDG_CONFIG_HOME"), 0);
96
TEST_EQ (mkdir (dirname, 0755), 0);
97
TEST_EQ (unsetenv (env_var_name), 0);
86
expected = NIH_MUST (nih_sprintf (NULL, "%s/.config", dirname));
100
expected = NIH_MUST (nih_sprintf (NULL, "%s/%s", dirname, dir_name));
90
outname = xdg_get_config_home ();
104
outname = function ();
92
106
if (! test_alloc_failed) {
93
107
TEST_EQ_STR (outname, expected);
108
_test_dir_created (expected);
95
110
TEST_EQ_P (outname, NULL);
99
114
nih_free (outname);
104
120
TEST_FEATURE ("with HOME set and with empty environment override");
105
TEST_EQ (setenv ("XDG_CONFIG_HOME", "", 1), 0);
110
expected = NIH_MUST (nih_sprintf (NULL, "%s/.config", dirname));
113
outname = xdg_get_config_home();
115
if (test_alloc_failed) {
116
TEST_EQ_P (outname, NULL);
118
TEST_EQ_STR (outname, expected);
121
TEST_EQ (setenv (env_var_name, "", 1), 0);
126
expected = NIH_MUST (nih_sprintf (NULL, "%s/%s", dirname, dir_name));
129
outname = function ();
131
if (test_alloc_failed) {
132
TEST_EQ_P (outname, NULL);
134
TEST_EQ_STR (outname, expected);
135
_test_dir_created (expected);
143
TEST_FEATURE ("with HOME set and with relative environment override");
144
TEST_EQ (setenv (env_var_name, "../", 1), 0);
149
expected = NIH_MUST (nih_sprintf (NULL, "%s/%s", dirname, dir_name));
152
outname = function ();
154
if (test_alloc_failed) {
155
TEST_EQ_P (outname, NULL);
157
TEST_EQ_STR (outname, expected);
158
_test_dir_created (expected);
125
166
TEST_FEATURE ("with HOME set and with environment override");
126
expected = NIH_MUST (nih_strdup (NULL, "/home/me/.config-test"));
127
TEST_EQ (setenv ("XDG_CONFIG_HOME", expected, 1), 0);
167
TEST_FILENAME (onemore);
168
expected = NIH_MUST (nih_sprintf (NULL, "%s", onemore));
169
TEST_EQ (setenv (env_var_name, expected, 1), 0);
129
171
TEST_ALLOC_FAIL {
131
outname = xdg_get_config_home();
173
outname = function ();
133
175
if (test_alloc_failed) {
134
176
TEST_EQ_P (outname, NULL);
136
178
TEST_EQ_STR (outname, expected);
179
_test_dir_created (expected);
139
182
nih_free (outname);
186
TEST_EQ (rmdir (dirname), 0);
142
188
TEST_FEATURE ("without HOME set and with environment override");
143
189
TEST_EQ (unsetenv ("HOME"), 0);
145
191
TEST_ALLOC_FAIL {
147
outname = xdg_get_config_home();
193
outname = function ();
149
195
if (test_alloc_failed) {
150
196
TEST_EQ_P (outname, NULL);
152
198
TEST_EQ_STR (outname, expected);
199
_test_dir_created (expected);
155
202
nih_free (outname);
157
205
nih_free(expected);
159
207
TEST_FEATURE ("without HOME set and with empty environment override");
160
TEST_EQ (setenv ("XDG_CONFIG_HOME", "", 1), 0);
208
TEST_EQ (setenv (env_var_name, "", 1), 0);
162
210
TEST_ALLOC_FAIL {
164
outname = xdg_get_config_home();
212
outname = function ();
165
213
TEST_EQ_P (outname, NULL);
168
216
TEST_FEATURE ("without HOME set and without environment override");
169
TEST_EQ (unsetenv ("XDG_CONFIG_HOME"), 0);
217
TEST_EQ (unsetenv (env_var_name), 0);
170
218
TEST_ALLOC_FAIL {
172
outname = xdg_get_config_home();
220
outname = function ();
173
221
TEST_EQ_P (outname, NULL);
226
test_get_config_home (void)
228
TEST_FUNCTION ("xdg_get_config_home");
229
_test_get_home ("XDG_CONFIG_HOME", ".config", &xdg_get_config_home);
234
test_get_cache_home (void)
236
TEST_FUNCTION ("xdg_get_cache_home");
237
_test_get_home ("XDG_CACHE_HOME", ".cache", &xdg_get_cache_home);
178
241
test_get_config_dirs (void)
180
243
char **dirs = NULL;
260
323
TEST_FEATURE ("with HOME set");
261
324
TEST_FILENAME (dirname);
262
325
TEST_EQ (setenv ("HOME", dirname, 1), 0);
326
TEST_EQ (mkdir (dirname, 0755), 0);
263
327
TEST_EQ (unsetenv ("XDG_CONFIG_HOME"), 0);
264
328
TEST_EQ (unsetenv ("XDG_CONFIG_DIRS"), 0);
266
330
TEST_ALLOC_FAIL {
267
331
TEST_ALLOC_SAFE {
269
332
expected = nih_str_array_new (NULL);
270
333
path = NIH_MUST (nih_sprintf (NULL, "%s/.config/upstart", dirname));
271
334
assert (nih_str_array_add (&expected, NULL, NULL, path));
282
345
TEST_EQ_P (dirs, NULL);
284
347
TEST_EQ_STR (dirs[0], expected[0]);
348
//_test_dir_created (expected[0]);
285
349
TEST_EQ_STR (dirs[1], expected[1]);
286
350
TEST_EQ_STR (dirs[2], "/etc/xdg/upstart");
287
351
TEST_EQ_STR (dirs[3], SYSTEM_USERCONFDIR);
288
352
TEST_EQ (dirs[4], NULL);
357
path = nih_sprintf (NULL, "%s/.config", dirname);
364
TEST_FEATURE ("with some invalid XDG_CONFIG_DIRS");
365
TEST_EQ (setenv ("XDG_CONFIG_DIRS", "/etc/xdg/xdg-subdir:../haha:/etc/xdg", 1), 0);
369
expected = nih_str_array_new (NULL);
370
path = NIH_MUST (nih_sprintf (NULL, "%s/.config/upstart", dirname));
371
assert (nih_str_array_add (&expected, NULL, NULL, path));
373
path = NIH_MUST (nih_sprintf (NULL, "%s/.init", dirname));
374
assert (nih_str_array_add (&expected, NULL, NULL, path));
379
dirs = get_user_upstart_dirs ();
381
if (test_alloc_failed) {
382
TEST_EQ_P (dirs, NULL);
384
TEST_EQ_STR (dirs[0], expected[0]);
385
_test_dir_created (expected[0]);
386
TEST_EQ_STR (dirs[1], expected[1]);
387
TEST_EQ_STR (dirs[2], "/etc/xdg/xdg-subdir/upstart");
388
TEST_EQ_STR (dirs[3], "/etc/xdg/upstart");
389
TEST_EQ_STR (dirs[4], SYSTEM_USERCONFDIR);
390
TEST_EQ (dirs[5], NULL);
395
path = nih_sprintf (NULL, "%s/.config", dirname);
401
TEST_EQ (rmdir (dirname), 0);
405
test_get_user_log_dir (void)
407
char dirname[PATH_MAX];
411
TEST_FUNCTION ("get_user_log_dir");
412
TEST_FEATURE ("with HOME set");
413
TEST_FILENAME (dirname);
414
TEST_EQ (setenv ("HOME", dirname, 1), 0);
415
TEST_EQ (mkdir (dirname, 0755), 0);
416
TEST_EQ (unsetenv ("XDG_CACHE_HOME"), 0);
418
expected = nih_sprintf (NULL, "%s/.cache/upstart", dirname);
421
path = get_user_log_dir ();
422
if (test_alloc_failed) {
423
TEST_EQ_P (path, NULL);
425
TEST_EQ_STR (path, expected);
426
_test_dir_created (expected);
432
path = nih_sprintf (NULL, "%s/.cache", dirname);