mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-07 20:30:36 -05:00
parent
be45399cba
commit
e4ed9d6b02
2 changed files with 73 additions and 0 deletions
|
@ -41,6 +41,7 @@ type Template interface {
|
|||
LoadTemplates(absPath string)
|
||||
LoadTemplatesWithPrefix(absPath, prefix string)
|
||||
AddTemplate(name, tpl string) error
|
||||
AddAceTemplate(name, basePath, innerPath string, baseContent, innerContent []byte) error
|
||||
AddInternalTemplate(prefix, name, tpl string) error
|
||||
AddInternalShortcode(name, tpl string) error
|
||||
PrintErrors()
|
||||
|
|
|
@ -1,11 +1,83 @@
|
|||
package tpl
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"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
|
||||
func TestTplGoFuzzReports(t *testing.T) {
|
||||
|
||||
|
|
Loading…
Reference in a new issue