Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Fenny 2020-06-07 22:17:31 +02:00
commit d7dd49f01a
2 changed files with 30 additions and 5 deletions

17
ctx.go
View File

@ -12,11 +12,11 @@ import (
"errors" "errors"
"fmt" "fmt"
"io" "io"
"io/ioutil"
"log" "log"
"mime/multipart" "mime/multipart"
"net/http" "net/http"
"net/url" "net/url"
"os"
"path/filepath" "path/filepath"
"regexp" "regexp"
"strconv" "strconv"
@ -752,14 +752,21 @@ func (ctx *Ctx) Render(name string, bind interface{}) (err error) {
} else { } else {
// Render raw template using 'name' as filepath if no engine is set // Render raw template using 'name' as filepath if no engine is set
var tmpl *template.Template var tmpl *template.Template
var raw []byte raw := bytebufferpool.Get()
defer bytebufferpool.Put(raw)
// Read file // Read file
if raw, err = ioutil.ReadFile(filepath.Clean(name)); err != nil { f, err := os.Open(filepath.Clean(name))
if err != nil {
return err
}
if _, err = raw.ReadFrom(f); err != nil {
return err
}
if err = f.Close(); err != nil {
return err return err
} }
// Parse template // Parse template
// tmpl, err := template.ParseGlob(name) if tmpl, err = template.New("").Parse(raw.String()); err != nil {
if tmpl, err = template.New("").ParseGlob(getString(raw)); err != nil {
return err return err
} }
// Render template // Render template

View File

@ -1054,6 +1054,24 @@ func Test_Ctx_Redirect(t *testing.T) {
// // TODO // // TODO
// } // }
// go test -run Test_Ctx_Render_Go_Template
func Test_Ctx_Render_Go_Template(t *testing.T) {
t.Parallel()
file, err := ioutil.TempFile(os.TempDir(), "fiber")
utils.AssertEqual(t, nil, err)
defer os.Remove(file.Name())
_, err = file.Write([]byte("template"))
utils.AssertEqual(t, nil, err)
err = file.Close()
utils.AssertEqual(t, nil, err)
app := New()
ctx := app.AcquireCtx(&fasthttp.RequestCtx{})
defer app.ReleaseCtx(ctx)
err = ctx.Render(file.Name(), nil)
utils.AssertEqual(t, nil, err)
utils.AssertEqual(t, "template", string(ctx.Fasthttp.Response.Body()))
}
// go test -run Test_Ctx_Send // go test -run Test_Ctx_Send
func Test_Ctx_Send(t *testing.T) { func Test_Ctx_Send(t *testing.T) {
t.Parallel() t.Parallel()