breaking_changes_test.go (3544B)
1 // Copyright 2020 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 hugolib
15
16 import (
17 "fmt"
18 "testing"
19
20 qt "github.com/frankban/quicktest"
21 )
22
23 func Test073(t *testing.T) {
24 assertDisabledTaxonomyAndTerm := func(b *sitesBuilder, taxonomy, term bool) {
25 b.Assert(b.CheckExists("public/tags/index.html"), qt.Equals, taxonomy)
26 b.Assert(b.CheckExists("public/tags/tag1/index.html"), qt.Equals, term)
27 }
28
29 assertOutputTaxonomyAndTerm := func(b *sitesBuilder, taxonomy, term bool) {
30 b.Assert(b.CheckExists("public/tags/index.json"), qt.Equals, taxonomy)
31 b.Assert(b.CheckExists("public/tags/tag1/index.json"), qt.Equals, term)
32 }
33
34 for _, this := range []struct {
35 name string
36 config string
37 assert func(err error, out string, b *sitesBuilder)
38 }{
39 {
40 "Outputs for both taxonomy and taxonomyTerm",
41 `[outputs]
42 taxonomy = ["JSON"]
43 taxonomyTerm = ["JSON"]
44
45 `,
46 func(err error, out string, b *sitesBuilder) {
47 b.Assert(err, qt.IsNil)
48 assertOutputTaxonomyAndTerm(b, true, true)
49 },
50 },
51 {
52 "Outputs for taxonomyTerm",
53 `[outputs]
54 taxonomyTerm = ["JSON"]
55
56 `,
57 func(err error, out string, b *sitesBuilder) {
58 b.Assert(err, qt.IsNil)
59 assertOutputTaxonomyAndTerm(b, true, false)
60 },
61 },
62 {
63 "Outputs for taxonomy only",
64 `[outputs]
65 taxonomy = ["JSON"]
66
67 `,
68 func(err error, out string, b *sitesBuilder) {
69 b.Assert(err, qt.Not(qt.IsNil))
70 b.Assert(out, qt.Contains, `ignoreErrors = ["error-output-taxonomy"]`)
71 },
72 },
73 {
74 "Outputs for taxonomy only, ignore error",
75 `
76 ignoreErrors = ["error-output-taxonomy"]
77 [outputs]
78 taxonomy = ["JSON"]
79
80 `,
81 func(err error, out string, b *sitesBuilder) {
82 b.Assert(err, qt.IsNil)
83 assertOutputTaxonomyAndTerm(b, true, false)
84 },
85 },
86 {
87 "Disable both taxonomy and taxonomyTerm",
88 `disableKinds = ["taxonomy", "taxonomyTerm"]`,
89 func(err error, out string, b *sitesBuilder) {
90 b.Assert(err, qt.IsNil)
91 assertDisabledTaxonomyAndTerm(b, false, false)
92 },
93 },
94 {
95 "Disable only taxonomyTerm",
96 `disableKinds = ["taxonomyTerm"]`,
97 func(err error, out string, b *sitesBuilder) {
98 b.Assert(err, qt.IsNil)
99 assertDisabledTaxonomyAndTerm(b, false, true)
100 },
101 },
102 {
103 "Disable only taxonomy",
104 `disableKinds = ["taxonomy"]`,
105 func(err error, out string, b *sitesBuilder) {
106 b.Assert(err, qt.Not(qt.IsNil))
107 b.Assert(out, qt.Contains, `ignoreErrors = ["error-disable-taxonomy"]`)
108 },
109 },
110 {
111 "Disable only taxonomy, ignore error",
112 `disableKinds = ["taxonomy"]
113 ignoreErrors = ["error-disable-taxonomy"]`,
114 func(err error, out string, b *sitesBuilder) {
115 b.Assert(err, qt.IsNil)
116 assertDisabledTaxonomyAndTerm(b, false, true)
117 },
118 },
119 } {
120 t.Run(this.name, func(t *testing.T) {
121 b := newTestSitesBuilder(t).WithConfigFile("toml", this.config)
122 b.WithTemplatesAdded("_default/list.json", "JSON")
123 out, err := captureStdout(func() error {
124 return b.BuildE(BuildCfg{})
125 })
126 fmt.Println(out)
127 this.assert(err, out, b)
128 })
129 }
130 }