diff options
author | Edward Thomson <ethomson@microsoft.com> | 2015-05-12 13:52:47 -0400 |
---|---|---|
committer | Edward Thomson <ethomson@microsoft.com> | 2015-05-12 14:36:41 -0400 |
commit | adad518129818399f5d98676784ea8c9396ac30e (patch) | |
tree | 1ee0530f1ac35cec223885a4c8bc099adc30deed | |
parent | f85a9c2767b43f35904bf39858488a4b7bc304e8 (diff) | |
download | libgit2-adad518129818399f5d98676784ea8c9396ac30e.tar.gz |
attr: regression tests for ignore matching
Ensure that when examining a .gitignore in a subdirectory, we do not
erroneously apply the paths contained therein to the root of the
repository. (Fixed in c02a0e4).
-rw-r--r-- | tests/attr/ignore.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/attr/ignore.c b/tests/attr/ignore.c index aa5b87098..1f4080084 100644 --- a/tests/attr/ignore.c +++ b/tests/attr/ignore.c @@ -191,3 +191,35 @@ void test_attr_ignore__expand_tilde_to_homedir(void) assert_is_ignored(false, "example.global_with_tilde"); } + +/* Ensure that the .gitignore in the subdirectory only affects + * items in the subdirectory. */ +void test_attr_ignore__gitignore_in_subdir(void) +{ + cl_git_rmfile("attr/.gitignore"); + + cl_must_pass(p_mkdir("attr/dir1", 0777)); + cl_must_pass(p_mkdir("attr/dir1/dir2", 0777)); + cl_must_pass(p_mkdir("attr/dir1/dir2/dir3", 0777)); + + cl_git_mkfile("attr/dir1/dir2/dir3/.gitignore", "dir1/\ndir1/subdir/"); + + assert_is_ignored(false, "dir1/file"); + assert_is_ignored(false, "dir1/dir2/file"); + assert_is_ignored(false, "dir1/dir2/dir3/file"); + assert_is_ignored(false, "dir1/dir2/dir3/dir1"); + assert_is_ignored(true, "dir1/dir2/dir3/dir1/file"); + assert_is_ignored(true, "dir1/dir2/dir3/dir1/subdir/foo"); + + if (cl_repo_get_bool(g_repo, "core.ignorecase")) { + cl_git_mkfile("attr/dir1/dir2/dir3/.gitignore", "DiR1/\nDiR1/subdir/\n"); + + assert_is_ignored(false, "dir1/file"); + assert_is_ignored(false, "dir1/dir2/file"); + assert_is_ignored(false, "dir1/dir2/dir3/file"); + assert_is_ignored(false, "dir1/dir2/dir3/dir1"); + assert_is_ignored(true, "dir1/dir2/dir3/dir1/file"); + assert_is_ignored(true, "dir1/dir2/dir3/dir1/subdir/foo"); + } +} + |