|
8 | 8 |
|
9 | 9 | static git_buf path = GIT_BUF_INIT; |
10 | 10 |
|
| 11 | +#define LONG_FILENAME "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.txt" |
| 12 | + |
11 | 13 | void test_win32_longpath__initialize(void) |
12 | 14 | { |
13 | 15 | #ifdef GIT_WIN32 |
@@ -52,11 +54,39 @@ void test_win32_longpath__workdir_path_validated(void) |
52 | 54 | cl_git_pass(git_repository_workdir_path(&out, repo, "a.txt")); |
53 | 55 |
|
54 | 56 | /* even if the repo path is a drive letter, this is too long */ |
55 | | - cl_git_fail(git_repository_workdir_path(&out, repo, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.txt")); |
| 57 | + cl_git_fail(git_repository_workdir_path(&out, repo, LONG_FILENAME)); |
56 | 58 | cl_assert(git__prefixcmp(git_error_last()->message, "path too long") == 0); |
57 | 59 |
|
58 | 60 | cl_repo_set_bool(repo, "core.longpaths", true); |
59 | 61 | cl_git_pass(git_repository_workdir_path(&out, repo, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.txt")); |
| 62 | + cl_git_pass(git_repository_workdir_path(&out, repo, LONG_FILENAME)); |
| 63 | + git_buf_dispose(&out); |
| 64 | +#endif |
| 65 | +} |
| 66 | + |
| 67 | +void test_win32_longpath__status_and_add(void) |
| 68 | +{ |
| 69 | +#ifdef GIT_WIN32 |
| 70 | + git_repository *repo = cl_git_sandbox_init("testrepo"); |
| 71 | + git_index *index; |
| 72 | + git_buf out = GIT_BUF_INIT; |
| 73 | + unsigned int status_flags; |
| 74 | + |
| 75 | + cl_repo_set_bool(repo, "core.longpaths", true); |
| 76 | + cl_git_pass(git_repository_workdir_path(&out, repo, LONG_FILENAME)); |
| 77 | + |
| 78 | + cl_git_rewritefile(out.ptr, "This is a long path.\r\n"); |
| 79 | + |
| 80 | + cl_git_pass(git_status_file(&status_flags, repo, LONG_FILENAME)); |
| 81 | + cl_assert_equal_i(GIT_STATUS_WT_NEW, status_flags); |
| 82 | + |
| 83 | + cl_git_pass(git_repository_index(&index, repo)); |
| 84 | + cl_git_pass(git_index_add_bypath(index, LONG_FILENAME)); |
| 85 | + |
| 86 | + cl_git_pass(git_status_file(&status_flags, repo, LONG_FILENAME)); |
| 87 | + cl_assert_equal_i(GIT_STATUS_INDEX_NEW, status_flags); |
| 88 | + |
| 89 | + git_index_free(index); |
60 | 90 | git_buf_dispose(&out); |
61 | 91 | #endif |
62 | 92 | } |
0 commit comments