shithub: hugo

Download patch

ref: 18888e09bbb5325bdd63f2cd93116ff490dd37ab
parent: 1e5eb8679ece0ce8dab3aca6c3267d6a206b790d
author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
date: Sun Feb 9 09:17:47 EST 2020

Fix bundle resource ordering regression

Introduced in Hugo 0.64.0

Fixes #6851

--- a/hugofs/fileinfo.go
+++ b/hugofs/fileinfo.go
@@ -272,7 +272,7 @@
 	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 @@
 		m.setIfNotZero(metaKeyFilename, name)
 	}
 	m[metaKeyOpener] = fileOpener
-	m[metaKeyIsOrdered] = isOrdered
+	m[metaKeyIsOrdered] = false
 
 	return NewFileMetaInfo(
 		&dirNameOnlyFileInfo{name: base},
--- a/hugofs/rootmapping_fs.go
+++ b/hugofs/rootmapping_fs.go
@@ -367,7 +367,7 @@
 				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 @@
 				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 @@
 				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 @@
 		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 @@
 
 	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 {
--- a/hugolib/pagebundler_test.go
+++ b/hugolib/pagebundler_test.go
@@ -1336,3 +1336,35 @@
 
 	}
 }
+
+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>
+`)
+}