summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@edwardthomson.com>2023-01-23 16:23:37 +0000
committerEdward Thomson <ethomson@edwardthomson.com>2023-02-09 12:10:40 +0000
commitff67b5e11724b075d145931aa6ac2c8817d791e2 (patch)
tree07f8e51bf0d0a232912ae66dad0c4ff2bffe7d92 /tests
parentf32ec999b0dfcef6ac53afb754f21c5a758057a8 (diff)
downloadlibgit2-ff67b5e11724b075d145931aa6ac2c8817d791e2.tar.gz
tests: use a dummy homedir
Use a dummy home directory for tests to avoid user data leaking into test execution.
Diffstat (limited to 'tests')
-rw-r--r--tests/clar/clar_libgit2.c18
-rw-r--r--tests/clar/clar_libgit2.h1
-rw-r--r--tests/clar/main.c1
3 files changed, 20 insertions, 0 deletions
diff --git a/tests/clar/clar_libgit2.c b/tests/clar/clar_libgit2.c
index cc953915d..312e12103 100644
--- a/tests/clar/clar_libgit2.c
+++ b/tests/clar/clar_libgit2.c
@@ -623,6 +623,24 @@ void cl_fake_globalconfig(git_str *out)
git_str_dispose(&path);
}
+void cl_sandbox_set_homedir(const char *home)
+{
+ git_str path = GIT_STR_INIT;
+
+ if (home) {
+ git_libgit2_opts(GIT_OPT_SET_HOMEDIR, home);
+ } else {
+ git_str_joinpath(&path, clar_sandbox_path(), "__home");
+
+ if (!git_fs_path_exists(path.ptr))
+ cl_must_pass(p_mkdir(path.ptr, 0777));
+
+ git_libgit2_opts(GIT_OPT_SET_HOMEDIR, path.ptr);
+ }
+
+ git_str_dispose(&path);
+}
+
void cl_sandbox_set_search_path_defaults(void)
{
git_str path = GIT_STR_INIT;
diff --git a/tests/clar/clar_libgit2.h b/tests/clar/clar_libgit2.h
index 87f1f9bd9..84405d21c 100644
--- a/tests/clar/clar_libgit2.h
+++ b/tests/clar/clar_libgit2.h
@@ -249,6 +249,7 @@ void cl_fake_homedir_cleanup(void *);
void cl_fake_globalconfig(git_str *);
void cl_fake_globalconfig_cleanup(void *);
+void cl_sandbox_set_homedir(const char *);
void cl_sandbox_set_search_path_defaults(void);
void cl_sandbox_disable_ownership_validation(void);
diff --git a/tests/clar/main.c b/tests/clar/main.c
index d879073a8..e3f4fe740 100644
--- a/tests/clar/main.c
+++ b/tests/clar/main.c
@@ -25,6 +25,7 @@ int main(int argc, char *argv[])
}
cl_global_trace_register();
+ cl_sandbox_set_homedir(getenv("CLAR_HOMEDIR"));
cl_sandbox_set_search_path_defaults();
cl_sandbox_disable_ownership_validation();