]>
git.proxmox.com Git - libgit2.git/blob - tests/filter/query.c
1 #include "clar_libgit2.h"
2 #include "git2/sys/filter.h"
5 static git_repository
*g_repo
= NULL
;
7 void test_filter_query__initialize(void)
9 g_repo
= cl_git_sandbox_init("crlf");
11 cl_git_mkfile("crlf/.gitattributes",
14 "*.crlf text eol=crlf\n"
16 "*.binident binary ident\n"
17 "*.ident text ident\n"
18 "*.identcrlf ident text eol=crlf\n"
19 "*.identlf ident text eol=lf\n"
20 "*.custom custom ident text\n");
23 void test_filter_query__cleanup(void)
25 cl_git_sandbox_cleanup();
28 static int filter_for(const char *filename
, const char *filter
)
33 cl_git_pass(git_filter_list_load(
34 &fl
, g_repo
, NULL
, filename
, GIT_FILTER_TO_WORKTREE
, 0));
35 filtered
= git_filter_list_contains(fl
, filter
);
36 git_filter_list_free(fl
);
41 void test_filter_query__filters(void)
43 cl_assert_equal_i(1, filter_for("text.txt", "crlf"));
44 cl_assert_equal_i(0, filter_for("binary.bin", "crlf"));
46 cl_assert_equal_i(1, filter_for("foo.lf", "crlf"));
47 cl_assert_equal_i(0, filter_for("foo.lf", "ident"));
49 cl_assert_equal_i(1, filter_for("id.ident", "crlf"));
50 cl_assert_equal_i(1, filter_for("id.ident", "ident"));
52 cl_assert_equal_i(0, filter_for("id.binident", "crlf"));
53 cl_assert_equal_i(1, filter_for("id.binident", "ident"));
56 void test_filter_query__autocrlf_true_implies_crlf(void)
58 cl_repo_set_bool(g_repo
, "core.autocrlf", true);
59 cl_assert_equal_i(1, filter_for("not_in_gitattributes", "crlf"));
60 cl_assert_equal_i(1, filter_for("foo.txt", "crlf"));
61 cl_assert_equal_i(0, filter_for("foo.bin", "crlf"));
62 cl_assert_equal_i(1, filter_for("foo.lf", "crlf"));
64 cl_repo_set_bool(g_repo
, "core.autocrlf", false);
65 cl_assert_equal_i(0, filter_for("not_in_gitattributes", "crlf"));
66 cl_assert_equal_i(1, filter_for("foo.txt", "crlf"));
67 cl_assert_equal_i(0, filter_for("foo.bin", "crlf"));
68 cl_assert_equal_i(1, filter_for("foo.lf", "crlf"));
71 void test_filter_query__unknown(void)
73 cl_assert_equal_i(1, filter_for("foo.custom", "crlf"));
74 cl_assert_equal_i(1, filter_for("foo.custom", "ident"));
75 cl_assert_equal_i(0, filter_for("foo.custom", "custom"));
78 void test_filter_query__custom(void)
80 git_filter custom
= { GIT_FILTER_VERSION
};
82 cl_git_pass(git_filter_register(
83 "custom", &custom
, 42));
85 cl_assert_equal_i(1, filter_for("foo.custom", "crlf"));
86 cl_assert_equal_i(1, filter_for("foo.custom", "ident"));
87 cl_assert_equal_i(1, filter_for("foo.custom", "custom"));
89 git_filter_unregister("custom");