mirror of
https://github.com/gohugoio/hugo.git
synced 2024-12-28 12:40:49 +00:00
parent
8243952046
commit
166a394a2f
4 changed files with 51 additions and 1 deletions
|
@ -80,6 +80,7 @@ func (s *staticSyncer) syncsStaticEvents(staticEvents []fsnotify.Event) error {
|
||||||
fromPath := ev.Name
|
fromPath := ev.Name
|
||||||
|
|
||||||
relPath := sourceFs.MakePathRelative(fromPath)
|
relPath := sourceFs.MakePathRelative(fromPath)
|
||||||
|
|
||||||
if relPath == "" {
|
if relPath == "" {
|
||||||
// Not member of this virtual host.
|
// Not member of this virtual host.
|
||||||
continue
|
continue
|
||||||
|
|
|
@ -283,6 +283,10 @@ func TestRootMappingFsMountOverlap(t *testing.T) {
|
||||||
assert.Equal([]string{"b.txt", "c"}, getDirnames("static/b"))
|
assert.Equal([]string{"b.txt", "c"}, getDirnames("static/b"))
|
||||||
assert.Equal([]string{"c.txt"}, getDirnames("static/b/c"))
|
assert.Equal([]string{"c.txt"}, getDirnames("static/b/c"))
|
||||||
|
|
||||||
|
fi, err := rfs.Stat(filepath.FromSlash("static/b/b.txt"))
|
||||||
|
assert.NoError(err)
|
||||||
|
assert.Equal("b.txt", fi.Name())
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestRootMappingFsOs(t *testing.T) {
|
func TestRootMappingFsOs(t *testing.T) {
|
||||||
|
|
|
@ -239,8 +239,14 @@ func (s SourceFilesystems) MakeStaticPathRelative(filename string) string {
|
||||||
// It will return an empty string if the filename is not a member of this filesystem.
|
// It will return an empty string if the filename is not a member of this filesystem.
|
||||||
func (d *SourceFilesystem) MakePathRelative(filename string) string {
|
func (d *SourceFilesystem) MakePathRelative(filename string) string {
|
||||||
for _, dir := range d.Dirs {
|
for _, dir := range d.Dirs {
|
||||||
currentPath := dir.(hugofs.FileMetaInfo).Meta().Filename()
|
meta := dir.(hugofs.FileMetaInfo).Meta()
|
||||||
|
currentPath := meta.Filename()
|
||||||
|
|
||||||
if strings.HasPrefix(filename, currentPath) {
|
if strings.HasPrefix(filename, currentPath) {
|
||||||
|
if path := meta.Path(); path != "" {
|
||||||
|
currentPath = strings.TrimRight(strings.TrimSuffix(currentPath, path), filePathSeparator)
|
||||||
|
}
|
||||||
|
|
||||||
return strings.TrimPrefix(filename, currentPath)
|
return strings.TrimPrefix(filename, currentPath)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -355,6 +355,45 @@ func TestStaticFsMultiHost(t *testing.T) {
|
||||||
checkFileContent(noFs, "f2.txt", assert, "Hugo Themes Still Rocks!")
|
checkFileContent(noFs, "f2.txt", assert, "Hugo Themes Still Rocks!")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestMakePathRelative(t *testing.T) {
|
||||||
|
assert := require.New(t)
|
||||||
|
v := createConfig()
|
||||||
|
fs := hugofs.NewMem(v)
|
||||||
|
workDir := "mywork"
|
||||||
|
v.Set("workingDir", workDir)
|
||||||
|
|
||||||
|
assert.NoError(fs.Source.MkdirAll(filepath.Join(workDir, "dist"), 0777))
|
||||||
|
assert.NoError(fs.Source.MkdirAll(filepath.Join(workDir, "static"), 0777))
|
||||||
|
|
||||||
|
moduleCfg := map[string]interface{}{
|
||||||
|
"mounts": []interface{}{
|
||||||
|
map[string]interface{}{
|
||||||
|
"source": "dist",
|
||||||
|
"target": "static/dist",
|
||||||
|
},
|
||||||
|
map[string]interface{}{
|
||||||
|
"source": "static",
|
||||||
|
"target": "static",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
v.Set("module", moduleCfg)
|
||||||
|
|
||||||
|
assert.NoError(initConfig(fs.Source, v))
|
||||||
|
|
||||||
|
p, err := paths.New(fs, v)
|
||||||
|
assert.NoError(err)
|
||||||
|
bfs, err := NewBase(p, nil)
|
||||||
|
assert.NoError(err)
|
||||||
|
|
||||||
|
sfs := bfs.Static[""]
|
||||||
|
assert.NotNil(sfs)
|
||||||
|
|
||||||
|
assert.Equal(filepath.FromSlash("/foo.txt"), sfs.MakePathRelative(filepath.Join(workDir, "static", "foo.txt")))
|
||||||
|
assert.Equal(filepath.FromSlash("/dist/foo.txt"), sfs.MakePathRelative(filepath.Join(workDir, "dist", "foo.txt")))
|
||||||
|
}
|
||||||
|
|
||||||
func checkFileCount(fs afero.Fs, dirname string, assert *require.Assertions, expected int) {
|
func checkFileCount(fs afero.Fs, dirname string, assert *require.Assertions, expected int) {
|
||||||
count, fnames, err := countFileaAndGetFilenames(fs, dirname)
|
count, fnames, err := countFileaAndGetFilenames(fs, dirname)
|
||||||
assert.NoError(err, fnames)
|
assert.NoError(err, fnames)
|
||||||
|
|
Loading…
Reference in a new issue