diff options
author | Edward Thomson <ethomson@edwardthomson.com> | 2023-01-23 16:23:37 +0000 |
---|---|---|
committer | Edward Thomson <ethomson@edwardthomson.com> | 2023-02-09 12:10:40 +0000 |
commit | ff67b5e11724b075d145931aa6ac2c8817d791e2 (patch) | |
tree | 07f8e51bf0d0a232912ae66dad0c4ff2bffe7d92 | |
parent | f32ec999b0dfcef6ac53afb754f21c5a758057a8 (diff) | |
download | libgit2-ff67b5e11724b075d145931aa6ac2c8817d791e2.tar.gz |
tests: use a dummy homedir
Use a dummy home directory for tests to avoid user data leaking into
test execution.
-rw-r--r-- | tests/clar/clar_libgit2.c | 18 | ||||
-rw-r--r-- | tests/clar/clar_libgit2.h | 1 | ||||
-rw-r--r-- | tests/clar/main.c | 1 |
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(); |