diff options
author | Eric P <eric@kastelo.net> | 2023-04-20 15:00:55 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-20 15:00:55 +0200 |
commit | 9f131eee6bcf3f82e3d2d1cb173c050386bf886e (patch) | |
tree | 5ddf615d78c7f26fa1096d6cdd07530525760812 | |
parent | 09efe03e1dfd64f7b925266a7d743b19ae585b06 (diff) |
lib/ignore: Properly handle non-existing included ignore-files (fixes #8764) (#8874)
In the sequence of loading ignores, the error File Does Not Exist is not being considered a fatal error, since the .stignore file is allowed to not exist. However, included ignore files also tossed that same error in case those do not exist while in those cases it's considered an error and it should lead to the folder stopping. Changing the error when opening an included ignore file to something other than the regular does fix this issue, as in it now works again as described in the Documentation.
-rw-r--r-- | lib/ignore/ignore.go | 10 | ||||
-rw-r--r-- | lib/ignore/ignore_test.go | 5 |
2 files changed, 14 insertions, 1 deletions
diff --git a/lib/ignore/ignore.go b/lib/ignore/ignore.go index a26e73c7bf..01960f3dd0 100644 --- a/lib/ignore/ignore.go +++ b/lib/ignore/ignore.go @@ -406,11 +406,19 @@ func loadParseIncludeFile(filesystem fs.Filesystem, file string, cd ChangeDetect } if cd.Seen(filesystem, file) { - return nil, parseError(fmt.Errorf("multiple include of ignore file %q", file)) + return nil, errors.New("multiple include") } fd, info, err := loadIgnoreFile(filesystem, file) if err != nil { + // isNotExist is considered "ok" in a sense of that a folder doesn't have to act + // upon it. This is because it is allowed for .stignore to not exist. However, + // included ignore files are not allowed to be missing and these errors should be + // acted upon on. So we don't perserve the error chain here and manually set an + // error instead, if the file is missing. + if fs.IsNotExist(err) { + err = errors.New("file not found") + } return nil, err } defer fd.Close() diff --git a/lib/ignore/ignore_test.go b/lib/ignore/ignore_test.go index 231b926e93..cf1b590a6e 100644 --- a/lib/ignore/ignore_test.go +++ b/lib/ignore/ignore_test.go @@ -197,6 +197,11 @@ func TestBadPatterns(t *testing.T) { if !IsParseError(err) { t.Error("Should have been a parse error:", err) } + if strings.HasPrefix(pat, "#include") { + if fs.IsNotExist(err) { + t.Error("Includes should not toss a regular isNotExist error") + } + } } } |