From: Brad Fitzpatrick Date: Tue, 5 Aug 2014 18:45:24 +0000 (-0700) Subject: mime/multipart: add Writer data race test X-Git-Tag: go1.4beta1~947 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=d46e133f7491ed2b3550426387a251ec4ceec4b5;p=gostls13.git 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 --- 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() +}