From 3298300ddf45a0792b4d8ea5e05f0fbceec4c9f9 Mon Sep 17 00:00:00 2001 From: Meng Zhuo Date: Thu, 10 Dec 2020 09:52:52 +0800 Subject: text/template: error on range over send channel MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit template range require channel contains RecvDir if recv on send only channel will raise an panic. Fixes #43065 Change-Id: Ie0ea70ce60e074bf8c9f2378e07ef1d4c41dc38f Reviewed-on: https://go-review.googlesource.com/c/go/+/276532 Trust: Meng Zhuo Run-TryBot: Meng Zhuo TryBot-Result: Go Bot Reviewed-by: Jonathan Amsterdam Reviewed-by: Daniel Martí --- src/text/template/exec_test.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/text/template/exec_test.go') diff --git a/src/text/template/exec_test.go b/src/text/template/exec_test.go index 1611ee054f..1a129ed5af 100644 --- a/src/text/template/exec_test.go +++ b/src/text/template/exec_test.go @@ -1697,3 +1697,16 @@ func TestIssue31810(t *testing.T) { t.Errorf("%s got %q, expected %q", textCall, b.String(), "result") } } + +// Issue 43065, range over send only channel +func TestIssue43065(t *testing.T) { + var b bytes.Buffer + tmp := Must(New("").Parse(`{{range .}}{{end}}`)) + ch := make(chan<- int) + err := tmp.Execute(&b, ch) + if err == nil { + t.Error("expected err got nil") + } else if !strings.Contains(err.Error(), "range over send-only channel") { + t.Errorf("%s", err) + } +} -- cgit v1.3-5-g9baa