diff options
| author | Edward Thomson <ethomson@edwardthomson.com> | 2015-10-21 13:43:22 -0700 |
|---|---|---|
| committer | Edward Thomson <ethomson@edwardthomson.com> | 2015-10-21 13:43:22 -0700 |
| commit | 44b1e3e390c85199186d6178bd942bf9e7c4bef1 (patch) | |
| tree | 4ba8df690b30cc4d4176a7861fca1a6f69d6e4cd /tests | |
| parent | f555f7cd7068c1788f050666c0641a884967b12d (diff) | |
| parent | 8c7c5fa585c6a63dc8186febd6e032880655e85e (diff) | |
| download | libgit2-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.c | 40 |
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"); +} |
