diff --git a/README.md b/README.md index 3e17ef8..2f66fa6 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,33 @@ func TestMain(m *testing.M) { } ``` +### Note + +For tests that use [t.Parallel](https://pkg.go.dev/testing#T.Parallel), `goleak` does +not know how to distinguish a leaky goroutine from tests that have not finished running. + + +```go +func TestA(t *testing.T) { + tt := struct{ + name string + input SomeType + expected string + }{ + // ... + } + + for _, t := range tt { + t.Run(t.name, func(t *testing.T) { + t.Parallel() // <- goleak gets confused here! + + // ... + } + } +} +``` +For such cases you should also defer to using `goleak.VerifyTestMain` as shown above. + ## Determine Source of Package Leaks When verifying leaks using `TestMain`, the leak test is only run once after all tests