ref: e4ed9d6b021a75d060bf598369fdee12b29a89fb
parent: be45399cba0a47910db7a142e1574a9da1534713
author: bep <bjorn.erik.pedersen@gmail.com>
date: Sun May 31 09:01:20 EDT 2015
Add some Ace test cases See #1178
--- a/tpl/template.go
+++ b/tpl/template.go
@@ -41,6 +41,7 @@
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()
--- a/tpl/template_test.go
+++ b/tpl/template_test.go
@@ -1,10 +1,82 @@
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) {--
⑨