summaryrefslogtreecommitdiffstats
path: root/hugofs/rootmapping_fs_test.go
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2021-10-16 16:24:49 +0200
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2021-10-20 05:00:17 +0200
commit471ed91c60cd36645794925cb4892cc820eae626 (patch)
treeb78ae6d931e7dd39ccd35a1ed3ff8440f9ef7900 /hugofs/rootmapping_fs_test.go
parent94a5bac5b29bbba1ca4809752fe3fd04a58547b6 (diff)
hugofs: Add includeFiles and excludeFiles to mount configuration
Fixes #9042
Diffstat (limited to 'hugofs/rootmapping_fs_test.go')
-rw-r--r--hugofs/rootmapping_fs_test.go69
1 files changed, 69 insertions, 0 deletions
diff --git a/hugofs/rootmapping_fs_test.go b/hugofs/rootmapping_fs_test.go
index e83a46a87..c650e8f11 100644
--- a/hugofs/rootmapping_fs_test.go
+++ b/hugofs/rootmapping_fs_test.go
@@ -20,6 +20,8 @@ import (
"sort"
"testing"
+ "github.com/gohugoio/hugo/hugofs/glob"
+
"github.com/gohugoio/hugo/config"
qt "github.com/frankban/quicktest"
@@ -483,3 +485,70 @@ func TestRootMappingFsOsBase(t *testing.T) {
c.Assert(getDirnames("static/a/b/c"), qt.DeepEquals, []string{"d4", "f-1.txt", "f-2.txt", "f-3.txt", "ms-1.txt"})
}
+
+func TestRootMappingFileFilter(t *testing.T) {
+ c := qt.New(t)
+ fs := NewBaseFileDecorator(afero.NewMemMapFs())
+
+ for _, lang := range []string{"no", "en", "fr"} {
+ for i := 1; i <= 3; i++ {
+ c.Assert(afero.WriteFile(fs, filepath.Join(lang, fmt.Sprintf("my%s%d.txt", lang, i)), []byte("some text file for"+lang), 0755), qt.IsNil)
+ }
+ }
+
+ for _, lang := range []string{"no", "en", "fr"} {
+ for i := 1; i <= 3; i++ {
+ c.Assert(afero.WriteFile(fs, filepath.Join(lang, "sub", fmt.Sprintf("mysub%s%d.txt", lang, i)), []byte("some text file for"+lang), 0755), qt.IsNil)
+ }
+ }
+
+ rm := []RootMapping{
+ {
+ From: "content",
+ To: "no",
+ Meta: &FileMeta{Lang: "no", InclusionFilter: glob.MustNewFilenameFilter(nil, []string{"**.txt"})},
+ },
+ {
+ From: "content",
+ To: "en",
+ Meta: &FileMeta{Lang: "en"},
+ },
+ {
+ From: "content",
+ To: "fr",
+ Meta: &FileMeta{Lang: "fr", InclusionFilter: glob.MustNewFilenameFilter(nil, []string{"**.txt"})},
+ },
+ }
+
+ rfs, err := NewRootMappingFs(fs, rm...)
+ c.Assert(err, qt.IsNil)
+
+ assertExists := func(filename string, shouldExist bool) {
+ c.Helper()
+ filename = filepath.Clean(filename)
+ _, err1 := rfs.Stat(filename)
+ f, err2 := rfs.Open(filename)
+ if shouldExist {
+ c.Assert(err1, qt.IsNil)
+ c.Assert(err2, qt.IsNil)
+ c.Assert(f.Close(), qt.IsNil)
+ } else {
+ c.Assert(err1, qt.Not(qt.IsNil))
+ c.Assert(err2, qt.Not(qt.IsNil))
+ }
+ }
+
+ assertExists("content/myno1.txt", false)
+ assertExists("content/myen1.txt", true)
+ assertExists("content/myfr1.txt", false)
+
+ dirEntriesSub, err := afero.ReadDir(rfs, filepath.Join("content", "sub"))
+ c.Assert(err, qt.IsNil)
+ c.Assert(len(dirEntriesSub), qt.Equals, 3)
+
+ dirEntries, err := afero.ReadDir(rfs, "content")
+
+ c.Assert(err, qt.IsNil)
+ c.Assert(len(dirEntries), qt.Equals, 4)
+
+}