diff options
Diffstat (limited to 'hugolib/hugo_themes_test.go')
-rw-r--r-- | hugolib/hugo_themes_test.go | 268 |
1 files changed, 0 insertions, 268 deletions
diff --git a/hugolib/hugo_themes_test.go b/hugolib/hugo_themes_test.go deleted file mode 100644 index 05bfaa692..000000000 --- a/hugolib/hugo_themes_test.go +++ /dev/null @@ -1,268 +0,0 @@ -// Copyright 2018 The Hugo Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package hugolib - -import ( - "fmt" - "os" - "path/filepath" - "testing" - - "github.com/gohugoio/hugo/common/loggers" -) - -func TestThemesGraph(t *testing.T) { - t.Parallel() - - const ( - themeStandalone = ` -title = "Theme Standalone" -[params] -v1 = "v1s" -v2 = "v2s" -` - themeCyclic = ` -title = "Theme Cyclic" -theme = "theme3" -[params] -v1 = "v1c" -v2 = "v2c" -` - theme1 = ` -title = "Theme #1" -theme = "themeStandalone" -[params] -v2 = "v21" -` - - theme2 = ` -title = "Theme #2" -theme = "theme1" -[params] -v1 = "v12" -` - - theme3 = ` -title = "Theme #3" -theme = ["theme2", "themeStandalone", "themeCyclic"] -[params] -v1 = "v13" -v2 = "v24" -` - - theme4 = ` -title = "Theme #4" -theme = "theme3" -[params] -v1 = "v14" -v2 = "v24" -` - - site1 = ` - theme = "theme4" - - [params] - v1 = "site" -` - site2 = ` - theme = ["theme2", "themeStandalone"] -` - ) - - var ( - testConfigs = []struct { - siteConfig string - - // The name of theme somewhere in the middle to write custom key/files. - offset string - - check func(b *sitesBuilder) - }{ - {site1, "theme3", func(b *sitesBuilder) { - - // site1: theme4 theme3 theme2 theme1 themeStandalone themeCyclic - - // Check data - // theme3 should win the offset competition - b.AssertFileContent("public/index.html", "theme1o::[offset][v]theme3", "theme4o::[offset][v]theme3", "themeStandaloneo::[offset][v]theme3") - b.AssertFileContent("public/index.html", "nproject::[inner][other]project|[project][other]project|[theme][other]theme4|[theme1][other]theme1") - b.AssertFileContent("public/index.html", "ntheme::[inner][other]theme4|[theme][other]theme4|[theme1][other]theme1|[theme2][other]theme2|[theme3][other]theme3") - b.AssertFileContent("public/index.html", "theme1::[inner][other]project|[project][other]project|[theme][other]theme1|[theme1][other]theme1|") - b.AssertFileContent("public/index.html", "theme4::[inner][other]project|[project][other]project|[theme][other]theme4|[theme4][other]theme4|") - - // Check layouts - b.AssertFileContent("public/index.html", "partial ntheme: theme4", "partial theme2o: theme3") - - // Check i18n - b.AssertFileContent("public/index.html", "i18n: project theme4") - - // Check static files - // TODO(bep) static files not currently part of the build b.AssertFileContent("public/nproject.txt", "TODO") - - // Check site params - b.AssertFileContent("public/index.html", "v1::site", "v2::v24") - }}, - {site2, "", func(b *sitesBuilder) { - - // site2: theme2 theme1 themeStandalone - b.AssertFileContent("public/index.html", "nproject::[inner][other]project|[project][other]project|[theme][other]theme2|[theme1][other]theme1|[theme2][other]theme2|[themeStandalone][other]themeStandalone|") - b.AssertFileContent("public/index.html", "ntheme::[inner][other]theme2|[theme][other]theme2|[theme1][other]theme1|[theme2][other]theme2|[themeStandalone][other]themeStandalone|") - b.AssertFileContent("public/index.html", "i18n: project theme2") - b.AssertFileContent("public/index.html", "partial ntheme: theme2") - - // Params only set in themes - b.AssertFileContent("public/index.html", "v1::v12", "v2::v21") - - }}, - } - - themeConfigs = []struct { - name string - config string - }{ - {"themeStandalone", themeStandalone}, - {"themeCyclic", themeCyclic}, - {"theme1", theme1}, - {"theme2", theme2}, - {"theme3", theme3}, - {"theme4", theme4}, - } - ) - - for i, testConfig := range testConfigs { - t.Log(fmt.Sprintf("Test %d", i)) - b := newTestSitesBuilder(t).WithLogger(loggers.NewErrorLogger()) - b.WithConfigFile("toml", testConfig.siteConfig) - - for _, tc := range themeConfigs { - var variationsNameBase = []string{"nproject", "ntheme", tc.name} - - themeRoot := filepath.Join("themes", tc.name) - b.WithSourceFile(filepath.Join(themeRoot, "config.toml"), tc.config) - - b.WithSourceFile(filepath.Join("layouts", "partials", "m.html"), `{{- range $k, $v := . }}{{ $k }}::{{ template "printv" $v }} -{{ end }} -{{ define "printv" }} -{{- $tp := printf "%T" . -}} -{{- if (strings.HasSuffix $tp "map[string]interface {}") -}} -{{- range $k, $v := . }}[{{ $k }}]{{ template "printv" $v }}{{ end -}} -{{- else -}} -{{- . }}| -{{- end -}} -{{ end }} -`) - - for _, nameVariaton := range variationsNameBase { - roots := []string{"", themeRoot} - - for _, root := range roots { - name := tc.name - if root == "" { - name = "project" - } - - if nameVariaton == "ntheme" && name == "project" { - continue - } - - // static - b.WithSourceFile(filepath.Join(root, "static", nameVariaton+".txt"), name) - - // layouts - if i == 1 { - b.WithSourceFile(filepath.Join(root, "layouts", "partials", "theme2o.html"), "Not Set") - } - b.WithSourceFile(filepath.Join(root, "layouts", "partials", nameVariaton+".html"), name) - if root != "" && testConfig.offset == tc.name { - for _, tc2 := range themeConfigs { - b.WithSourceFile(filepath.Join(root, "layouts", "partials", tc2.name+"o.html"), name) - } - } - - // i18n + data - - var dataContent string - if root == "" { - dataContent = fmt.Sprintf(` -[%s] -other = %q - -[inner] -other = %q - -`, name, name, name) - } else { - dataContent = fmt.Sprintf(` -[%s] -other = %q - -[inner] -other = %q - -[theme] -other = %q - -`, name, name, name, name) - } - - b.WithSourceFile(filepath.Join(root, "data", nameVariaton+".toml"), dataContent) - b.WithSourceFile(filepath.Join(root, "i18n", "en.toml"), dataContent) - - // If an offset is set, duplicate a data key with a winner in the middle. - if root != "" && testConfig.offset == tc.name { - for _, tc2 := range themeConfigs { - dataContent := fmt.Sprintf(` -[offset] -v = %q -`, tc.name) - b.WithSourceFile(filepath.Join(root, "data", tc2.name+"o.toml"), dataContent) - } - } - } - - } - - } - - for _, themeConfig := range themeConfigs { - b.WithSourceFile(filepath.Join("themes", "config.toml"), themeConfig.config) - } - - b.WithContent(filepath.Join("content", "page.md"), `--- -title: "Page" ---- - -`) - - homeTpl := ` -data: {{ partial "m" .Site.Data }} -i18n: {{ i18n "inner" }} {{ i18n "theme" }} -partial ntheme: {{ partial "ntheme" . }} -partial theme2o: {{ partial "theme2o" . }} -params: {{ partial "m" .Site.Params }} - -` - - b.WithTemplates(filepath.Join("layouts", "home.html"), homeTpl) - - b.Build(BuildCfg{}) - - var _ = os.Stdout - - // printFs(b.H.Deps.BaseFs.LayoutsFs, "", os.Stdout) - testConfig.check(b) - - } - -} |