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 // 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. // Deprecated logs ERROR logs about a deprecation, but only once for a given set of arguments' values.
func Deprecated(object, item, alternative string) { 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 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 package source
import ( import (
"github.com/spf13/viper"
"testing" "testing"
) )
func TestIgnoreDotFilesAndDirectories(t *testing.T) { func TestIgnoreDotFilesAndDirectories(t *testing.T) {
viper.Reset()
defer viper.Reset()
tests := []struct { tests := []struct {
path string path string
ignore bool ignore bool
ignoreFilesRegexpes interface{}
}{ }{
{".foobar/", true}, {".foobar/", true, nil},
{"foobar/.barfoo/", true}, {"foobar/.barfoo/", true, nil},
{"barfoo.md", false}, {"barfoo.md", false, nil},
{"foobar/barfoo.md", false}, {"foobar/barfoo.md", false, nil},
{"foobar/.barfoo.md", true}, {"foobar/.barfoo.md", true, nil},
{".barfoo.md", true}, {".barfoo.md", true, nil},
{".md", true}, {".md", true, nil},
{"", true}, {"", true, nil},
{"foobar/barfoo.md~", true}, {"foobar/barfoo.md~", true, nil},
{".foobar/barfoo.md~", true}, {".foobar/barfoo.md~", true, nil},
{"foobar~/barfoo.md", false}, {"foobar~/barfoo.md", false, nil},
{"foobar/bar~foo.md", false}, {"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 { for _, test := range tests {
viper.Set("ignoreFiles", test.ignoreFilesRegexpes)
if ignored := isNonProcessablePath(test.path); test.ignore != ignored { if ignored := isNonProcessablePath(test.path); test.ignore != ignored {
t.Errorf("File not ignored. Expected: %t, got: %t", 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") ignoreFiles := viper.GetStringSlice("IgnoreFiles")
if len(ignoreFiles) > 0 { if len(ignoreFiles) > 0 {
for _, ignorePattern := range ignoreFiles { for _, ignorePattern := range ignoreFiles {
match, _ := regexp.MatchString(ignorePattern, filePath) match, err := regexp.MatchString(ignorePattern, filePath)
if match { if err != nil {
helpers.DistinctErrorLog.Printf("Invalid regexp '%s' in ignoreFiles: %s", ignorePattern, err)
return false
} else if match {
return true return true
} }
} }