]> Cypherpunks repositories - gostls13.git/commitdiff
test & fix template used twice
authorRuss Cox <rsc@golang.org>
Wed, 15 Apr 2009 04:25:33 +0000 (21:25 -0700)
committerRuss Cox <rsc@golang.org>
Wed, 15 Apr 2009 04:25:33 +0000 (21:25 -0700)
R=r
DELTA=30  (30 added, 0 deleted, 0 changed)
OCL=27470
CL=27474

src/lib/template/template.go
src/lib/template/template_test.go

index 6fa8a0d6334e579d48465acc6fd9ccbf82353567..d285ddb444b8bf593fc65310f321f6969eb652be 100644 (file)
@@ -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;
        }();
index 090a0913653067b83b32322a2b19bca2bc96514e..e3b018845b80e648a1d3271df6e5c3a89f02c3f5 100644 (file)
@@ -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);
+       }
+}