hugolib: Add some more site benchmarks - hugo - [fork] hugo port for 9front
 (HTM) git clone git@git.drkhsh.at/hugo.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Submodules
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit df374851a0683f1446f33a4afef74c42f7d3eaaf
 (DIR) parent a843ca53b5e0f29df9535fa0e88408a63cdc2cd7
 (HTM) Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
       Date:   Thu,  8 Aug 2019 10:53:54 +0200
       
       hugolib: Add some more site benchmarks
       
       Diffstat:
         M hugolib/site_benchmark_new_test.go  |      76 ++++++++++++++++++++++++++++---
       
       1 file changed, 69 insertions(+), 7 deletions(-)
       ---
 (DIR) diff --git a/hugolib/site_benchmark_new_test.go b/hugolib/site_benchmark_new_test.go
       @@ -17,6 +17,7 @@ import (
                "fmt"
                "path"
                "path/filepath"
       +        "strconv"
                "strings"
                "testing"
        )
       @@ -28,15 +29,30 @@ type siteBenchmarkTestcase struct {
        }
        
        func getBenchmarkSiteNewTestCases() []siteBenchmarkTestcase {
       -        // TODO(bep) create some common and stable data set
        
       -        const pageContent = `---
       +        const markdownSnippets = `
       +
       +## Links
       +
       +
       +This is [an example](http://example.com/ "Title") inline link.
       +
       +[This link](http://example.net/) has no title attribute.
       +
       +This is [Relative](/all-is-relative).
       +
       +See my [About](/about/) page for details. 
       +`
       +
       +        pageContent := func(size int) string {
       +                return `---
        title: "My Page"
        ---
        
        My page content.
        
       -`
       +` + strings.Repeat(markdownSnippets, size)
       +        }
        
                config := `
        baseURL = "https://example.com"
       @@ -46,7 +62,7 @@ baseURL = "https://example.com"
                benchmarks := []siteBenchmarkTestcase{
                        {"Bundle with image", func(b testing.TB) *sitesBuilder {
                                sb := newTestSitesBuilder(b).WithConfigFile("toml", config)
       -                        sb.WithContent("content/blog/mybundle/index.md", pageContent)
       +                        sb.WithContent("content/blog/mybundle/index.md", pageContent(1))
                                sb.WithSunset("content/blog/mybundle/sunset1.jpg")
        
                                return sb
       @@ -59,7 +75,7 @@ baseURL = "https://example.com"
                        },
                        {"Bundle with JSON file", func(b testing.TB) *sitesBuilder {
                                sb := newTestSitesBuilder(b).WithConfigFile("toml", config)
       -                        sb.WithContent("content/blog/mybundle/index.md", pageContent)
       +                        sb.WithContent("content/blog/mybundle/index.md", pageContent(1))
                                sb.WithContent("content/blog/mybundle/mydata.json", `{ "hello": "world" }`)
        
                                return sb
       @@ -70,6 +86,52 @@ baseURL = "https://example.com"
        
                                },
                        },
       +                {"Tags and categories", func(b testing.TB) *sitesBuilder {
       +                        sb := newTestSitesBuilder(b).WithConfigFile("toml", `
       +title = "Tags and Cats"
       +baseURL = "https://example.com"
       +
       +`)
       +
       +                        const pageTemplate = `
       +---
       +title: "Some tags and cats"
       +categories: ["caGR", "cbGR"]
       +tags: ["taGR", "tbGR"]
       +---
       +
       +Some content.
       +                        
       +`
       +                        for i := 1; i <= 100; i++ {
       +                                content := strings.Replace(pageTemplate, "GR", strconv.Itoa(i/3), -1)
       +                                sb.WithContent(fmt.Sprintf("content/page%d.md", i), content)
       +                        }
       +
       +                        return sb
       +                },
       +                        func(s *sitesBuilder) {
       +                                s.AssertFileContent("public/page3/index.html", "/page3/|Permalink: https://example.com/page3/")
       +                                s.AssertFileContent("public/tags/ta3/index.html", "|ta3|")
       +                        },
       +                },
       +                {"Canonify URLs", func(b testing.TB) *sitesBuilder {
       +                        sb := newTestSitesBuilder(b).WithConfigFile("toml", `
       +title = "Canon"
       +baseURL = "https://example.com"
       +canonifyURLs = true
       +
       +`)
       +                        for i := 1; i <= 100; i++ {
       +                                sb.WithContent(fmt.Sprintf("content/page%d.md", i), pageContent(i))
       +                        }
       +
       +                        return sb
       +                },
       +                        func(s *sitesBuilder) {
       +                                s.AssertFileContent("public/page8/index.html", "https://example.com/about/")
       +                        },
       +                },
                        {"Deep content tree", func(b testing.TB) *sitesBuilder {
        
                                sb := newTestSitesBuilder(b).WithConfigFile("toml", `
       @@ -92,13 +154,13 @@ contentDir="content/sv"
        `)
        
                                createContent := func(dir, name string) {
       -                                sb.WithContent(filepath.Join("content", dir, name), pageContent)
       +                                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)
       +                                        sb.WithContent(filepath.Join("content", dir, fmt.Sprintf("page%d.md", i)), pageContent(1))
                                        }
                                }