]>
git.proxmox.com Git - libgit2.git/blob - tests/filter/query.c
6889d715bb32690352ca0e861e1aad79286babb6
1 #include "clar_libgit2.h"
2 #include "git2/sys/filter.h"
6 static git_repository
*g_repo
= NULL
;
8 void test_filter_query__initialize(void)
10 g_repo
= cl_git_sandbox_init("crlf");
12 cl_git_mkfile("crlf/.gitattributes",
15 "*.crlf text eol=crlf\n"
17 "*.binident binary ident\n"
18 "*.ident text ident\n"
19 "*.identcrlf ident text eol=crlf\n"
20 "*.identlf ident text eol=lf\n"
21 "*.custom custom ident text\n");
24 void test_filter_query__cleanup(void)
26 cl_git_sandbox_cleanup();
29 static int filter_for(const char *filename
, const char *filter
)
34 cl_git_pass(git_filter_list_load(
35 &fl
, g_repo
, NULL
, filename
, GIT_FILTER_TO_WORKTREE
, 0));
36 filtered
= git_filter_list_contains(fl
, filter
);
37 git_filter_list_free(fl
);
42 void test_filter_query__filters(void)
44 cl_assert_equal_i(1, filter_for("text.txt", "crlf"));
45 cl_assert_equal_i(0, filter_for("binary.bin", "crlf"));
47 cl_assert_equal_i(1, filter_for("foo.lf", "crlf"));
48 cl_assert_equal_i(0, filter_for("foo.lf", "ident"));
50 cl_assert_equal_i(1, filter_for("id.ident", "crlf"));
51 cl_assert_equal_i(1, filter_for("id.ident", "ident"));
53 cl_assert_equal_i(0, filter_for("id.binident", "crlf"));
54 cl_assert_equal_i(1, filter_for("id.binident", "ident"));
57 void test_filter_query__autocrlf_true_implies_crlf(void)
59 cl_repo_set_bool(g_repo
, "core.autocrlf", true);
60 cl_assert_equal_i(1, filter_for("not_in_gitattributes", "crlf"));
61 cl_assert_equal_i(1, filter_for("foo.txt", "crlf"));
62 cl_assert_equal_i(0, filter_for("foo.bin", "crlf"));
63 cl_assert_equal_i(1, filter_for("foo.lf", "crlf"));
65 cl_repo_set_bool(g_repo
, "core.autocrlf", false);
66 cl_assert_equal_i(0, filter_for("not_in_gitattributes", "crlf"));
67 cl_assert_equal_i(1, filter_for("foo.txt", "crlf"));
68 cl_assert_equal_i(0, filter_for("foo.bin", "crlf"));
69 cl_assert_equal_i(1, filter_for("foo.lf", "crlf"));
72 void test_filter_query__unknown(void)
74 cl_assert_equal_i(1, filter_for("foo.custom", "crlf"));
75 cl_assert_equal_i(1, filter_for("foo.custom", "ident"));
76 cl_assert_equal_i(0, filter_for("foo.custom", "custom"));
79 void test_filter_query__custom(void)
81 git_filter custom
= { GIT_FILTER_VERSION
};
83 cl_git_pass(git_filter_register(
84 "custom", &custom
, 42));
86 cl_assert_equal_i(1, filter_for("foo.custom", "crlf"));
87 cl_assert_equal_i(1, filter_for("foo.custom", "ident"));
88 cl_assert_equal_i(1, filter_for("foo.custom", "custom"));
90 git_filter_unregister("custom");