-
Notifications
You must be signed in to change notification settings - Fork 919
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
cfed3f0
commit b406422
Showing
3 changed files
with
118 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
package template_smoke | ||
|
||
func Function() { | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,112 @@ | ||
//go:build go1.16 | ||
// +build go1.16 | ||
|
||
// Copyright 2011 The Go Authors. All rights reserved. | ||
// Use of this source code is governed by a BSD-style | ||
// license that can be found in the LICENSE file. | ||
package template_smoke_test | ||
|
||
import ( | ||
"os" | ||
"strings" | ||
"testing" | ||
"text/template" | ||
) | ||
|
||
func TestExampleTemplate(tt *testing.T) { | ||
// Define a template. | ||
const letter = ` | ||
Dear {{.Name}}, | ||
{{if .Attended}} | ||
It was a pleasure to see you at the wedding. | ||
{{- else}} | ||
It is a shame you couldn't make it to the wedding. | ||
{{- end}} | ||
{{with .Gift -}} | ||
Thank you for the lovely {{.}}. | ||
{{end}} | ||
Best wishes, | ||
Josie | ||
` | ||
|
||
// Prepare some data to insert into the template. | ||
type Recipient struct { | ||
Name, Gift string | ||
Attended bool | ||
} | ||
var recipients = []Recipient{ | ||
{"Aunt Mildred", "bone china tea set", true}, | ||
{"Uncle John", "moleskin pants", false}, | ||
{"Cousin Rodney", "", false}, | ||
} | ||
|
||
// Create a new template and parse the letter into it. | ||
t := template.Must(template.New("letter").Parse(letter)) | ||
|
||
// Execute the template for each recipient. | ||
for _, r := range recipients { | ||
err := t.Execute(os.Stdout, r) | ||
if err != nil { | ||
tt.Log("executing template:", err) | ||
} | ||
} | ||
|
||
// Output: | ||
// Dear Aunt Mildred, | ||
// | ||
// It was a pleasure to see you at the wedding. | ||
// Thank you for the lovely bone china tea set. | ||
// | ||
// Best wishes, | ||
// Josie | ||
// | ||
// Dear Uncle John, | ||
// | ||
// It is a shame you couldn't make it to the wedding. | ||
// Thank you for the lovely moleskin pants. | ||
// | ||
// Best wishes, | ||
// Josie | ||
// | ||
// Dear Cousin Rodney, | ||
// | ||
// It is a shame you couldn't make it to the wedding. | ||
// | ||
// Best wishes, | ||
// Josie | ||
} | ||
|
||
// The following example is duplicated in html/template; keep them in sync. | ||
|
||
func TestExampleTemplate_block(tt *testing.T) { | ||
const ( | ||
master = `Names:{{block "list" .}}{{"\n"}}{{range .}}{{println "-" .}}{{end}}{{end}}` | ||
overlay = `{{define "list"}} {{join . ", "}}{{end}} ` | ||
) | ||
var ( | ||
funcs = template.FuncMap{"join": strings.Join} | ||
guardians = []string{"Gamora", "Groot", "Nebula", "Rocket", "Star-Lord"} | ||
) | ||
masterTmpl, err := template.New("master").Funcs(funcs).Parse(master) | ||
if err != nil { | ||
tt.Fatal(err) | ||
} | ||
overlayTmpl, err := template.Must(masterTmpl.Clone()).Parse(overlay) | ||
if err != nil { | ||
tt.Fatal(err) | ||
} | ||
if err := masterTmpl.Execute(os.Stdout, guardians); err != nil { | ||
tt.Fatal(err) | ||
} | ||
if err := overlayTmpl.Execute(os.Stdout, guardians); err != nil { | ||
tt.Fatal(err) | ||
} | ||
// Output: | ||
// Names: | ||
// - Gamora | ||
// - Groot | ||
// - Nebula | ||
// - Rocket | ||
// - Star-Lord | ||
// Names: Gamora, Groot, Nebula, Rocket, Star-Lord | ||
} |