Add goleak in unit tests

This commit is contained in:
Jamie Curnow
2023-11-08 09:57:15 +10:00
parent 689bcb0077
commit 6da020aab1
41 changed files with 371 additions and 8 deletions

View File

@ -4,9 +4,13 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"go.uber.org/goleak"
)
func TestGetString(t *testing.T) {
// goleak is used to detect goroutine leaks
defer goleak.VerifyNone(t, goleak.IgnoreAnyFunction("database/sql.(*DB).connectionOpener"))
t.Run("basic test", func(t *testing.T) {
assert.Equal(t, "context value: Body", BodyCtxKey.String())
})

View File

@ -10,9 +10,13 @@ import (
"github.com/qri-io/jsonschema"
"github.com/stretchr/testify/assert"
"go.uber.org/goleak"
)
func TestResultResponseJSON(t *testing.T) {
// goleak is used to detect goroutine leaks
defer goleak.VerifyNone(t, goleak.IgnoreAnyFunction("database/sql.(*DB).connectionOpener"))
tests := []struct {
name string
status int
@ -67,6 +71,9 @@ func TestResultResponseJSON(t *testing.T) {
}
func TestResultSchemaErrorJSON(t *testing.T) {
// goleak is used to detect goroutine leaks
defer goleak.VerifyNone(t, goleak.IgnoreAnyFunction("database/sql.(*DB).connectionOpener"))
tests := []struct {
name string
given []jsonschema.KeyError
@ -104,6 +111,9 @@ func TestResultSchemaErrorJSON(t *testing.T) {
}
func TestResultErrorJSON(t *testing.T) {
// goleak is used to detect goroutine leaks
defer goleak.VerifyNone(t, goleak.IgnoreAnyFunction("database/sql.(*DB).connectionOpener"))
tests := []struct {
name string
status int
@ -146,6 +156,9 @@ func TestResultErrorJSON(t *testing.T) {
}
func TestNotFound(t *testing.T) {
// goleak is used to detect goroutine leaks
defer goleak.VerifyNone(t, goleak.IgnoreAnyFunction("database/sql.(*DB).connectionOpener"))
t.Run("basic test", func(t *testing.T) {
r := httptest.NewRequest(http.MethodGet, "/anything", nil)
w := httptest.NewRecorder()
@ -163,6 +176,9 @@ func TestNotFound(t *testing.T) {
}
func TestResultResponseText(t *testing.T) {
// goleak is used to detect goroutine leaks
defer goleak.VerifyNone(t, goleak.IgnoreAnyFunction("database/sql.(*DB).connectionOpener"))
t.Run("basic test", func(t *testing.T) {
r := httptest.NewRequest(http.MethodGet, "/anything", nil)
w := httptest.NewRecorder()

View File

@ -8,9 +8,13 @@ import (
"npm/internal/api/middleware"
"github.com/stretchr/testify/assert"
"go.uber.org/goleak"
)
func TestAccessControl(t *testing.T) {
// goleak is used to detect goroutine leaks
defer goleak.VerifyNone(t, goleak.IgnoreAnyFunction("database/sql.(*DB).connectionOpener"))
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
})

View File

@ -10,9 +10,13 @@ import (
"npm/internal/api/middleware"
"github.com/stretchr/testify/assert"
"go.uber.org/goleak"
)
func TestBodyContext(t *testing.T) {
// goleak is used to detect goroutine leaks
defer goleak.VerifyNone(t, goleak.IgnoreAnyFunction("database/sql.(*DB).connectionOpener"))
// Create a test request with a body
body := []byte(`{"name": "John", "age": 30}`)
req, err := http.NewRequest("POST", "/test", bytes.NewBuffer(body))

View File

@ -6,12 +6,16 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"go.uber.org/goleak"
"npm/internal/api/middleware"
"npm/internal/config"
)
func TestEnforceSetup(t *testing.T) {
// goleak is used to detect goroutine leaks
defer goleak.VerifyNone(t, goleak.IgnoreAnyFunction("database/sql.(*DB).connectionOpener"))
tests := []struct {
name string
shouldBeSetup bool

View File

@ -10,9 +10,13 @@ import (
"npm/internal/api/middleware"
"github.com/stretchr/testify/assert"
"go.uber.org/goleak"
)
func TestExpansion(t *testing.T) {
// goleak is used to detect goroutine leaks
defer goleak.VerifyNone(t, goleak.IgnoreAnyFunction("database/sql.(*DB).connectionOpener"))
t.Run("with expand query param", func(t *testing.T) {
req, err := http.NewRequest("GET", "/path?expand=item1,item2", nil)
assert.NoError(t, err)
@ -47,6 +51,9 @@ func TestExpansion(t *testing.T) {
}
func TestGetExpandFromContext(t *testing.T) {
// goleak is used to detect goroutine leaks
defer goleak.VerifyNone(t, goleak.IgnoreAnyFunction("database/sql.(*DB).connectionOpener"))
t.Run("with context value", func(t *testing.T) {
req, err := http.NewRequest("GET", "/path", nil)
assert.NoError(t, err)

View File

@ -13,9 +13,13 @@ import (
"npm/internal/tags"
"github.com/stretchr/testify/assert"
"go.uber.org/goleak"
)
func TestListQuery(t *testing.T) {
// goleak is used to detect goroutine leaks
defer goleak.VerifyNone(t, goleak.IgnoreAnyFunction("database/sql.(*DB).connectionOpener"))
tests := []struct {
name string
queryParams string
@ -61,6 +65,9 @@ func TestListQuery(t *testing.T) {
}
func TestGetFiltersFromContext(t *testing.T) {
// goleak is used to detect goroutine leaks
defer goleak.VerifyNone(t, goleak.IgnoreAnyFunction("database/sql.(*DB).connectionOpener"))
req, err := http.NewRequest("GET", "/test", nil)
assert.NoError(t, err)
@ -75,6 +82,9 @@ func TestGetFiltersFromContext(t *testing.T) {
}
func TestGetSortFromContext(t *testing.T) {
// goleak is used to detect goroutine leaks
defer goleak.VerifyNone(t, goleak.IgnoreAnyFunction("database/sql.(*DB).connectionOpener"))
req, err := http.NewRequest("GET", "/test", nil)
assert.NoError(t, err)

View File

@ -9,6 +9,7 @@ import (
"npm/internal/config"
"github.com/stretchr/testify/assert"
"go.uber.org/goleak"
)
var (
@ -25,6 +26,12 @@ func TestMain(m *testing.M) {
}
func TestGetHealthz(t *testing.T) {
// goleak is used to detect goroutine leaks
defer goleak.VerifyNone(t,
goleak.IgnoreAnyFunction("github.com/patrickmn/go-cache.(*janitor).Run"),
goleak.IgnoreAnyFunction("github.com/jc21/go-sse.(*Server).dispatch"),
)
respRec := httptest.NewRecorder()
req, _ := http.NewRequest("GET", "/api/", nil)
@ -34,6 +41,12 @@ func TestGetHealthz(t *testing.T) {
}
func TestNonExistent(t *testing.T) {
// goleak is used to detect goroutine leaks
defer goleak.VerifyNone(t,
goleak.IgnoreAnyFunction("github.com/patrickmn/go-cache.(*janitor).Run"),
goleak.IgnoreAnyFunction("github.com/jc21/go-sse.(*Server).dispatch"),
)
respRec := httptest.NewRecorder()
req, _ := http.NewRequest("GET", "/non-existent-endpoint.jpg", nil)