Skip to content

Commit 5b969df

Browse files
committed
isolate userconfig test fixtures
1 parent fef114d commit 5b969df

1 file changed

Lines changed: 21 additions & 6 deletions

File tree

‎tests/test_userconfig.c‎

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include "../src/foundation/compat_fs.h"
99
#include "../src/foundation/platform.h"
1010
#include "test_framework.h"
11+
#include "test_helpers.h"
1112
#include "discover/discover.h"
1213
#include "discover/userconfig.h"
1314

@@ -17,6 +18,8 @@
1718

1819
/* ── Helpers ─────────────────────────────────────────────────────── */
1920

21+
static char userconfig_tmpdir[512];
22+
2023
/* Write a JSON file to path. Returns 0 on success. */
2124
static int write_json(const char *path, const char *json) {
2225
FILE *f = fopen(path, "w");
@@ -33,7 +36,7 @@ static int write_json(const char *path, const char *json) {
3336
TEST(userconfig_project_basic) {
3437
/* Write a .codebase-memory.json in a temp dir */
3538
char dir[256];
36-
snprintf(dir, sizeof(dir), "%s/uctest_proj_basic", cbm_tmpdir());
39+
snprintf(dir, sizeof(dir), "%s/uctest_proj_basic", userconfig_tmpdir);
3740
cbm_mkdir_p(dir, 0755); /* from compat_fs.h via compat.h */
3841

3942
char proj[512];
@@ -60,7 +63,7 @@ TEST(userconfig_global_via_env) {
6063
/* Point config dir to a temp dir via the platform-appropriate env var:
6164
* XDG_CONFIG_HOME on Linux/macOS, APPDATA on Windows. */
6265
char cfg_dir[256];
63-
snprintf(cfg_dir, sizeof(cfg_dir), "%s/uctest_global_xdg", cbm_tmpdir());
66+
snprintf(cfg_dir, sizeof(cfg_dir), "%s/uctest_global_xdg", userconfig_tmpdir);
6467

6568
char app_dir[512];
6669
snprintf(app_dir, sizeof(app_dir), "%s/codebase-memory-mcp", cfg_dir);
@@ -103,7 +106,7 @@ TEST(userconfig_global_via_env) {
103106
TEST(userconfig_project_wins_over_global) {
104107
/* Global says .xyz → python; project says .xyz → rust */
105108
char xdg_dir[256];
106-
snprintf(xdg_dir, sizeof(xdg_dir), "%s/uctest_priority_xdg", cbm_tmpdir());
109+
snprintf(xdg_dir, sizeof(xdg_dir), "%s/uctest_priority_xdg", userconfig_tmpdir);
107110

108111
char app_dir[512];
109112
snprintf(app_dir, sizeof(app_dir), "%s/codebase-memory-mcp", xdg_dir);
@@ -116,7 +119,7 @@ TEST(userconfig_project_wins_over_global) {
116119
0);
117120

118121
char proj_dir[256];
119-
snprintf(proj_dir, sizeof(proj_dir), "%s/uctest_priority_proj", cbm_tmpdir());
122+
snprintf(proj_dir, sizeof(proj_dir), "%s/uctest_priority_proj", userconfig_tmpdir);
120123
cbm_mkdir_p(proj_dir, 0755);
121124

122125
char proj_path[512];
@@ -143,7 +146,7 @@ TEST(userconfig_project_wins_over_global) {
143146

144147
TEST(userconfig_unknown_lang_skipped) {
145148
char dir[256];
146-
snprintf(dir, sizeof(dir), "%s/uctest_unknown_lang", cbm_tmpdir());
149+
snprintf(dir, sizeof(dir), "%s/uctest_unknown_lang", userconfig_tmpdir);
147150
cbm_mkdir_p(dir, 0755);
148151

149152
char proj[512];
@@ -185,7 +188,7 @@ TEST(userconfig_integration_override) {
185188
* respect the override. We map ".blade.php" → PHP, which is not in the
186189
* built-in table. */
187190
char dir[256];
188-
snprintf(dir, sizeof(dir), "%s/uctest_integ", cbm_tmpdir());
191+
snprintf(dir, sizeof(dir), "%s/uctest_integ", userconfig_tmpdir);
189192
cbm_mkdir_p(dir, 0755);
190193

191194
char proj[512];
@@ -223,11 +226,23 @@ TEST(userconfig_free_null) {
223226
/* ── Suite ──────────────────────────────────────────────────────── */
224227

225228
SUITE(userconfig) {
229+
snprintf(userconfig_tmpdir, sizeof(userconfig_tmpdir), "%s/cbm-userconfig-XXXXXX",
230+
cbm_tmpdir());
231+
if (!cbm_mkdtemp(userconfig_tmpdir)) {
232+
printf(" FAIL: could not create userconfig fixture root\n");
233+
return;
234+
}
235+
226236
RUN_TEST(userconfig_project_basic);
227237
RUN_TEST(userconfig_global_via_env);
228238
RUN_TEST(userconfig_project_wins_over_global);
229239
RUN_TEST(userconfig_unknown_lang_skipped);
230240
RUN_TEST(userconfig_missing_files_ok);
231241
RUN_TEST(userconfig_integration_override);
232242
RUN_TEST(userconfig_free_null);
243+
244+
if (th_rmtree(userconfig_tmpdir) != 0) {
245+
printf(" FAIL: could not remove userconfig fixture root\n");
246+
}
247+
userconfig_tmpdir[0] = '\0';
233248
}

0 commit comments

Comments
 (0)