diff options
author | Wouter Horlings <whorlings@bouwatch.nl> | 2024-06-14 18:30:59 +0200 |
---|---|---|
committer | Wouter Horlings <whorlings@bouwatch.nl> | 2024-06-17 09:52:38 +0200 |
commit | c127d1b355353b41e5610cc4c5c6d561e905118a (patch) | |
tree | 467c868ec726445c4c0bb414d4f72b4d825f06e2 /plumbing/format/gitignore/dir_test.go | |
parent | 76e154a1aa87a231766b62798529c073068d3345 (diff) | |
download | go-git-c127d1b355353b41e5610cc4c5c6d561e905118a.tar.gz |
plumbing: gitignore, Fix loading of ignored .gitignore files.
Stop loading .gitignore files from ignored directories, as this can
cause files to be included that should not be.
See https://git-scm.com/docs/gitignore#_pattern_format
Diffstat (limited to 'plumbing/format/gitignore/dir_test.go')
-rw-r--r-- | plumbing/format/gitignore/dir_test.go | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/plumbing/format/gitignore/dir_test.go b/plumbing/format/gitignore/dir_test.go index 465c571..ba8ad80 100644 --- a/plumbing/format/gitignore/dir_test.go +++ b/plumbing/format/gitignore/dir_test.go @@ -44,6 +44,8 @@ func (s *MatcherSuite) SetUpTest(c *C) { c.Assert(err, IsNil) _, err = f.Write([]byte("ignore.crlf\r\n")) c.Assert(err, IsNil) + _, err = f.Write([]byte("ignore_dir\n")) + c.Assert(err, IsNil) err = f.Close() c.Assert(err, IsNil) @@ -56,6 +58,17 @@ func (s *MatcherSuite) SetUpTest(c *C) { err = f.Close() c.Assert(err, IsNil) + err = fs.MkdirAll("ignore_dir", os.ModePerm) + c.Assert(err, IsNil) + f, err = fs.Create("ignore_dir/.gitignore") + c.Assert(err, IsNil) + _, err = f.Write([]byte("!file\n")) + c.Assert(err, IsNil) + _, err = fs.Create("ignore_dir/file") + c.Assert(err, IsNil) + err = f.Close() + c.Assert(err, IsNil) + err = fs.MkdirAll("another", os.ModePerm) c.Assert(err, IsNil) err = fs.MkdirAll("exclude.crlf", os.ModePerm) @@ -267,12 +280,13 @@ func (s *MatcherSuite) SetUpTest(c *C) { func (s *MatcherSuite) TestDir_ReadPatterns(c *C) { checkPatterns := func(ps []Pattern) { - c.Assert(ps, HasLen, 6) + c.Assert(ps, HasLen, 7) m := NewMatcher(ps) c.Assert(m.Match([]string{"exclude.crlf"}, true), Equals, true) c.Assert(m.Match([]string{"ignore.crlf"}, true), Equals, true) c.Assert(m.Match([]string{"vendor", "gopkg.in"}, true), Equals, true) + c.Assert(m.Match([]string{"ignore_dir", "file"}, false), Equals, true) c.Assert(m.Match([]string{"vendor", "github.com"}, true), Equals, false) c.Assert(m.Match([]string{"multiple", "sub", "ignores", "first", "ignore_dir"}, true), Equals, true) c.Assert(m.Match([]string{"multiple", "sub", "ignores", "second", "ignore_dir"}, true), Equals, true) |