From d46e133f7491ed2b3550426387a251ec4ceec4b5 Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Tue, 5 Aug 2014 11:45:24 -0700 Subject: [PATCH] mime/multipart: add Writer data race test Camlistore uses this pattern to do streaming writes, as do others I imagine, and it was broken by the lazy boundary change. LGTM=dvyukov, ruiu R=ruiu, dvyukov CC=golang-codereviews, mathieu.lonjaret https://golang.org/cl/116690043 --- src/pkg/mime/multipart/writer_test.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/pkg/mime/multipart/writer_test.go b/src/pkg/mime/multipart/writer_test.go index 52d68bcb68..2412985b9b 100644 --- a/src/pkg/mime/multipart/writer_test.go +++ b/src/pkg/mime/multipart/writer_test.go @@ -111,3 +111,15 @@ func TestWriterSetBoundary(t *testing.T) { t.Errorf("expected my-separator in output. got: %q", got) } } + +func TestWriterBoundaryGoroutines(t *testing.T) { + // Verify there's no data race accessing any lazy boundary if it's used by + // different goroutines. This was previously broken by + // https://codereview.appspot.com/95760043/ and reverted in + // https://codereview.appspot.com/117600043/ + w := NewWriter(ioutil.Discard) + go func() { + w.CreateFormField("foo") + }() + w.Boundary() +} -- 2.48.1