summaryrefslogtreecommitdiffstats
path: root/hugofs/rootmapping_fs_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'hugofs/rootmapping_fs_test.go')
-rw-r--r--hugofs/rootmapping_fs_test.go47
1 files changed, 47 insertions, 0 deletions
diff --git a/hugofs/rootmapping_fs_test.go b/hugofs/rootmapping_fs_test.go
index 3845ad5e6..b3c491f17 100644
--- a/hugofs/rootmapping_fs_test.go
+++ b/hugofs/rootmapping_fs_test.go
@@ -238,6 +238,53 @@ func TestRootMappingFsMount(t *testing.T) {
}
+func TestRootMappingFsMountOverlap(t *testing.T) {
+ assert := require.New(t)
+ fs := NewBaseFileDecorator(afero.NewMemMapFs())
+
+ assert.NoError(afero.WriteFile(fs, filepath.FromSlash("da/a.txt"), []byte("some no content"), 0755))
+ assert.NoError(afero.WriteFile(fs, filepath.FromSlash("db/b.txt"), []byte("some no content"), 0755))
+ assert.NoError(afero.WriteFile(fs, filepath.FromSlash("dc/c.txt"), []byte("some no content"), 0755))
+ assert.NoError(afero.WriteFile(fs, filepath.FromSlash("de/e.txt"), []byte("some no content"), 0755))
+
+ rm := []RootMapping{
+ RootMapping{
+ From: "static",
+ To: "da",
+ },
+ RootMapping{
+ From: "static/b",
+ To: "db",
+ },
+ RootMapping{
+ From: "static/b/c",
+ To: "dc",
+ },
+ RootMapping{
+ From: "/static/e/",
+ To: "de",
+ },
+ }
+
+ rfs, err := NewRootMappingFs(fs, rm...)
+ assert.NoError(err)
+
+ getDirnames := func(name string) []string {
+ name = filepath.FromSlash(name)
+ f, err := rfs.Open(name)
+ assert.NoError(err)
+ defer f.Close()
+ names, err := f.Readdirnames(-1)
+ assert.NoError(err)
+ return names
+ }
+
+ assert.Equal([]string{"a.txt", "b", "e"}, getDirnames("static"))
+ assert.Equal([]string{"b.txt", "c"}, getDirnames("static/b"))
+ assert.Equal([]string{"c.txt"}, getDirnames("static/b/c"))
+
+}
+
func TestRootMappingFsOs(t *testing.T) {
assert := require.New(t)
fs := afero.NewOsFs()