Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/libgit2.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Martín Nieto <cmn@dwim.me>2015-10-20 18:42:42 +0300
committerCarlos Martín Nieto <cmn@dwim.me>2015-10-21 16:11:18 +0300
commit8c7c5fa585c6a63dc8186febd6e032880655e85e (patch)
tree4fcfb2caf1ef82127605f03b2073ac4e75a561c8 /tests/config
parent4280fabb9f79df6c4d95b1f08b97a03874b167eb (diff)
config: add a ProgramData level
This is where portable git stores the global configuration which we can use to adhere to it even though git isn't quite installed on the system.
Diffstat (limited to 'tests/config')
-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");
+}