]>
Commit | Line | Data |
---|---|---|
6e959708 ET |
1 | #include "clar_libgit2.h" |
2 | #include "checkout_helpers.h" | |
3 | ||
4 | #include "git2/checkout.h" | |
5 | #include "repository.h" | |
6 | ||
7 | #define UTF8_BOM "\xEF\xBB\xBF" | |
8 | #define ALL_CRLF_TEXT_RAW "crlf\r\ncrlf\r\ncrlf\r\ncrlf\r\n" | |
9 | #define ALL_LF_TEXT_RAW "lf\nlf\nlf\nlf\nlf\n" | |
10 | #define MORE_CRLF_TEXT_RAW "crlf\r\ncrlf\r\nlf\ncrlf\r\ncrlf\r\n" | |
11 | #define MORE_LF_TEXT_RAW "lf\nlf\ncrlf\r\nlf\nlf\n" | |
12 | ||
4a15ea86 ET |
13 | #define ALL_LF_TEXT_AS_CRLF "lf\r\nlf\r\nlf\r\nlf\r\nlf\r\n" |
14 | #define MORE_CRLF_TEXT_AS_CRLF "crlf\r\ncrlf\r\nlf\r\ncrlf\r\ncrlf\r\n" | |
15 | #define MORE_LF_TEXT_AS_CRLF "lf\r\nlf\r\ncrlf\r\nlf\r\nlf\r\n" | |
6e959708 ET |
16 | |
17 | static git_repository *g_repo; | |
18 | ||
19 | void test_checkout_crlf__initialize(void) | |
20 | { | |
6e959708 | 21 | g_repo = cl_git_sandbox_init("crlf"); |
6e959708 ET |
22 | } |
23 | ||
24 | void test_checkout_crlf__cleanup(void) | |
25 | { | |
26 | cl_git_sandbox_cleanup(); | |
27 | } | |
28 | ||
6e959708 ET |
29 | void test_checkout_crlf__detect_crlf_autocrlf_false(void) |
30 | { | |
31 | git_checkout_opts opts = GIT_CHECKOUT_OPTS_INIT; | |
32 | opts.checkout_strategy = GIT_CHECKOUT_SAFE_CREATE; | |
33 | ||
1323c6d1 | 34 | cl_repo_set_bool(g_repo, "core.autocrlf", false); |
6e959708 ET |
35 | |
36 | git_checkout_head(g_repo, &opts); | |
37 | ||
050ab995 RB |
38 | check_file_contents("./crlf/all-lf", ALL_LF_TEXT_RAW); |
39 | check_file_contents("./crlf/all-crlf", ALL_CRLF_TEXT_RAW); | |
6e959708 ET |
40 | } |
41 | ||
42 | void test_checkout_crlf__autocrlf_false_index_size_is_unfiltered_size(void) | |
43 | { | |
44 | git_index *index; | |
45 | const git_index_entry *entry; | |
46 | git_checkout_opts opts = GIT_CHECKOUT_OPTS_INIT; | |
47 | opts.checkout_strategy = GIT_CHECKOUT_SAFE_CREATE; | |
48 | ||
1323c6d1 | 49 | cl_repo_set_bool(g_repo, "core.autocrlf", false); |
6e959708 ET |
50 | |
51 | git_checkout_head(g_repo, &opts); | |
52 | ||
53 | git_repository_index(&index, g_repo); | |
54 | ||
55 | cl_assert((entry = git_index_get_bypath(index, "all-lf", 0)) != NULL); | |
56 | cl_assert(entry->file_size == strlen(ALL_LF_TEXT_RAW)); | |
57 | ||
b8acb775 SS |
58 | cl_assert((entry = git_index_get_bypath(index, "all-crlf", 0)) != NULL); |
59 | cl_assert(entry->file_size == strlen(ALL_CRLF_TEXT_RAW)); | |
60 | ||
6e959708 ET |
61 | git_index_free(index); |
62 | } | |
63 | ||
64 | void test_checkout_crlf__detect_crlf_autocrlf_true(void) | |
65 | { | |
66 | git_checkout_opts opts = GIT_CHECKOUT_OPTS_INIT; | |
67 | opts.checkout_strategy = GIT_CHECKOUT_SAFE_CREATE; | |
68 | ||
1323c6d1 | 69 | cl_repo_set_bool(g_repo, "core.autocrlf", true); |
6e959708 ET |
70 | |
71 | git_checkout_head(g_repo, &opts); | |
72 | ||
050ab995 RB |
73 | if (GIT_EOL_NATIVE == GIT_EOL_LF) |
74 | check_file_contents("./crlf/all-lf", ALL_LF_TEXT_RAW); | |
75 | else | |
76 | check_file_contents("./crlf/all-lf", ALL_LF_TEXT_AS_CRLF); | |
77 | ||
78 | check_file_contents("./crlf/all-crlf", ALL_CRLF_TEXT_RAW); | |
6e959708 ET |
79 | } |
80 | ||
4a15ea86 ET |
81 | void test_checkout_crlf__more_lf_autocrlf_true(void) |
82 | { | |
4a15ea86 ET |
83 | git_checkout_opts opts = GIT_CHECKOUT_OPTS_INIT; |
84 | opts.checkout_strategy = GIT_CHECKOUT_SAFE_CREATE; | |
85 | ||
86 | cl_repo_set_bool(g_repo, "core.autocrlf", true); | |
87 | ||
88 | git_checkout_head(g_repo, &opts); | |
89 | ||
050ab995 RB |
90 | if (GIT_EOL_NATIVE == GIT_EOL_LF) |
91 | check_file_contents("./crlf/more-lf", MORE_LF_TEXT_RAW); | |
92 | else | |
93 | check_file_contents("./crlf/more-lf", MORE_LF_TEXT_AS_CRLF); | |
4a15ea86 ET |
94 | } |
95 | ||
96 | void test_checkout_crlf__more_crlf_autocrlf_true(void) | |
97 | { | |
4a15ea86 ET |
98 | git_checkout_opts opts = GIT_CHECKOUT_OPTS_INIT; |
99 | opts.checkout_strategy = GIT_CHECKOUT_SAFE_CREATE; | |
100 | ||
101 | cl_repo_set_bool(g_repo, "core.autocrlf", true); | |
102 | ||
103 | git_checkout_head(g_repo, &opts); | |
104 | ||
050ab995 RB |
105 | if (GIT_EOL_NATIVE == GIT_EOL_LF) |
106 | check_file_contents("./crlf/more-crlf", MORE_CRLF_TEXT_RAW); | |
107 | else | |
108 | check_file_contents("./crlf/more-crlf", MORE_CRLF_TEXT_AS_CRLF); | |
4a15ea86 ET |
109 | } |
110 | ||
111 | void test_checkout_crlf__all_crlf_autocrlf_true(void) | |
112 | { | |
4a15ea86 ET |
113 | git_checkout_opts opts = GIT_CHECKOUT_OPTS_INIT; |
114 | opts.checkout_strategy = GIT_CHECKOUT_SAFE_CREATE; | |
115 | ||
116 | cl_repo_set_bool(g_repo, "core.autocrlf", true); | |
117 | ||
118 | git_checkout_head(g_repo, &opts); | |
119 | ||
050ab995 | 120 | check_file_contents("./crlf/all-crlf", ALL_CRLF_TEXT_RAW); |
4a15ea86 ET |
121 | } |
122 | ||
6e959708 ET |
123 | void test_checkout_crlf__autocrlf_true_index_size_is_filtered_size(void) |
124 | { | |
125 | git_index *index; | |
126 | const git_index_entry *entry; | |
127 | git_checkout_opts opts = GIT_CHECKOUT_OPTS_INIT; | |
128 | opts.checkout_strategy = GIT_CHECKOUT_SAFE_CREATE; | |
129 | ||
1323c6d1 | 130 | cl_repo_set_bool(g_repo, "core.autocrlf", true); |
6e959708 ET |
131 | |
132 | git_checkout_head(g_repo, &opts); | |
133 | ||
134 | git_repository_index(&index, g_repo); | |
135 | ||
136 | cl_assert((entry = git_index_get_bypath(index, "all-lf", 0)) != NULL); | |
050ab995 RB |
137 | |
138 | if (GIT_EOL_NATIVE == GIT_EOL_LF) | |
139 | cl_assert_equal_sz(strlen(ALL_LF_TEXT_RAW), entry->file_size); | |
140 | else | |
141 | cl_assert_equal_sz(strlen(ALL_LF_TEXT_AS_CRLF), entry->file_size); | |
6e959708 | 142 | |
b8acb775 | 143 | cl_assert((entry = git_index_get_bypath(index, "all-crlf", 0)) != NULL); |
050ab995 | 144 | cl_assert_equal_sz(strlen(ALL_CRLF_TEXT_RAW), entry->file_size); |
b8acb775 | 145 | |
6e959708 ET |
146 | git_index_free(index); |
147 | } |