mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-29 06:20:56 +00:00
diff::workdir: ensure ignored files are not returned
Ensure that a diff with the workdir is not erroneously returning directories.
This commit is contained in:
parent
049dbf42f5
commit
92f7d32b59
@ -2054,3 +2054,46 @@ void test_diff_workdir__only_writes_index_when_necessary(void)
|
||||
git_index_free(index);
|
||||
}
|
||||
|
||||
void test_diff_workdir__to_index_pathlist(void)
|
||||
{
|
||||
git_index *index;
|
||||
git_diff *diff;
|
||||
git_diff_options opts = GIT_DIFF_OPTIONS_INIT;
|
||||
git_vector pathlist = GIT_VECTOR_INIT;
|
||||
|
||||
git_vector_insert(&pathlist, "foobar/asdf");
|
||||
git_vector_insert(&pathlist, "subdir/asdf");
|
||||
git_vector_insert(&pathlist, "ignored/asdf");
|
||||
|
||||
g_repo = cl_git_sandbox_init("status");
|
||||
|
||||
cl_git_mkfile("status/.gitignore", ".gitignore\n" "ignored/\n");
|
||||
|
||||
cl_must_pass(p_mkdir("status/foobar", 0777));
|
||||
cl_git_mkfile("status/foobar/one", "one\n");
|
||||
|
||||
cl_must_pass(p_mkdir("status/ignored", 0777));
|
||||
cl_git_mkfile("status/ignored/one", "one\n");
|
||||
cl_git_mkfile("status/ignored/two", "two\n");
|
||||
cl_git_mkfile("status/ignored/three", "three\n");
|
||||
|
||||
cl_git_pass(git_repository_index(&index, g_repo));
|
||||
|
||||
opts.flags = GIT_DIFF_INCLUDE_IGNORED;
|
||||
opts.pathspec.strings = pathlist.contents;
|
||||
opts.pathspec.count = pathlist.length;
|
||||
|
||||
cl_git_pass(git_diff_index_to_workdir(&diff, g_repo, index, &opts));
|
||||
cl_assert_equal_i(0, git_diff_num_deltas(diff));
|
||||
git_diff_free(diff);
|
||||
|
||||
opts.flags |= GIT_DIFF_DISABLE_PATHSPEC_MATCH;
|
||||
|
||||
cl_git_pass(git_diff_index_to_workdir(&diff, g_repo, index, &opts));
|
||||
cl_assert_equal_i(0, git_diff_num_deltas(diff));
|
||||
git_diff_free(diff);
|
||||
|
||||
git_index_free(index);
|
||||
git_vector_free(&pathlist);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user