ref: beeae6ab69b0cbb4daba7a1044308bd157df77ab
parent: beaa1b3aad578ebbbdf426321ed1758eb1068946
author: bep <bjorn.erik.pedersen@gmail.com>
date: Wed Jun 3 14:54:30 EDT 2015
Add some tests for IgnoreFiles And log error on invalid regexp. See #1189
--- a/helpers/general.go
+++ b/helpers/general.go
@@ -198,12 +198,12 @@
}
// 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)}
--- 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)}
--- a/source/filesystem.go
+++ b/source/filesystem.go
@@ -151,8 +151,11 @@
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
}
}
--
⑨