integration_test.go (2698B)
1 // Copyright 2022 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 resources_test 15 16 import ( 17 "strings" 18 "testing" 19 20 qt "github.com/frankban/quicktest" 21 "github.com/gohugoio/hugo/hugolib" 22 ) 23 24 // Issue 8931 25 func TestImageCache(t *testing.T) { 26 t.Parallel() 27 28 files := ` 29 -- config.toml -- 30 baseURL = "https://example.org" 31 -- content/mybundle/index.md -- 32 --- 33 title: "My Bundle" 34 --- 35 -- content/mybundle/pixel.png -- 36 iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg== 37 -- layouts/foo.html -- 38 -- layouts/index.html -- 39 {{ $p := site.GetPage "mybundle"}} 40 {{ $img := $p.Resources.Get "pixel.png" }} 41 {{ $gif := $img.Resize "1x1 gif" }} 42 {{ $bmp := $img.Resize "1x1 bmp" }} 43 44 gif: {{ $gif.RelPermalink }}|{{ $gif.MediaType }}| 45 bmp: {{ $bmp.RelPermalink }}|{{ $bmp.MediaType }}| 46 ` 47 48 b := hugolib.NewIntegrationTestBuilder( 49 hugolib.IntegrationTestConfig{ 50 T: t, 51 TxtarString: files, 52 NeedsOsFS: true, 53 Running: true, 54 }).Build() 55 56 assertImages := func() { 57 b.AssertFileContent("public/index.html", ` 58 gif: /mybundle/pixel_hu8aa3346827e49d756ff4e630147c42b5_70_1x1_resize_box_3.gif|image/gif| 59 bmp: /mybundle/pixel_hu8aa3346827e49d756ff4e630147c42b5_70_1x1_resize_box_3.bmp|image/bmp| 60 61 `) 62 } 63 64 assertImages() 65 66 b.EditFileReplace("content/mybundle/index.md", func(s string) string { return strings.ReplaceAll(s, "Bundle", "BUNDLE") }) 67 b.Build() 68 69 assertImages() 70 71 } 72 73 func TestSVGError(t *testing.T) { 74 t.Parallel() 75 76 files := ` 77 -- config.toml -- 78 -- assets/circle.svg -- 79 <svg height="100" width="100"><circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" /></svg> 80 -- layouts/index.html -- 81 {{ $svg := resources.Get "circle.svg" }} 82 Width: {{ $svg.Width }} 83 ` 84 85 b, err := hugolib.NewIntegrationTestBuilder( 86 hugolib.IntegrationTestConfig{ 87 T: t, 88 TxtarString: files, 89 NeedsOsFS: true, 90 Running: true, 91 }).BuildE() 92 93 b.Assert(err, qt.IsNotNil) 94 b.Assert(err.Error(), qt.Contains, `error calling Width: this method is only available for raster images. To determine if an image is SVG, you can do {{ if eq .MediaType.SubType "svg" }}{{ end }}`) 95 96 }