mirror of
https://github.com/gohugoio/hugo.git
synced 2025-04-27 14:10:31 +03:00
Add some tests for IgnoreFiles
And log error on invalid regexp. See #1189
This commit is contained in:
parent
beaa1b3aad
commit
beeae6ab69
3 changed files with 33 additions and 18 deletions
|
@ -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)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue