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 14package hugolib 15 16import ( 17 "testing" 18) 19 20func Test404(t *testing.T) { 21 t.Parallel() 22 23 b := newTestSitesBuilder(t) 24 b.WithSimpleConfigFile().WithTemplatesAdded( 25 "404.html", 26 ` 27{{ $home := site.Home }} 28404: 29Parent: {{ .Parent.Kind }} 30IsAncestor: {{ .IsAncestor $home }}/{{ $home.IsAncestor . }} 31IsDescendant: {{ .IsDescendant $home }}/{{ $home.IsDescendant . }} 32CurrentSection: {{ .CurrentSection.Kind }}| 33FirstSection: {{ .FirstSection.Kind }}| 34InSection: {{ .InSection $home.Section }}|{{ $home.InSection . }} 35Sections: {{ len .Sections }}| 36Page: {{ .Page.RelPermalink }}| 37Data: {{ 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: 49Parent: home 50IsAncestor: false/true 51IsDescendant: true/false 52CurrentSection: home| 53FirstSection: home| 54InSection: false|true 55Sections: 0| 56Page: /404.html| 57Data: 1| 58 59`) 60} 61 62func Test404WithBase(t *testing.T) { 63 t.Parallel() 64 65 b := newTestSitesBuilder(t) 66 b.WithSimpleConfigFile().WithTemplates("404.html", `{{ define "main" }} 67Page 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", ` 77Base: 78Page not found`) 79} 80