diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2019-08-15 17:44:44 +0300 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2019-08-15 20:14:22 +0300 |
commit | 952a3194962dd91f87e5bd227a1591b00c39ff05 (patch) | |
tree | b5c20ff0fea1b92190e21dbd6742ccf3a8d808d4 /hugolib | |
parent | 321418f22a4a94b87f01e1403a2f4a71106461fb (diff) |
Fix live reload mount logic with sub paths
Fixes #6209
Diffstat (limited to 'hugolib')
-rw-r--r-- | hugolib/filesystems/basefs.go | 8 | ||||
-rw-r--r-- | hugolib/filesystems/basefs_test.go | 17 |
2 files changed, 16 insertions, 9 deletions
diff --git a/hugolib/filesystems/basefs.go b/hugolib/filesystems/basefs.go index 2a1f994b2..de6baa130 100644 --- a/hugolib/filesystems/basefs.go +++ b/hugolib/filesystems/basefs.go @@ -243,11 +243,11 @@ func (d *SourceFilesystem) MakePathRelative(filename string) string { currentPath := meta.Filename() if strings.HasPrefix(filename, currentPath) { - if path := meta.Path(); path != "" { - currentPath = strings.TrimRight(strings.TrimSuffix(currentPath, path), filePathSeparator) + rel := strings.TrimPrefix(filename, currentPath) + if mp := meta.Path(); mp != "" { + rel = filepath.Join(mp, rel) } - - return strings.TrimPrefix(filename, currentPath) + return strings.TrimPrefix(rel, filePathSeparator) } } return "" diff --git a/hugolib/filesystems/basefs_test.go b/hugolib/filesystems/basefs_test.go index 47aef63ce..3cac4f11a 100644 --- a/hugolib/filesystems/basefs_test.go +++ b/hugolib/filesystems/basefs_test.go @@ -360,14 +360,19 @@ func TestMakePathRelative(t *testing.T) { workDir := "mywork" v.Set("workingDir", workDir) - c.Assert(fs.Source.MkdirAll(filepath.Join(workDir, "dist"), 0777), qt.IsNil) - c.Assert(fs.Source.MkdirAll(filepath.Join(workDir, "static"), 0777), qt.IsNil) + c.Assert(fs.Source.MkdirAll(filepath.Join(workDir, "dist", "d1"), 0777), qt.IsNil) + c.Assert(fs.Source.MkdirAll(filepath.Join(workDir, "static", "d2"), 0777), qt.IsNil) + c.Assert(fs.Source.MkdirAll(filepath.Join(workDir, "dust", "d2"), 0777), qt.IsNil) moduleCfg := map[string]interface{}{ "mounts": []interface{}{ map[string]interface{}{ "source": "dist", - "target": "static/dist", + "target": "static/mydist", + }, + map[string]interface{}{ + "source": "dust", + "target": "static/foo/bar", }, map[string]interface{}{ "source": "static", @@ -388,8 +393,10 @@ func TestMakePathRelative(t *testing.T) { sfs := bfs.Static[""] c.Assert(sfs, qt.Not(qt.IsNil)) - c.Assert(sfs.MakePathRelative(filepath.Join(workDir, "static", "foo.txt")), qt.Equals, filepath.FromSlash("/foo.txt")) - c.Assert(sfs.MakePathRelative(filepath.Join(workDir, "dist", "foo.txt")), qt.Equals, filepath.FromSlash("/dist/foo.txt")) + c.Assert(sfs.MakePathRelative(filepath.Join(workDir, "dist", "d1", "foo.txt")), qt.Equals, filepath.FromSlash("mydist/d1/foo.txt")) + c.Assert(sfs.MakePathRelative(filepath.Join(workDir, "static", "d2", "foo.txt")), qt.Equals, filepath.FromSlash("d2/foo.txt")) + c.Assert(sfs.MakePathRelative(filepath.Join(workDir, "dust", "d3", "foo.txt")), qt.Equals, filepath.FromSlash("foo/bar/d3/foo.txt")) + } func checkFileCount(fs afero.Fs, dirname string, c *qt.C, expected int) { |