diff options
author | bep <bjorn.erik.pedersen@gmail.com> | 2015-06-03 18:54:30 +0200 |
---|---|---|
committer | bep <bjorn.erik.pedersen@gmail.com> | 2015-06-03 18:54:15 +0200 |
commit | beeae6ab69b0cbb4daba7a1044308bd157df77ab (patch) | |
tree | 410482d3812a80e56d486b6c8b07ef05fb954a6c | |
parent | beaa1b3aad578ebbbdf426321ed1758eb1068946 (diff) |
Add some tests for IgnoreFiles
And log error on invalid regexp.
See #1189
-rw-r--r-- | helpers/general.go | 4 | ||||
-rw-r--r-- | source/content_directory_test.go | 40 | ||||
-rw-r--r-- | source/filesystem.go | 7 |
3 files changed, 33 insertions, 18 deletions
diff --git a/helpers/general.go b/helpers/general.go index 908751da0..540fb4332 100644 --- a/helpers/general.go +++ b/helpers/general.go @@ -198,12 +198,12 @@ func NewDistinctErrorLogger() *DistinctErrorLogger { } // Avoid spamming the logs with errors -var deprecatedLogger = NewDistinctErrorLogger() +var DistinctErrorLog = NewDistinctErrorLogger() // Deprecated logs ERROR logs about a deprecation, but only once for a given set of arguments' values. func Deprecated(object, item, alternative string) { // deprecatedLogger.Printf("%s's %s is deprecated and will be removed in Hugo %s. Use %s instead.", object, item, NextHugoReleaseVersion(), alternative) - deprecatedLogger.Printf("%s's %s is deprecated and will be removed VERY SOON. Use %s instead.", object, item, alternative) + DistinctErrorLog.Printf("%s's %s is deprecated and will be removed VERY SOON. Use %s instead.", object, item, alternative) } diff --git a/source/content_directory_test.go b/source/content_directory_test.go index 8f0b21edf..3f1369c33 100644 --- a/source/content_directory_test.go +++ b/source/content_directory_test.go @@ -1,29 +1,41 @@ package source import ( + "github.com/spf13/viper" "testing" ) func TestIgnoreDotFilesAndDirectories(t *testing.T) { + viper.Reset() + defer viper.Reset() + tests := []struct { - path string - ignore bool + path string + ignore bool + ignoreFilesRegexpes interface{} }{ - {".foobar/", true}, - {"foobar/.barfoo/", true}, - {"barfoo.md", false}, - {"foobar/barfoo.md", false}, - {"foobar/.barfoo.md", true}, - {".barfoo.md", true}, - {".md", true}, - {"", true}, - {"foobar/barfoo.md~", true}, - {".foobar/barfoo.md~", true}, - {"foobar~/barfoo.md", false}, - {"foobar/bar~foo.md", false}, + {".foobar/", true, nil}, + {"foobar/.barfoo/", true, nil}, + {"barfoo.md", false, nil}, + {"foobar/barfoo.md", false, nil}, + {"foobar/.barfoo.md", true, nil}, + {".barfoo.md", true, nil}, + {".md", true, nil}, + {"", true, nil}, + {"foobar/barfoo.md~", true, nil}, + {".foobar/barfoo.md~", true, nil}, + {"foobar~/barfoo.md", false, nil}, + {"foobar/bar~foo.md", false, nil}, + {"foobar/foo.md", true, []string{"\\.md$", "\\.boo$"}}, + {"foobar/foo.html", false, []string{"\\.md$", "\\.boo$"}}, + {"foobar/foo.md", true, []string{"^foo"}}, + {"foobar/foo.md", false, []string{"*", "\\.md$", "\\.boo$"}}, } for _, test := range tests { + + viper.Set("ignoreFiles", test.ignoreFilesRegexpes) + if ignored := isNonProcessablePath(test.path); test.ignore != ignored { t.Errorf("File not ignored. Expected: %t, got: %t", test.ignore, ignored) } diff --git a/source/filesystem.go b/source/filesystem.go index 7242d1dfc..7b7ebb6b7 100644 --- a/source/filesystem.go +++ b/source/filesystem.go @@ -151,8 +151,11 @@ func isNonProcessablePath(filePath string) bool { ignoreFiles := viper.GetStringSlice("IgnoreFiles") if len(ignoreFiles) > 0 { for _, ignorePattern := range ignoreFiles { - match, _ := regexp.MatchString(ignorePattern, filePath) - if match { + match, err := regexp.MatchString(ignorePattern, filePath) + if err != nil { + helpers.DistinctErrorLog.Printf("Invalid regexp '%s' in ignoreFiles: %s", ignorePattern, err) + return false + } else if match { return true } } |