diff --git a/template_test.go b/template_test.go
index 17690965..16967382 100644
--- a/template_test.go
+++ b/template_test.go
@@ -15,6 +15,7 @@
package beego
import (
+ "bytes"
"os"
"path/filepath"
"testing"
@@ -142,3 +143,116 @@ func TestRelativeTemplate(t *testing.T) {
}
os.RemoveAll(dir)
}
+
+var add = `{{ template "layout_blog.tpl" . }}
+{{ define "css" }}
+
+{{ end}}
+
+
+{{ define "content" }}
+
{{ .Title }}
+ This is SomeVar: {{ .SomeVar }}
+{{ end }}
+
+{{ define "js" }}
+
+{{ end}}`
+
+var layout_blog = `
+
+
+ Lin Li
+
+
+
+
+ {{ block "css" . }}{{ end }}
+
+
+
+
+ {{ block "content" . }}{{ end }}
+
+
+
+ {{ block "js" . }}{{ end }}
+
+`
+
+var output = `
+
+
+ Lin Li
+
+
+
+
+
+
+
+
+
+
+
+
+
Hello
+
This is SomeVar: val
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`
+
+func TestTemplateLayout(t *testing.T) {
+ dir := "_beeTmp"
+ files := []string{
+ "add.tpl",
+ "layout_blog.tpl",
+ }
+ if err := os.MkdirAll(dir, 0777); err != nil {
+ t.Fatal(err)
+ }
+ for k, name := range files {
+ os.MkdirAll(filepath.Dir(filepath.Join(dir, name)), 0777)
+ if f, err := os.Create(filepath.Join(dir, name)); err != nil {
+ t.Fatal(err)
+ } else {
+ if k == 0 {
+ f.WriteString(add)
+ } else if k == 1 {
+ f.WriteString(layout_blog)
+ }
+ f.Close()
+ }
+ }
+ if err := AddViewPath(dir); err != nil {
+ t.Fatal(err)
+ }
+ beeTemplates := beeViewPathTemplates[dir]
+ if len(beeTemplates) != 2 {
+ t.Fatalf("should be 2 but got %v", len(beeTemplates))
+ }
+ out := bytes.NewBufferString("")
+ if err := beeTemplates["add.tpl"].ExecuteTemplate(out, "add.tpl", map[string]string{"Title": "Hello", "SomeVar": "val"}); err != nil {
+ t.Fatal(err)
+ }
+ if out.String() != output {
+ t.Log(out.String())
+ t.Fatal("Compare failed")
+ }
+ for _, name := range files {
+ os.RemoveAll(filepath.Join(dir, name))
+ }
+ os.RemoveAll(dir)
+}