summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@microsoft.com>2015-05-12 13:52:47 -0400
committerEdward Thomson <ethomson@microsoft.com>2015-05-12 14:36:41 -0400
commitadad518129818399f5d98676784ea8c9396ac30e (patch)
tree1ee0530f1ac35cec223885a4c8bc099adc30deed
parentf85a9c2767b43f35904bf39858488a4b7bc304e8 (diff)
downloadlibgit2-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.c32
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");
+ }
+}
+