X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=tests%2Fconfig%2Fconditionals.c;fp=tests%2Fconfig%2Fconditionals.c;h=0000000000000000000000000000000000000000;hb=cc43b7442ea25e6846b10718cd9b1f1972fcd2fc;hp=564719dcbcf7e897e3bea278fad07f7eb629b500;hpb=ab27e46e5f1c31d3d7b7aa560dab3bb70bd1218b;p=libgit2.git diff --git a/tests/config/conditionals.c b/tests/config/conditionals.c deleted file mode 100644 index 564719dcb..000000000 --- a/tests/config/conditionals.c +++ /dev/null @@ -1,175 +0,0 @@ -#include "clar_libgit2.h" -#include "futils.h" -#include "repository.h" - -#ifdef GIT_WIN32 -# define ROOT_PREFIX "C:" -#else -# define ROOT_PREFIX -#endif - -static git_repository *_repo; - -void test_config_conditionals__initialize(void) -{ - _repo = cl_git_sandbox_init("empty_standard_repo"); -} - -void test_config_conditionals__cleanup(void) -{ - cl_git_sandbox_cleanup(); -} - -static void assert_condition_includes(const char *keyword, const char *path, bool expected) -{ - git_buf value = GIT_BUF_INIT; - git_str buf = GIT_STR_INIT; - git_config *cfg; - - cl_git_pass(git_str_printf(&buf, "[includeIf \"%s:%s\"]\n", keyword, path)); - cl_git_pass(git_str_puts(&buf, "path = other\n")); - - cl_git_mkfile("empty_standard_repo/.git/config", buf.ptr); - cl_git_mkfile("empty_standard_repo/.git/other", "[foo]\nbar=baz\n"); - _repo = cl_git_sandbox_reopen(); - - git_str_dispose(&buf); - - cl_git_pass(git_repository_config(&cfg, _repo)); - - if (expected) { - cl_git_pass(git_config_get_string_buf(&value, cfg, "foo.bar")); - cl_assert_equal_s("baz", value.ptr); - } else { - cl_git_fail_with(GIT_ENOTFOUND, - git_config_get_string_buf(&value, cfg, "foo.bar")); - } - - git_str_dispose(&buf); - git_buf_dispose(&value); - git_config_free(cfg); -} - -static char *sandbox_path(git_str *buf, const char *suffix) -{ - char *path = p_realpath(clar_sandbox_path(), NULL); - cl_assert(path); - cl_git_pass(git_str_attach(buf, path, 0)); - cl_git_pass(git_str_joinpath(buf, buf->ptr, suffix)); - return buf->ptr; -} - -void test_config_conditionals__gitdir(void) -{ - git_str path = GIT_STR_INIT; - - assert_condition_includes("gitdir", ROOT_PREFIX "/", true); - assert_condition_includes("gitdir", "empty_stand", false); - assert_condition_includes("gitdir", "empty_stand/", false); - assert_condition_includes("gitdir", "empty_stand/.git", false); - assert_condition_includes("gitdir", "empty_stand/.git/", false); - assert_condition_includes("gitdir", "empty_stand*/", true); - assert_condition_includes("gitdir", "empty_stand*/.git", true); - assert_condition_includes("gitdir", "empty_stand*/.git/", false); - assert_condition_includes("gitdir", "empty_standard_repo", false); - assert_condition_includes("gitdir", "empty_standard_repo/", true); - assert_condition_includes("gitdir", "empty_standard_repo/.git", true); - assert_condition_includes("gitdir", "empty_standard_repo/.git/", false); - - assert_condition_includes("gitdir", "./", false); - - assert_condition_includes("gitdir", ROOT_PREFIX "/nonexistent", false); - assert_condition_includes("gitdir", ROOT_PREFIX "/empty_standard_repo", false); - assert_condition_includes("gitdir", "~/empty_standard_repo", false); - - assert_condition_includes("gitdir", sandbox_path(&path, "/"), true); - assert_condition_includes("gitdir", sandbox_path(&path, "/*"), false); - assert_condition_includes("gitdir", sandbox_path(&path, "/**"), true); - - assert_condition_includes("gitdir", sandbox_path(&path, "empty_standard_repo"), false); - assert_condition_includes("gitdir", sandbox_path(&path, "empty_standard_repo/"), true); - assert_condition_includes("gitdir", sandbox_path(&path, "empty_standard_repo/"), true); - assert_condition_includes("gitdir", sandbox_path(&path, "Empty_Standard_Repo"), false); - assert_condition_includes("gitdir", sandbox_path(&path, "Empty_Standard_Repo/"), false); - - git_str_dispose(&path); -} - -void test_config_conditionals__gitdir_i(void) -{ - git_str path = GIT_STR_INIT; - - assert_condition_includes("gitdir/i", sandbox_path(&path, "empty_standard_repo/"), true); - assert_condition_includes("gitdir/i", sandbox_path(&path, "EMPTY_STANDARD_REPO/"), true); - - git_str_dispose(&path); -} - -void test_config_conditionals__invalid_conditional_fails(void) -{ - assert_condition_includes("foobar", ".git", false); -} - -static void set_head(git_repository *repo, const char *name) -{ - cl_git_pass(git_repository_create_head(git_repository_path(repo), name)); -} - -void test_config_conditionals__onbranch(void) -{ - assert_condition_includes("onbranch", "master", true); - assert_condition_includes("onbranch", "m*", true); - assert_condition_includes("onbranch", "*", true); - assert_condition_includes("onbranch", "master/", false); - assert_condition_includes("onbranch", "foo", false); - - set_head(_repo, "foo"); - assert_condition_includes("onbranch", "master", false); - assert_condition_includes("onbranch", "foo", true); - assert_condition_includes("onbranch", "f*o", true); - - set_head(_repo, "dir/ref"); - assert_condition_includes("onbranch", "dir/ref", true); - assert_condition_includes("onbranch", "dir/", true); - assert_condition_includes("onbranch", "dir/*", true); - assert_condition_includes("onbranch", "dir/**", true); - assert_condition_includes("onbranch", "**", true); - assert_condition_includes("onbranch", "dir", false); - assert_condition_includes("onbranch", "dir*", false); - - set_head(_repo, "dir/subdir/ref"); - assert_condition_includes("onbranch", "dir/subdir/", true); - assert_condition_includes("onbranch", "dir/subdir/*", true); - assert_condition_includes("onbranch", "dir/subdir/ref", true); - assert_condition_includes("onbranch", "dir/", true); - assert_condition_includes("onbranch", "dir/**", true); - assert_condition_includes("onbranch", "**", true); - assert_condition_includes("onbranch", "dir", false); - assert_condition_includes("onbranch", "dir*", false); - assert_condition_includes("onbranch", "dir/*", false); -} - -void test_config_conditionals__empty(void) -{ - git_buf value = GIT_BUF_INIT; - git_str buf = GIT_STR_INIT; - git_config *cfg; - - cl_git_pass(git_str_puts(&buf, "[includeIf]\n")); - cl_git_pass(git_str_puts(&buf, "path = other\n")); - - cl_git_mkfile("empty_standard_repo/.git/config", buf.ptr); - cl_git_mkfile("empty_standard_repo/.git/other", "[foo]\nbar=baz\n"); - _repo = cl_git_sandbox_reopen(); - - git_str_dispose(&buf); - - cl_git_pass(git_repository_config(&cfg, _repo)); - - cl_git_fail_with(GIT_ENOTFOUND, - git_config_get_string_buf(&value, cfg, "foo.bar")); - - git_str_dispose(&buf); - git_buf_dispose(&value); - git_config_free(cfg); -}