| #include "clar_libgit2.h" |
| #include "config_file.h" |
| #include "config.h" |
| |
| static git_config *cfg; |
| |
| void test_config_readonly__initialize(void) |
| { |
| cl_git_pass(git_config_new(&cfg)); |
| } |
| |
| void test_config_readonly__cleanup(void) |
| { |
| git_config_free(cfg); |
| cfg = NULL; |
| } |
| |
| void test_config_readonly__writing_to_readonly_fails(void) |
| { |
| git_config_backend *backend; |
| |
| cl_git_pass(git_config_file__ondisk(&backend, "global")); |
| backend->readonly = 1; |
| cl_git_pass(git_config_add_backend(cfg, backend, GIT_CONFIG_LEVEL_GLOBAL, 0)); |
| |
| cl_git_fail_with(GIT_ENOTFOUND, git_config_set_string(cfg, "foo.bar", "baz")); |
| cl_assert(!git_path_exists("global")); |
| } |
| |
| void test_config_readonly__writing_to_cfg_with_rw_precedence_succeeds(void) |
| { |
| git_config_backend *backend; |
| |
| cl_git_pass(git_config_file__ondisk(&backend, "global")); |
| backend->readonly = 1; |
| cl_git_pass(git_config_add_backend(cfg, backend, GIT_CONFIG_LEVEL_GLOBAL, 0)); |
| |
| cl_git_pass(git_config_file__ondisk(&backend, "local")); |
| cl_git_pass(git_config_add_backend(cfg, backend, GIT_CONFIG_LEVEL_LOCAL, 0)); |
| |
| cl_git_pass(git_config_set_string(cfg, "foo.bar", "baz")); |
| |
| cl_assert(git_path_exists("local")); |
| cl_assert(!git_path_exists("global")); |
| cl_git_pass(p_unlink("local")); |
| } |
| |
| void test_config_readonly__writing_to_cfg_with_ro_precedence_succeeds(void) |
| { |
| git_config_backend *backend; |
| |
| cl_git_pass(git_config_file__ondisk(&backend, "local")); |
| backend->readonly = 1; |
| cl_git_pass(git_config_add_backend(cfg, backend, GIT_CONFIG_LEVEL_LOCAL, 0)); |
| |
| cl_git_pass(git_config_file__ondisk(&backend, "global")); |
| cl_git_pass(git_config_add_backend(cfg, backend, GIT_CONFIG_LEVEL_GLOBAL, 0)); |
| |
| cl_git_pass(git_config_set_string(cfg, "foo.bar", "baz")); |
| |
| cl_assert(!git_path_exists("local")); |
| cl_assert(git_path_exists("global")); |
| cl_git_pass(p_unlink("global")); |
| } |