mirror of
https://github.com/gohugoio/hugo.git
synced 2025-03-21 12:11:03 +00:00
parent
be45399cba
commit
e4ed9d6b02
2 changed files with 73 additions and 0 deletions
|
@ -41,6 +41,7 @@ type Template interface {
|
||||||
LoadTemplates(absPath string)
|
LoadTemplates(absPath string)
|
||||||
LoadTemplatesWithPrefix(absPath, prefix string)
|
LoadTemplatesWithPrefix(absPath, prefix string)
|
||||||
AddTemplate(name, tpl string) error
|
AddTemplate(name, tpl string) error
|
||||||
|
AddAceTemplate(name, basePath, innerPath string, baseContent, innerContent []byte) error
|
||||||
AddInternalTemplate(prefix, name, tpl string) error
|
AddInternalTemplate(prefix, name, tpl string) error
|
||||||
AddInternalShortcode(name, tpl string) error
|
AddInternalShortcode(name, tpl string) error
|
||||||
PrintErrors()
|
PrintErrors()
|
||||||
|
|
|
@ -1,11 +1,83 @@
|
||||||
package tpl
|
package tpl
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"errors"
|
"errors"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Some tests for Issue #1178 -- Ace
|
||||||
|
func TestAceTemplates(t *testing.T) {
|
||||||
|
|
||||||
|
for i, this := range []struct {
|
||||||
|
basePath string
|
||||||
|
innerPath string
|
||||||
|
baseContent string
|
||||||
|
innerContent string
|
||||||
|
expect string
|
||||||
|
expectErr int
|
||||||
|
}{
|
||||||
|
{"", filepath.FromSlash("_default/single.ace"), "", "{{ . }}", "DATA", 0},
|
||||||
|
{filepath.FromSlash("_default/baseof.ace"), filepath.FromSlash("_default/single.ace"),
|
||||||
|
`= content main
|
||||||
|
h2 This is a content named "main" of an inner template. {{ . }}`,
|
||||||
|
`= doctype html
|
||||||
|
html lang=en
|
||||||
|
head
|
||||||
|
meta charset=utf-8
|
||||||
|
title Base and Inner Template
|
||||||
|
body
|
||||||
|
h1 This is a base template {{ . }}
|
||||||
|
= yield main`, `<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>Base and Inner Template</title></head><body><h1>This is a base template DATA</h1></body></html>`, 0},
|
||||||
|
} {
|
||||||
|
|
||||||
|
for _, root := range []string{"", os.TempDir()} {
|
||||||
|
|
||||||
|
templ := New()
|
||||||
|
|
||||||
|
basePath := this.basePath
|
||||||
|
innerPath := this.innerPath
|
||||||
|
|
||||||
|
if basePath != "" && root != "" {
|
||||||
|
basePath = filepath.Join(root, basePath)
|
||||||
|
}
|
||||||
|
|
||||||
|
if innerPath != "" && root != "" {
|
||||||
|
innerPath = filepath.Join(root, innerPath)
|
||||||
|
}
|
||||||
|
|
||||||
|
d := "DATA"
|
||||||
|
|
||||||
|
err := templ.AddAceTemplate("mytemplate.ace", basePath, innerPath,
|
||||||
|
[]byte(this.baseContent), []byte(this.innerContent))
|
||||||
|
|
||||||
|
if err != nil && this.expectErr == 0 {
|
||||||
|
t.Errorf("Test %d with root '%s' errored: %s", i, root, err)
|
||||||
|
} else if err == nil && this.expectErr == 1 {
|
||||||
|
t.Errorf("#1 Test %d with root '%s' should have errored", i, root)
|
||||||
|
}
|
||||||
|
|
||||||
|
var buff bytes.Buffer
|
||||||
|
err = templ.ExecuteTemplate(&buff, "mytemplate.html", d)
|
||||||
|
|
||||||
|
if err != nil && this.expectErr == 0 {
|
||||||
|
t.Errorf("Test %d with root '%s' errored: %s", i, root, err)
|
||||||
|
} else if err == nil && this.expectErr == 2 {
|
||||||
|
t.Errorf("#2 Test with root '%s' %d should have errored", root, i)
|
||||||
|
} else {
|
||||||
|
result := buff.String()
|
||||||
|
if result != this.expect {
|
||||||
|
t.Errorf("Test %d with root '%s' got\n%s\nexpected\n%s", i, root, result, this.expect)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// Test for bugs discovered by https://github.com/dvyukov/go-fuzz
|
// Test for bugs discovered by https://github.com/dvyukov/go-fuzz
|
||||||
func TestTplGoFuzzReports(t *testing.T) {
|
func TestTplGoFuzzReports(t *testing.T) {
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue