summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2009-04-14 21:25:33 -0700
committerRuss Cox <rsc@golang.org>2009-04-14 21:25:33 -0700
commite775ea3656c7e6f5f2dedabd6c39f34a195eba39 (patch)
tree5365a80deab28b847795c58ce1ff45aa1b2962e8
parent189d275a332913ff6219ee4fe91de45c0ecde691 (diff)
downloadgolang-e775ea3656c7e6f5f2dedabd6c39f34a195eba39.tar.gz
test & fix template used twice
R=r DELTA=30 (30 added, 0 deleted, 0 changed) OCL=27470 CL=27474
-rw-r--r--src/lib/template/template.go1
-rw-r--r--src/lib/template/template_test.go29
2 files changed, 30 insertions, 0 deletions
diff --git a/src/lib/template/template.go b/src/lib/template/template.go
index 6fa8a0d63..d285ddb44 100644
--- a/src/lib/template/template.go
+++ b/src/lib/template/template.go
@@ -514,6 +514,7 @@ func (t *Template) Execute(data interface{}, wr io.Write) *os.Error {
val := reflect.NewValue(data);
ch := make(chan *os.Error);
go func() {
+ t.p = 0;
t.execute(&state{nil, ch, val, wr});
ch <- nil; // clean return;
}();
diff --git a/src/lib/template/template_test.go b/src/lib/template/template_test.go
index 090a09136..e3b018845 100644
--- a/src/lib/template/template_test.go
+++ b/src/lib/template/template_test.go
@@ -199,8 +199,37 @@ func TestStringDriverType(t *testing.T) {
}
var b io.ByteBuffer;
err = tmpl.Execute("hello", &b);
+ if err != nil {
+ t.Error("unexpected parse error:", err)
+ }
s := string(b.Data());
if s != "template: hello" {
t.Errorf("failed passing string as data: expected %q got %q", "template: hello", s)
}
}
+
+func TestTwice(t *testing.T) {
+ tmpl, err, line := Parse("template: {@}", nil);
+ if err != nil {
+ t.Error("unexpected parse error:", err)
+ }
+ var b io.ByteBuffer;
+ err = tmpl.Execute("hello", &b);
+ if err != nil {
+ t.Error("unexpected parse error:", err)
+ }
+ s := string(b.Data());
+ text := "template: hello";
+ if s != text {
+ t.Errorf("failed passing string as data: expected %q got %q", text, s);
+ }
+ err = tmpl.Execute("hello", &b);
+ if err != nil {
+ t.Error("unexpected parse error:", err)
+ }
+ s = string(b.Data());
+ text += text;
+ if s != text {
+ t.Errorf("failed passing string as data: expected %q got %q", text, s);
+ }
+}