ref: 503fb29953d4cd57ec3a188f529c11d41798d772
parent: 80e453f11499f9f35f8431ecb22c0094b42a55f7
author: Bjørn Erik Pedersen <[email protected]>
date: Wed Nov 9 04:58:18 EST 2016
node to page: Get Rebuild up to speed Updates #2297
--- a/hugolib/hugo_sites.go
+++ b/hugolib/hugo_sites.go
@@ -194,7 +194,7 @@
return err
}
- h.setupTranslationsForRegularPages()
+ h.setupTranslations()
if len(h.Sites) > 1 {
// Initialize the rest
@@ -289,7 +289,7 @@
}
// Assign pages to sites per translation.
- h.setupTranslationsForRegularPages()
+ h.setupTranslations()
if changed.source {
h.assembleGitInfo()
@@ -299,15 +299,23 @@
}
}
- if err := h.createMissingNodes(); err != nil {
- return err
- }
+ }
- if err := h.assignMissingTranslations(); err != nil {
- return err
- }
+ // TODO(bep) np consolidate the build lifecycle methods
+ // See also the regular Build() method, and check vs. the changed.source
+ if err := h.createMissingNodes(); err != nil {
+ return err
}
+ for _, s := range h.Sites {
+ s.refreshPageCaches()
+ s.setupPrevNext()
+ }
+
+ if err := h.assignMissingTranslations(); err != nil {
+ return err
+ }
+
if err := h.preRender(config, changed); err != nil {
return err
}
@@ -557,13 +565,11 @@
return p
}
-func (h *HugoSites) setupTranslationsForRegularPages() {
+func (h *HugoSites) setupTranslations() {
master := h.Sites[0]
- regularPages := master.rawAllPages // master.findRawAllPagesByNodeType(NodePage)
-
- for _, p := range regularPages {
+ for _, p := range master.rawAllPages {
if p.Lang() == "" {
panic("Page language missing: " + p.Title)
}
--- a/hugolib/hugo_sites_test.go
+++ b/hugolib/hugo_sites_test.go
@@ -51,8 +51,7 @@
func TestMultiSitesMainLangInRoot(t *testing.T) {
//jww.SetStdoutThreshold(jww.LevelDebug)
- // TODO(bep) np true false
- for _, b := range []bool{true} {
+ for _, b := range []bool{true, false} {
doTestMultiSitesMainLangInRoot(t, b)
}
}
@@ -366,8 +365,6 @@
}
func TestMultiSitesRebuild(t *testing.T) {
- // TODO(bep) np TestMultiSitesRebuild
- t.Skip()
defer leaktest.Check(t)()
testCommonResetState()
@@ -390,14 +387,12 @@
enSite := sites.Sites[0]
frSite := sites.Sites[1]
- assert.Len(t, enSite.Pages, 3)
- assert.Len(t, frSite.Pages, 3)
+ require.Len(t, enSite.Pages, 3)
+ require.Len(t, frSite.Pages, 3)
// Verify translations
- docEn := readDestination(t, "public/en/sect/doc1-slug/index.html")
- assert.True(t, strings.Contains(docEn, "Hello"), "No Hello")
- docFr := readDestination(t, "public/fr/sect/doc1/index.html")
- assert.True(t, strings.Contains(docFr, "Bonjour"), "No Bonjour")
+ assertFileContent(t, "public/en/sect/doc1-slug/index.html", true, "Hello")
+ assertFileContent(t, "public/fr/sect/doc1/index.html", true, "Bonjour")
// check single page content
assertFileContent(t, "public/fr/sect/doc1/index.html", true, "Single", "Shortcode: Bonjour")
@@ -419,15 +414,15 @@
nil,
[]fsnotify.Event{{Name: "content/sect/doc2.en.md", Op: fsnotify.Remove}},
func(t *testing.T) {
- assert.Len(t, enSite.Pages, 2, "1 en removed")
+ require.Len(t, enSite.Pages, 2, "1 en removed")
// Check build stats
- assert.Equal(t, 1, enSite.draftCount, "Draft")
- assert.Equal(t, 1, enSite.futureCount, "Future")
- assert.Equal(t, 1, enSite.expiredCount, "Expired")
- assert.Equal(t, 0, frSite.draftCount, "Draft")
- assert.Equal(t, 1, frSite.futureCount, "Future")
- assert.Equal(t, 1, frSite.expiredCount, "Expired")
+ require.Equal(t, 1, enSite.draftCount, "Draft")
+ require.Equal(t, 1, enSite.futureCount, "Future")
+ require.Equal(t, 1, enSite.expiredCount, "Expired")
+ require.Equal(t, 0, frSite.draftCount, "Draft")
+ require.Equal(t, 1, frSite.futureCount, "Future")
+ require.Equal(t, 1, frSite.expiredCount, "Expired")
},
},
{
@@ -442,15 +437,15 @@
{Name: "content/new1.fr.md", Op: fsnotify.Create},
},
func(t *testing.T) {
- assert.Len(t, enSite.Pages, 4)
- assert.Len(t, enSite.AllPages, 10)
- assert.Len(t, frSite.Pages, 4)
- assert.Equal(t, "new_fr_1", frSite.Pages[3].Title)
- assert.Equal(t, "new_en_2", enSite.Pages[0].Title)
- assert.Equal(t, "new_en_1", enSite.Pages[1].Title)
+ require.Len(t, enSite.Pages, 4)
+ require.Len(t, enSite.AllPages, 10)
+ require.Len(t, frSite.Pages, 4)
+ require.Equal(t, "new_fr_1", frSite.Pages[3].Title)
+ require.Equal(t, "new_en_2", enSite.Pages[0].Title)
+ require.Equal(t, "new_en_1", enSite.Pages[1].Title)
rendered := readDestination(t, "public/en/new1/index.html")
- assert.True(t, strings.Contains(rendered, "new_en_1"), rendered)
+ require.True(t, strings.Contains(rendered, "new_en_1"), rendered)
},
},
{
@@ -462,9 +457,9 @@
},
[]fsnotify.Event{{Name: "content/sect/doc1.en.md", Op: fsnotify.Write}},
func(t *testing.T) {
- assert.Len(t, enSite.Pages, 4)
+ require.Len(t, enSite.Pages, 4)
doc1 := readDestination(t, "public/en/sect/doc1-slug/index.html")
- assert.True(t, strings.Contains(doc1, "CHANGED"), doc1)
+ require.True(t, strings.Contains(doc1, "CHANGED"), doc1)
},
},
@@ -480,10 +475,10 @@
{Name: "content/new1.en.md", Op: fsnotify.Rename},
},
func(t *testing.T) {
- assert.Len(t, enSite.Pages, 4, "Rename")
- assert.Equal(t, "new_en_1", enSite.Pages[1].Title)
+ require.Len(t, enSite.Pages, 4, "Rename")
+ require.Equal(t, "new_en_1", enSite.Pages[1].Title)
rendered := readDestination(t, "public/en/new1renamed/index.html")
- assert.True(t, strings.Contains(rendered, "new_en_1"), rendered)
+ require.True(t, strings.Contains(rendered, "new_en_1"), rendered)
}},
{
// Change a template
@@ -495,11 +490,11 @@
},
[]fsnotify.Event{{Name: "layouts/_default/single.html", Op: fsnotify.Write}},
func(t *testing.T) {
- assert.Len(t, enSite.Pages, 4)
- assert.Len(t, enSite.AllPages, 10)
- assert.Len(t, frSite.Pages, 4)
+ require.Len(t, enSite.Pages, 4)
+ require.Len(t, enSite.AllPages, 10)
+ require.Len(t, frSite.Pages, 4)
doc1 := readDestination(t, "public/en/sect/doc1-slug/index.html")
- assert.True(t, strings.Contains(doc1, "Template Changed"), doc1)
+ require.True(t, strings.Contains(doc1, "Template Changed"), doc1)
},
},
{
@@ -512,13 +507,13 @@
},
[]fsnotify.Event{{Name: "i18n/fr.yaml", Op: fsnotify.Write}},
func(t *testing.T) {
- assert.Len(t, enSite.Pages, 4)
- assert.Len(t, enSite.AllPages, 10)
- assert.Len(t, frSite.Pages, 4)
+ require.Len(t, enSite.Pages, 4)
+ require.Len(t, enSite.AllPages, 10)
+ require.Len(t, frSite.Pages, 4)
docEn := readDestination(t, "public/en/sect/doc1-slug/index.html")
- assert.True(t, strings.Contains(docEn, "Hello"), "No Hello")
+ require.True(t, strings.Contains(docEn, "Hello"), "No Hello")
docFr := readDestination(t, "public/fr/sect/doc1/index.html")
- assert.True(t, strings.Contains(docFr, "Salut"), "No Salut")
+ require.True(t, strings.Contains(docFr, "Salut"), "No Salut")
homeEn := enSite.getPage(NodeHome)
require.NotNil(t, homeEn)
@@ -536,9 +531,9 @@
{Name: "layouts/shortcodes/shortcode.html", Op: fsnotify.Write},
},
func(t *testing.T) {
- assert.Len(t, enSite.Pages, 4)
- assert.Len(t, enSite.AllPages, 10)
- assert.Len(t, frSite.Pages, 4)
+ require.Len(t, enSite.Pages, 4)
+ require.Len(t, enSite.AllPages, 10)
+ require.Len(t, frSite.Pages, 4)
assertFileContent(t, "public/fr/sect/doc1/index.html", true, "Single", "Modified Shortcode: Salut")
assertFileContent(t, "public/en/sect/doc1-slug/index.html", true, "Single", "Modified Shortcode: Hello")
},
--- a/hugolib/site.go
+++ b/hugolib/site.go
@@ -1529,7 +1529,7 @@
// Prepare site for a new full build.
func (s *Site) resetBuildState() {
- s.PageCollections = newPageCollections()
+ s.PageCollections = newPageCollectionsFromPages(s.rawAllPages)
s.Info.paginationPageCount = 0
s.draftCount = 0