shithub: hugo

Download patch

ref: 54bdcaacaedec178554e696f34647801bbe61362
parent: 1622510a5c651b59a79f64e9dc3cacd24832ec0b
author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
date: Mon Feb 17 04:24:15 EST 2020

Refactor a benchmark to make it runnable as test

--- a/hugolib/site_benchmark_new_test.go
+++ b/hugolib/site_benchmark_new_test.go
@@ -33,10 +33,70 @@
 	check  func(s *sitesBuilder)
 }
 
-func getBenchmarkSiteNewTestCases() []siteBenchmarkTestcase {
+func getBenchmarkSiteDeepContent(b testing.TB) *sitesBuilder {
+	pageContent := func(size int) string {
+		return getBenchmarkTestDataPageContentForMarkdown(size, benchmarkMarkdownSnippets)
+	}
 
-	const markdownSnippets = `
+	sb := newTestSitesBuilder(b).WithConfigFile("toml", `
+baseURL = "https://example.com"
 
+[languages]
+[languages.en]
+weight=1
+contentDir="content/en"
+[languages.fr]
+weight=2
+contentDir="content/fr"
+[languages.no]
+weight=3
+contentDir="content/no"
+[languages.sv]
+weight=4
+contentDir="content/sv"
+			
+`)
+
+	createContent := func(dir, name string) {
+		sb.WithContent(filepath.Join("content", dir, name), pageContent(1))
+	}
+
+	createBundledFiles := func(dir string) {
+		sb.WithContent(filepath.Join("content", dir, "data.json"), `{ "hello": "world" }`)
+		for i := 1; i <= 3; i++ {
+			sb.WithContent(filepath.Join("content", dir, fmt.Sprintf("page%d.md", i)), pageContent(1))
+		}
+	}
+
+	for _, lang := range []string{"en", "fr", "no", "sv"} {
+		for level := 1; level <= 5; level++ {
+			sectionDir := path.Join(lang, strings.Repeat("section/", level))
+			createContent(sectionDir, "_index.md")
+			createBundledFiles(sectionDir)
+			for i := 1; i <= 3; i++ {
+				leafBundleDir := path.Join(sectionDir, fmt.Sprintf("bundle%d", i))
+				createContent(leafBundleDir, "index.md")
+				createBundledFiles(path.Join(leafBundleDir, "assets1"))
+				createBundledFiles(path.Join(leafBundleDir, "assets1", "assets2"))
+			}
+		}
+	}
+
+	return sb
+}
+
+func getBenchmarkTestDataPageContentForMarkdown(size int, markdown string) string {
+	return `---
+title: "My Page"
+---
+
+My page content.
+
+` + strings.Repeat(markdown, size)
+}
+
+const benchmarkMarkdownSnippets = `
+
 ## Links
 
 
@@ -49,18 +109,10 @@
 See my [About](/about/) page for details. 
 `
 
-	pageContentForMarkdown := func(size int, markdown string) string {
-		return `---
-title: "My Page"
----
+func getBenchmarkSiteNewTestCases() []siteBenchmarkTestcase {
 
-My page content.
-
-` + strings.Repeat(markdown, size)
-	}
-
 	pageContent := func(size int) string {
-		return pageContentForMarkdown(size, markdownSnippets)
+		return getBenchmarkTestDataPageContentForMarkdown(size, benchmarkMarkdownSnippets)
 	}
 
 	config := `
@@ -142,52 +194,7 @@
 		},
 
 		{"Deep content tree", func(b testing.TB) *sitesBuilder {
-
-			sb := newTestSitesBuilder(b).WithConfigFile("toml", `
-baseURL = "https://example.com"
-
-[languages]
-[languages.en]
-weight=1
-contentDir="content/en"
-[languages.fr]
-weight=2
-contentDir="content/fr"
-[languages.no]
-weight=3
-contentDir="content/no"
-[languages.sv]
-weight=4
-contentDir="content/sv"
-			
-`)
-
-			createContent := func(dir, name string) {
-				sb.WithContent(filepath.Join("content", dir, name), pageContent(1))
-			}
-
-			createBundledFiles := func(dir string) {
-				sb.WithContent(filepath.Join("content", dir, "data.json"), `{ "hello": "world" }`)
-				for i := 1; i <= 3; i++ {
-					sb.WithContent(filepath.Join("content", dir, fmt.Sprintf("page%d.md", i)), pageContent(1))
-				}
-			}
-
-			for _, lang := range []string{"en", "fr", "no", "sv"} {
-				for level := 1; level <= 5; level++ {
-					sectionDir := path.Join(lang, strings.Repeat("section/", level))
-					createContent(sectionDir, "_index.md")
-					createBundledFiles(sectionDir)
-					for i := 1; i <= 3; i++ {
-						leafBundleDir := path.Join(sectionDir, fmt.Sprintf("bundle%d", i))
-						createContent(leafBundleDir, "index.md")
-						createBundledFiles(path.Join(leafBundleDir, "assets1"))
-						createBundledFiles(path.Join(leafBundleDir, "assets1", "assets2"))
-					}
-				}
-			}
-
-			return sb
+			return getBenchmarkSiteDeepContent(b)
 		},
 			func(s *sitesBuilder) {
 				s.CheckExists("public/blog/mybundle/index.html")