]> git.proxmox.com Git - libgit2.git/blob - tests/path/dotgit.c
2f9fcae4fc8e7a9786847ba81e9f3925c504b904
[libgit2.git] / tests / path / dotgit.c
1 #include "clar_libgit2.h"
2 #include "path.h"
3
4 static char *gitmodules_altnames[] = {
5 ".gitmodules",
6
7 /*
8 * Equivalent to the ".git\u200cmodules" string from git but hard-coded
9 * as a UTF-8 sequence
10 */
11 ".git\xe2\x80\x8cmodules",
12
13 ".Gitmodules",
14 ".gitmoduleS",
15
16 ".gitmodules ",
17 ".gitmodules.",
18 ".gitmodules ",
19 ".gitmodules. ",
20 ".gitmodules .",
21 ".gitmodules..",
22 ".gitmodules ",
23 ".gitmodules. ",
24 ".gitmodules . ",
25 ".gitmodules .",
26
27 ".Gitmodules ",
28 ".Gitmodules.",
29 ".Gitmodules ",
30 ".Gitmodules. ",
31 ".Gitmodules .",
32 ".Gitmodules..",
33 ".Gitmodules ",
34 ".Gitmodules. ",
35 ".Gitmodules . ",
36 ".Gitmodules .",
37
38 "GITMOD~1",
39 "gitmod~1",
40 "GITMOD~2",
41 "gitmod~3",
42 "GITMOD~4",
43
44 "GITMOD~1 ",
45 "gitmod~2.",
46 "GITMOD~3 ",
47 "gitmod~4. ",
48 "GITMOD~1 .",
49 "gitmod~2 ",
50 "GITMOD~3. ",
51 "gitmod~4 . ",
52
53 "GI7EBA~1",
54 "gi7eba~9",
55
56 "GI7EB~10",
57 "GI7EB~11",
58 "GI7EB~99",
59 "GI7EB~10",
60 "GI7E~100",
61 "GI7E~101",
62 "GI7E~999",
63 "~1000000",
64 "~9999999",
65 };
66
67 static char *gitmodules_not_altnames[] = {
68 ".gitmodules x",
69 ".gitmodules .x",
70
71 " .gitmodules",
72
73 "..gitmodules",
74
75 "gitmodules",
76
77 ".gitmodule",
78
79 ".gitmodules x ",
80 ".gitmodules .x",
81
82 "GI7EBA~",
83 "GI7EBA~0",
84 "GI7EBA~~1",
85 "GI7EBA~X",
86 "Gx7EBA~1",
87 "GI7EBX~1",
88
89 "GI7EB~1",
90 "GI7EB~01",
91 "GI7EB~1",
92 };
93
94 void test_path_dotgit__dotgit_modules(void)
95 {
96 size_t i;
97
98 cl_assert_equal_i(1, git_path_is_gitfile(".gitmodules", strlen(".gitmodules"), GIT_PATH_GITFILE_GITMODULES, GIT_PATH_FS_GENERIC));
99 cl_assert_equal_i(1, git_path_is_gitfile(".git\xe2\x80\x8cmodules", strlen(".git\xe2\x80\x8cmodules"), GIT_PATH_GITFILE_GITMODULES, GIT_PATH_FS_GENERIC));
100
101 for (i = 0; i < ARRAY_SIZE(gitmodules_altnames); i++) {
102 const char *name = gitmodules_altnames[i];
103 if (!git_path_is_gitfile(name, strlen(name), GIT_PATH_GITFILE_GITMODULES, GIT_PATH_FS_GENERIC))
104 cl_fail(name);
105 }
106
107 for (i = 0; i < ARRAY_SIZE(gitmodules_not_altnames); i++) {
108 const char *name = gitmodules_not_altnames[i];
109 if (git_path_is_gitfile(name, strlen(name), GIT_PATH_GITFILE_GITMODULES, GIT_PATH_FS_GENERIC))
110 cl_fail(name);
111 }
112 }
113
114 void test_path_dotgit__dotgit_modules_symlink(void)
115 {
116 cl_assert_equal_b(true, git_path_validate(NULL, ".gitmodules", 0, GIT_PATH_REJECT_DOT_GIT_HFS|GIT_PATH_REJECT_DOT_GIT_NTFS));
117 cl_assert_equal_b(false, git_path_validate(NULL, ".gitmodules", S_IFLNK, GIT_PATH_REJECT_DOT_GIT_HFS));
118 cl_assert_equal_b(false, git_path_validate(NULL, ".gitmodules", S_IFLNK, GIT_PATH_REJECT_DOT_GIT_NTFS));
119 cl_assert_equal_b(false, git_path_validate(NULL, ".gitmodules . .::$DATA", S_IFLNK, GIT_PATH_REJECT_DOT_GIT_NTFS));
120 }