diff options
author | Bjørn Erik Pedersen <[email protected]> | 2024-11-04 10:31:59 +0100 |
---|---|---|
committer | Bjørn Erik Pedersen <[email protected]> | 2024-11-04 12:44:07 +0100 |
commit | fcdc454cc58e9f26ba29389100adfc09cb383448 (patch) | |
tree | 1d66ea84f966549b51ada9a74cc40c4e4ac69c59 | |
parent | 6cf23bf8824758b0d2c4d855f0241e72aef77206 (diff) | |
download | hugo-fcdc454cc58e9f26ba29389100adfc09cb383448.tar.gz hugo-fcdc454cc58e9f26ba29389100adfc09cb383448.zip |
Do not watch directories with no mounted files in it
Fixes #12912
Fixes #13007
-rw-r--r-- | hugofs/rootmapping_fs.go | 10 | ||||
-rw-r--r-- | hugolib/filesystems/basefs_test.go | 33 |
2 files changed, 35 insertions, 8 deletions
diff --git a/hugofs/rootmapping_fs.go b/hugofs/rootmapping_fs.go index 2ecd88e9e..02e541a05 100644 --- a/hugofs/rootmapping_fs.go +++ b/hugofs/rootmapping_fs.go @@ -246,11 +246,11 @@ func (fs *RootMappingFs) Mounts(base string) ([]FileMetaInfo, error) { return nil, nil } - fss := make([]FileMetaInfo, len(roots)) - for i, r := range roots { + fss := make([]FileMetaInfo, 0, len(roots)) + for _, r := range roots { if r.fiSingleFile != nil { // A single file mount. - fss[i] = r.fiSingleFile + fss = append(fss, r.fiSingleFile) continue } bfs := NewBasePathFs(fs.Fs, r.To) @@ -261,9 +261,9 @@ func (fs *RootMappingFs) Mounts(base string) ([]FileMetaInfo, error) { fs = decorateDirs(fs, r.Meta) fi, err := fs.Stat("") if err != nil { - return nil, fmt.Errorf("RootMappingFs.Dirs: %w", err) + continue } - fss[i] = fi.(FileMetaInfo) + fss = append(fss, fi.(FileMetaInfo)) } return fss, nil diff --git a/hugolib/filesystems/basefs_test.go b/hugolib/filesystems/basefs_test.go index e39709386..3f189c860 100644 --- a/hugolib/filesystems/basefs_test.go +++ b/hugolib/filesystems/basefs_test.go @@ -220,6 +220,18 @@ target = 'content' source = 'content2' target = 'content/c2' [[module.mounts]] +source = 'content3' +target = 'content/watchdisabled' +disableWatch = true +[[module.mounts]] +source = 'content4' +target = 'content/excludedsome' +excludeFiles = 'p1.md' +[[module.mounts]] +source = 'content5' +target = 'content/excludedall' +excludeFiles = '/**' +[[module.mounts]] source = "hugo_stats.json" target = "assets/watching/hugo_stats.json" -- hugo_stats.json -- @@ -230,12 +242,27 @@ foo -- themes/t1/layouts/_default/single.html -- {{ .Content }} -- themes/t1/static/f1.txt -- +-- content3/p1.md -- +-- content4/p1.md -- +-- content4/p2.md -- +-- content5/p3.md -- +-- content5/p4.md -- ` b := hugolib.Test(t, files) bfs := b.H.BaseFs - watchFilenames := bfs.WatchFilenames() - // []string{"/hugo_stats.json", "/content", "/content2", "/themes/t1/layouts", "/themes/t1/layouts/_default", "/themes/t1/static"} - b.Assert(watchFilenames, qt.HasLen, 6) + watchFilenames := toSlashes(bfs.WatchFilenames()) + + // content3 has disableWatch = true + // content5 has excludeFiles = '/**' + b.Assert(watchFilenames, qt.DeepEquals, []string{"/hugo_stats.json", "/content", "/content2", "/content4", "/themes/t1/layouts", "/themes/t1/layouts/_default", "/themes/t1/static"}) +} + +func toSlashes(in []string) []string { + out := make([]string, len(in)) + for i, s := range in { + out[i] = filepath.ToSlash(s) + } + return out } func TestNoSymlinks(t *testing.T) { |