Skip to content

Commit

Permalink
Fix bundle resource ordering regression
Browse files Browse the repository at this point in the history
Introduced in Hugo 0.64.0

Fixes gohugoio#6851
  • Loading branch information
bep committed Feb 9, 2020
1 parent 1e5eb86 commit 9638de2
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 7 deletions.
4 changes: 2 additions & 2 deletions hugofs/fileinfo.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand All @@ -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},
Expand Down
10 changes: 5 additions & 5 deletions hugofs/rootmapping_fs.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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
Expand All @@ -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)

Expand All @@ -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.
Expand Down Expand Up @@ -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 {
Expand Down
32 changes: 32 additions & 0 deletions hugolib/pagebundler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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>
`)
}
1 change: 1 addition & 0 deletions hugolib/pages_capture.go
Original file line number Diff line number Diff line change
Expand Up @@ -399,6 +399,7 @@ func (c *pagesCollector) addToBundle(info hugofs.FileMetaInfo, btyp bundleDirTyp
}

if !isBundleHeader && bundle != nil {

bundle.resources = append(bundle.resources, info)
}

Expand Down

0 comments on commit 9638de2

Please sign in to comment.