func (s *TestSuite) TestImplicitExecCtx(c *C) { tpl, err := pongo2.FromString("{{ ImplicitExec }}") if err != nil { c.Fatalf("Error in FromString: %v", err) } val := "a stringy thing" res, err := tpl.Execute(pongo2.NewContext().SetMap(pongo2.ContextMap{ "Value": val, "ImplicitExec": func(ctx *pongo2.ExecutionContext) string { return ctx.Public.GetString("Value") }, })) if err != nil { c.Fatalf("Error executing template: %v", err) } c.Check(res, Equals, val) // The implicit ctx should not be persisted from call-to-call res, err = tpl.Execute(pongo2.NewContext().SetMap(pongo2.ContextMap{ "ImplicitExec": func() string { return val }, })) if err != nil { c.Fatalf("Error executing template: %v", err) } c.Check(res, Equals, val) }
func (s *TestSuite) TestMisc(c *C) { // Must // TODO: Add better error message (see issue #18) c.Check( func() { pongo2.Must(testSuite2.FromFile("template_tests/inheritance/base2.tpl")) }, PanicMatches, `\[Error \(where: fromfile\) in .*template_tests/inheritance/doesnotexist.tpl | Line 1 Col 12 near 'doesnotexist.tpl'\] open .*template_tests/inheritance/doesnotexist.tpl: no such file or directory`, ) // Context context := pongo2.NewContext().Set("'illegal", nil) c.Check(parseTemplateFn("", context), PanicMatches, ".*not a valid identifier.*") // Registers c.Check(func() { pongo2.RegisterFilter("escape", nil) }, PanicMatches, ".*is already registered.*") c.Check(func() { pongo2.RegisterTag("for", nil) }, PanicMatches, ".*is already registered.*") // ApplyFilter v, err := pongo2.ApplyFilter("title", pongo2.AsValue("this is a title"), nil) if err != nil { c.Fatal(err) } c.Check(v.String(), Equals, "This Is A Title") c.Check(func() { _, err := pongo2.ApplyFilter("doesnotexist", nil, nil) if err != nil { panic(err) } }, PanicMatches, `\[Error \(where: applyfilter\)\] Filter with name 'doesnotexist' not found.`) }
pongo2.DefaultSet.BanFilter("banned_filter") pongo2.DefaultSet.BanTag("banned_tag") f, err := ioutil.TempFile("/tmp/", "pongo2_") if err != nil { panic("cannot write to /tmp/") } f.Write([]byte("Hello from pongo2")) pongo2.DefaultSet.Globals.Set("temp_file", f.Name()) } /* * End setup sandbox */ var tplContext = pongo2.NewContext().SetMap(pongo2.ContextMap{ "number": 11, "simple": pongo2.ContextMap{ "number": 42, "name": "john doe", "included_file": "INCLUDES.helper", "included_file_not_exists": "INCLUDES.helper.not_exists", "nil": nil, "uint": uint(8), "float": float64(3.1415), "str": "string", "chinese_hello_world": "你好世界", "bool_true": true, "bool_false": false, "newline_text": `this is a text with a new line in it`,