Add some tests for IgnoreFiles

And log error on invalid regexp.

See #1189
This commit is contained in:
bep 2015-06-03 18:54:30 +02:00
parent beaa1b3aad
commit beeae6ab69
3 changed files with 33 additions and 18 deletions

View file

@ -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)
}

View file

@ -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)
}

View file

@ -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
}
}