template_funcs_test.go (2074B)
1 // Copyright 2019 The Hugo Authors. All rights reserved.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 // http://www.apache.org/licenses/LICENSE-2.0
7 //
8 // Unless required by applicable law or agreed to in writing, software
9 // distributed under the License is distributed on an "AS IS" BASIS,
10 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 // See the License for the specific language governing permissions and
12 // limitations under the License.
13
14 package tplimpl_test
15
16 import (
17 "fmt"
18 "strings"
19 "testing"
20
21 "github.com/gohugoio/hugo/hugolib"
22
23 "github.com/gohugoio/hugo/tpl/internal"
24 )
25
26 func TestTemplateFuncsExamples(t *testing.T) {
27 t.Parallel()
28
29 files := `
30 -- config.toml --
31 disableKinds=["home", "section", "taxonomy", "term", "sitemap", "robotsTXT"]
32 ignoreErrors = ["my-err-id"]
33 [outputs]
34 home=["HTML"]
35 -- layouts/partials/header.html --
36 <title>Hugo Rocks!</title>
37 -- files/README.txt --
38 Hugo Rocks!
39 -- content/blog/hugo-rocks.md --
40 ---
41 title: "**BatMan**"
42 ---
43 `
44
45 b := hugolib.NewIntegrationTestBuilder(
46 hugolib.IntegrationTestConfig{
47 T: t,
48 TxtarString: files,
49 NeedsOsFS: true,
50 },
51 ).Build()
52
53 d := b.H.Sites[0].Deps
54
55 var (
56 templates []string
57 expected []string
58 )
59
60 for _, nsf := range internal.TemplateFuncsNamespaceRegistry {
61 ns := nsf(d)
62 for _, mm := range ns.MethodMappings {
63 for _, example := range mm.Examples {
64 if strings.Contains(example[0], "errorf") {
65 // This will fail the build, so skip for now.
66 continue
67 }
68 templates = append(templates, example[0])
69 expected = append(expected, example[1])
70 }
71 }
72 }
73
74 files += fmt.Sprintf("-- layouts/_default/single.html --\n%s\n", strings.Join(templates, "\n"))
75 b = hugolib.NewIntegrationTestBuilder(
76 hugolib.IntegrationTestConfig{
77 T: t,
78 TxtarString: files,
79 NeedsOsFS: true,
80 },
81 ).Build()
82
83 b.AssertFileContent("public/blog/hugo-rocks/index.html", expected...)
84 }