Add some Ace test cases

See #1178
This commit is contained in:
bep 2015-05-31 13:01:20 +02:00
parent be45399cba
commit e4ed9d6b02
2 changed files with 73 additions and 0 deletions

View file

@ -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()

View file

@ -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) {