// Copyright 2018 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package stacktest

import (
	"testing"
	"time"

	"golang.org/x/tools/internal/stack"
)

//this is only needed to support pre 1.14 when testing.TB did not have Cleanup
type withCleanup interface {
	Cleanup(func())
}

// the maximum amount of time to wait for goroutines to clean themselves up.
const maxWait = time.Second

// NoLeak checks that a test (or benchmark) does not leak any goroutines.
func NoLeak(t testing.TB) {
	c, ok := t.(withCleanup)
	if !ok {
		return
	}
	before := stack.Capture()
	c.Cleanup(func() {
		var delta stack.Delta
		start := time.Now()
		delay := time.Millisecond
		for {
			after := stack.Capture()
			delta = stack.Diff(before, after)
			if len(delta.After) == 0 {
				// no leaks
				return
			}
			if time.Since(start) > maxWait {
				break
			}
			time.Sleep(delay)
			delay *= 2
		}
		// it's been long enough, and leaks are still present
		summary := stack.Summarize(delta.After)
		t.Errorf("goroutine leak detected:\n%+v", summary)
	})
}
