diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2021-10-16 16:24:49 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2021-10-20 05:00:17 +0200 |
commit | 471ed91c60cd36645794925cb4892cc820eae626 (patch) | |
tree | b78ae6d931e7dd39ccd35a1ed3ff8440f9ef7900 /hugofs/rootmapping_fs_test.go | |
parent | 94a5bac5b29bbba1ca4809752fe3fd04a58547b6 (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.go | 69 |
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) + +} |