summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@edwardthomson.com>2015-10-21 13:43:22 -0700
committerEdward Thomson <ethomson@edwardthomson.com>2015-10-21 13:43:22 -0700
commit44b1e3e390c85199186d6178bd942bf9e7c4bef1 (patch)
tree4ba8df690b30cc4d4176a7861fca1a6f69d6e4cd /tests
parentf555f7cd7068c1788f050666c0641a884967b12d (diff)
parent8c7c5fa585c6a63dc8186febd6e032880655e85e (diff)
downloadlibgit2-44b1e3e390c85199186d6178bd942bf9e7c4bef1.tar.gz
Merge pull request #3475 from libgit2/cmn/programdata-config
config: add a ProgramData level
Diffstat (limited to 'tests')
-rw-r--r--tests/config/global.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/config/global.c b/tests/config/global.c
index b5e83fec0..1336ef6e7 100644
--- a/tests/config/global.c
+++ b/tests/config/global.c
@@ -65,3 +65,43 @@ void test_config_global__open_xdg(void)
git_config_free(xdg);
git_config_free(cfg);
}
+
+void test_config_global__open_programdata(void)
+{
+ char *programdata;
+ git_config *cfg;
+ git_repository *repo;
+ git_buf config_path = GIT_BUF_INIT;
+ git_buf var_contents = GIT_BUF_INIT;
+
+ if (!cl_getenv("GITTEST_INVASIVE_FS_STRUCTURE"))
+ cl_skip();
+
+ programdata = cl_getenv("PROGRAMDATA");
+ cl_git_pass(git_buf_printf(&config_path, "%s/Git", programdata));
+ cl_git_pass(p_mkdir(config_path.ptr, 0777));
+ cl_git_pass(git_buf_puts(&config_path, "/config"));
+
+ cl_git_pass(git_config_open_ondisk(&cfg, config_path.ptr));
+ cl_git_pass(git_config_set_string(cfg, "programdata.var", "even higher level"));
+
+ git_buf_free(&config_path);
+ git_config_free(cfg);
+
+ git_config_open_default(&cfg);
+ cl_git_pass(git_config_get_string_buf(&var_contents, cfg, "programdata.var"));
+ cl_assert_equal_s("even higher level", var_contents.ptr);
+
+ git_config_free(cfg);
+ git_buf_free(&var_contents);
+
+ cl_git_pass(git_repository_init(&repo, "./foo.git", true));
+ cl_git_pass(git_repository_config(&cfg, repo));
+ cl_git_pass(git_config_get_string_buf(&var_contents, cfg, "programdata.var"));
+ cl_assert_equal_s("even higher level", var_contents.ptr);
+
+ git_config_free(cfg);
+ git_buf_free(&var_contents);
+ git_repository_free(repo);
+ cl_fixture_cleanup("./foo.git");
+}