mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-07 20:30:36 -05:00
Fix bundle resource ordering regression
Introduced in Hugo 0.64.0 Fixes #6851
This commit is contained in:
parent
1e5eb8679e
commit
18888e09bb
3 changed files with 39 additions and 7 deletions
|
@ -272,7 +272,7 @@ func (fi *dirNameOnlyFileInfo) Sys() interface{} {
|
|||
return nil
|
||||
}
|
||||
|
||||
func newDirNameOnlyFileInfo(name string, meta FileMeta, isOrdered bool, fileOpener func() (afero.File, error)) FileMetaInfo {
|
||||
func newDirNameOnlyFileInfo(name string, meta FileMeta, fileOpener func() (afero.File, error)) FileMetaInfo {
|
||||
name = normalizeFilename(name)
|
||||
_, base := filepath.Split(name)
|
||||
|
||||
|
@ -281,7 +281,7 @@ func newDirNameOnlyFileInfo(name string, meta FileMeta, isOrdered bool, fileOpen
|
|||
m.setIfNotZero(metaKeyFilename, name)
|
||||
}
|
||||
m[metaKeyOpener] = fileOpener
|
||||
m[metaKeyIsOrdered] = isOrdered
|
||||
m[metaKeyIsOrdered] = false
|
||||
|
||||
return NewFileMetaInfo(
|
||||
&dirNameOnlyFileInfo{name: base},
|
||||
|
|
|
@ -367,7 +367,7 @@ func (fs *RootMappingFs) collectDirEntries(prefix string) ([]os.FileInfo, error)
|
|||
opener := func() (afero.File, error) {
|
||||
return fs.Open(filepath.Join(rm.From, name))
|
||||
}
|
||||
fi = newDirNameOnlyFileInfo(name, meta, false, opener)
|
||||
fi = newDirNameOnlyFileInfo(name, meta, opener)
|
||||
}
|
||||
|
||||
fis = append(fis, fi)
|
||||
|
@ -396,7 +396,7 @@ func (fs *RootMappingFs) collectDirEntries(prefix string) ([]os.FileInfo, error)
|
|||
return fs.Open(path)
|
||||
}
|
||||
|
||||
fi := newDirNameOnlyFileInfo(name, nil, false, opener)
|
||||
fi := newDirNameOnlyFileInfo(name, nil, opener)
|
||||
fis = append(fis, fi)
|
||||
|
||||
return false
|
||||
|
@ -419,7 +419,7 @@ func (fs *RootMappingFs) collectDirEntries(prefix string) ([]os.FileInfo, error)
|
|||
return fs.Open(rm.From)
|
||||
}
|
||||
|
||||
fi := newDirNameOnlyFileInfo(name, rm.Meta, false, opener)
|
||||
fi := newDirNameOnlyFileInfo(name, rm.Meta, opener)
|
||||
|
||||
fis = append(fis, fi)
|
||||
|
||||
|
@ -441,7 +441,7 @@ func (fs *RootMappingFs) doLstat(name string) ([]FileMetaInfo, error) {
|
|||
if fs.hasPrefix(key) {
|
||||
// We have directories mounted below this.
|
||||
// Make it look like a directory.
|
||||
return []FileMetaInfo{newDirNameOnlyFileInfo(name, nil, true, fs.virtualDirOpener(name))}, nil
|
||||
return []FileMetaInfo{newDirNameOnlyFileInfo(name, nil, fs.virtualDirOpener(name))}, nil
|
||||
}
|
||||
|
||||
// Find any real files or directories with this key.
|
||||
|
@ -484,7 +484,7 @@ func (fs *RootMappingFs) doLstat(name string) ([]FileMetaInfo, error) {
|
|||
|
||||
if fileCount == 0 {
|
||||
// Dir only.
|
||||
return []FileMetaInfo{newDirNameOnlyFileInfo(name, roots[0].Meta, true, fs.virtualDirOpener(name))}, nil
|
||||
return []FileMetaInfo{newDirNameOnlyFileInfo(name, roots[0].Meta, fs.virtualDirOpener(name))}, nil
|
||||
}
|
||||
|
||||
if fileCount > 1 {
|
||||
|
|
|
@ -1336,3 +1336,35 @@ bundle min min key: {{ $jsonMinMin.Key }}
|
|||
|
||||
}
|
||||
}
|
||||
|
||||
func TestPageBundlerHome(t *testing.T) {
|
||||
t.Parallel()
|
||||
c := qt.New(t)
|
||||
|
||||
workDir, clean, err := htesting.CreateTempDir(hugofs.Os, "hugo-bundler-home")
|
||||
c.Assert(err, qt.IsNil)
|
||||
|
||||
cfg := viper.New()
|
||||
cfg.Set("workingDir", workDir)
|
||||
fs := hugofs.NewFrom(hugofs.Os, cfg)
|
||||
|
||||
os.MkdirAll(filepath.Join(workDir, "content"), 0777)
|
||||
|
||||
defer clean()
|
||||
|
||||
b := newTestSitesBuilder(t)
|
||||
b.Fs = fs
|
||||
|
||||
b.WithWorkingDir(workDir).WithViper(cfg)
|
||||
|
||||
b.WithContent("_index.md", "---\ntitle: Home\n---\n![Alt text](image.jpg)")
|
||||
b.WithSourceFile("content/data.json", "DATA")
|
||||
|
||||
b.WithTemplates("index.html", `Title: {{ .Title }}|First Resource: {{ index .Resources 0 }}|Content: {{ .Content }}`)
|
||||
b.WithTemplates("_default/_markup/render-image.html", `Hook Len Page Resources {{ len .Page.Resources }}`)
|
||||
|
||||
b.Build(BuildCfg{})
|
||||
b.AssertFileContent("public/index.html", `
|
||||
Title: Home|First Resource: data.json|Content: <p>Hook Len Page Resources 1</p>
|
||||
`)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue