Fix live reload mount logic with sub paths

Fixes #6209
This commit is contained in:
Bjørn Erik Pedersen 2019-08-15 16:44:44 +02:00
parent 321418f22a
commit 952a319496
2 changed files with 16 additions and 9 deletions

View file

@ -243,11 +243,11 @@ func (d *SourceFilesystem) MakePathRelative(filename string) string {
currentPath := meta.Filename() currentPath := meta.Filename()
if strings.HasPrefix(filename, currentPath) { if strings.HasPrefix(filename, currentPath) {
if path := meta.Path(); path != "" { rel := strings.TrimPrefix(filename, currentPath)
currentPath = strings.TrimRight(strings.TrimSuffix(currentPath, path), filePathSeparator) if mp := meta.Path(); mp != "" {
rel = filepath.Join(mp, rel)
} }
return strings.TrimPrefix(rel, filePathSeparator)
return strings.TrimPrefix(filename, currentPath)
} }
} }
return "" return ""

View file

@ -360,14 +360,19 @@ func TestMakePathRelative(t *testing.T) {
workDir := "mywork" workDir := "mywork"
v.Set("workingDir", workDir) v.Set("workingDir", workDir)
c.Assert(fs.Source.MkdirAll(filepath.Join(workDir, "dist"), 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"), 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{}{ moduleCfg := map[string]interface{}{
"mounts": []interface{}{ "mounts": []interface{}{
map[string]interface{}{ map[string]interface{}{
"source": "dist", "source": "dist",
"target": "static/dist", "target": "static/mydist",
},
map[string]interface{}{
"source": "dust",
"target": "static/foo/bar",
}, },
map[string]interface{}{ map[string]interface{}{
"source": "static", "source": "static",
@ -388,8 +393,10 @@ func TestMakePathRelative(t *testing.T) {
sfs := bfs.Static[""] sfs := bfs.Static[""]
c.Assert(sfs, qt.Not(qt.IsNil)) 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", "d1", "foo.txt")), qt.Equals, filepath.FromSlash("mydist/d1/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, "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) { func checkFileCount(fs afero.Fs, dirname string, c *qt.C, expected int) {