mirror of
https://github.com/gohugoio/hugo.git
synced 2025-08-17 21:01:26 +02:00
@@ -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) {
|
||||
|
||||
|
Reference in New Issue
Block a user