404_test.go (2184B)
1 // Copyright 2017 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 "testing" 18 ) 19 20 func Test404(t *testing.T) { 21 t.Parallel() 22 23 b := newTestSitesBuilder(t) 24 b.WithSimpleConfigFile().WithTemplatesAdded( 25 "404.html", 26 ` 27 {{ $home := site.Home }} 28 404: 29 Parent: {{ .Parent.Kind }} 30 IsAncestor: {{ .IsAncestor $home }}/{{ $home.IsAncestor . }} 31 IsDescendant: {{ .IsDescendant $home }}/{{ $home.IsDescendant . }} 32 CurrentSection: {{ .CurrentSection.Kind }}| 33 FirstSection: {{ .FirstSection.Kind }}| 34 InSection: {{ .InSection $home.Section }}|{{ $home.InSection . }} 35 Sections: {{ len .Sections }}| 36 Page: {{ .Page.RelPermalink }}| 37 Data: {{ len .Data }}| 38 39 `, 40 ) 41 b.Build(BuildCfg{}) 42 43 // Note: We currently have only 1 404 page. One might think that we should have 44 // multiple, to follow the Custom Output scheme, but I don't see how that would work 45 // right now. 46 b.AssertFileContent("public/404.html", ` 47 48 404: 49 Parent: home 50 IsAncestor: false/true 51 IsDescendant: true/false 52 CurrentSection: home| 53 FirstSection: home| 54 InSection: false|true 55 Sections: 0| 56 Page: /404.html| 57 Data: 1| 58 59 `) 60 } 61 62 func Test404WithBase(t *testing.T) { 63 t.Parallel() 64 65 b := newTestSitesBuilder(t) 66 b.WithSimpleConfigFile().WithTemplates("404.html", `{{ define "main" }} 67 Page not found 68 {{ end }}`, 69 "baseof.html", `Base: {{ block "main" . }}{{ end }}`).WithContent("page.md", ``) 70 71 b.Build(BuildCfg{}) 72 73 // Note: We currently have only 1 404 page. One might think that we should have 74 // multiple, to follow the Custom Output scheme, but I don't see how that would work 75 // right now. 76 b.AssertFileContent("public/404.html", ` 77 Base: 78 Page not found`) 79 }