aboutsummaryrefslogtreecommitdiff
path: root/src/html/template/multi_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/html/template/multi_test.go')
-rw-r--r--src/html/template/multi_test.go43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/html/template/multi_test.go b/src/html/template/multi_test.go
index 50526c5b65..6535ab6c04 100644
--- a/src/html/template/multi_test.go
+++ b/src/html/template/multi_test.go
@@ -7,7 +7,9 @@
package template
import (
+ "archive/zip"
"bytes"
+ "os"
"testing"
"text/template/parse"
)
@@ -82,6 +84,35 @@ func TestParseGlob(t *testing.T) {
testExecute(multiExecTests, template, t)
}
+func TestParseFS(t *testing.T) {
+ fs := os.DirFS("testdata")
+
+ {
+ _, err := ParseFS(fs, "DOES NOT EXIST")
+ if err == nil {
+ t.Error("expected error for non-existent file; got none")
+ }
+ }
+
+ {
+ template := New("root")
+ _, err := template.ParseFS(fs, "file1.tmpl", "file2.tmpl")
+ if err != nil {
+ t.Fatalf("error parsing files: %v", err)
+ }
+ testExecute(multiExecTests, template, t)
+ }
+
+ {
+ template := New("root")
+ _, err := template.ParseFS(fs, "file*.tmpl")
+ if err != nil {
+ t.Fatalf("error parsing files: %v", err)
+ }
+ testExecute(multiExecTests, template, t)
+ }
+}
+
// In these tests, actual content (not just template definitions) comes from the parsed files.
var templateFileExecTests = []execTest{
@@ -104,6 +135,18 @@ func TestParseGlobWithData(t *testing.T) {
testExecute(templateFileExecTests, template, t)
}
+func TestParseZipFS(t *testing.T) {
+ z, err := zip.OpenReader("testdata/fs.zip")
+ if err != nil {
+ t.Fatalf("error parsing zip: %v", err)
+ }
+ template, err := New("root").ParseFS(z, "tmpl*.tmpl")
+ if err != nil {
+ t.Fatalf("error parsing files: %v", err)
+ }
+ testExecute(templateFileExecTests, template, t)
+}
+
const (
cloneText1 = `{{define "a"}}{{template "b"}}{{template "c"}}{{end}}`
cloneText2 = `{{define "b"}}b{{end}}`