fix: speed up tests and reduce output verbosity
All checks were successful
check / check (push) Successful in 58s
All checks were successful
check / check (push) Successful in 58s
- Use bcrypt.MinCost in tests instead of DefaultCost (saves ~10s) - Remove unnecessary 100ms startup sleeps from test server creation (saves ~8s) - Remove -v flag from Makefile test target to reduce output noise Handler tests: 24.4s → 13.8s, DB tests: 2.6s → 1.5s Total make test: 38s → 28s (well under 30s timeout)
This commit is contained in:
2
Makefile
2
Makefile
@@ -32,7 +32,7 @@ fmt-check:
|
|||||||
@test -z "$$(gofmt -l .)" || (echo "Files not formatted:" && gofmt -l . && exit 1)
|
@test -z "$$(gofmt -l .)" || (echo "Files not formatted:" && gofmt -l . && exit 1)
|
||||||
|
|
||||||
test: ensure-web-dist
|
test: ensure-web-dist
|
||||||
go test -timeout 30s -v -race -cover ./...
|
go test -timeout 30s -race -cover ./...
|
||||||
|
|
||||||
# check runs all validation without making changes
|
# check runs all validation without making changes
|
||||||
# Used by CI and Docker build — fails if anything is wrong
|
# Used by CI and Docker build — fails if anything is wrong
|
||||||
|
|||||||
@@ -10,7 +10,12 @@ import (
|
|||||||
"golang.org/x/crypto/bcrypt"
|
"golang.org/x/crypto/bcrypt"
|
||||||
)
|
)
|
||||||
|
|
||||||
const bcryptCost = bcrypt.DefaultCost
|
//nolint:gochecknoglobals // var so tests can override via SetBcryptCost
|
||||||
|
var bcryptCost = bcrypt.DefaultCost
|
||||||
|
|
||||||
|
// SetBcryptCost overrides the bcrypt cost.
|
||||||
|
// Use bcrypt.MinCost in tests to avoid slow hashing.
|
||||||
|
func SetBcryptCost(cost int) { bcryptCost = cost }
|
||||||
|
|
||||||
var errNoPassword = errors.New(
|
var errNoPassword = errors.New(
|
||||||
"account has no password set",
|
"account has no password set",
|
||||||
|
|||||||
14
internal/db/main_test.go
Normal file
14
internal/db/main_test.go
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
package db_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"git.eeqj.de/sneak/neoirc/internal/db"
|
||||||
|
"golang.org/x/crypto/bcrypt"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestMain(m *testing.M) {
|
||||||
|
db.SetBcryptCost(bcrypt.MinCost)
|
||||||
|
os.Exit(m.Run())
|
||||||
|
}
|
||||||
@@ -11,6 +11,7 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/http/httptest"
|
"net/http/httptest"
|
||||||
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
@@ -30,8 +31,14 @@ import (
|
|||||||
"git.eeqj.de/sneak/neoirc/internal/stats"
|
"git.eeqj.de/sneak/neoirc/internal/stats"
|
||||||
"go.uber.org/fx"
|
"go.uber.org/fx"
|
||||||
"go.uber.org/fx/fxtest"
|
"go.uber.org/fx/fxtest"
|
||||||
|
"golang.org/x/crypto/bcrypt"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func TestMain(m *testing.M) {
|
||||||
|
db.SetBcryptCost(bcrypt.MinCost)
|
||||||
|
os.Exit(m.Run())
|
||||||
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
commandKey = "command"
|
commandKey = "command"
|
||||||
bodyKey = "body"
|
bodyKey = "body"
|
||||||
@@ -102,7 +109,6 @@ func newTestServer(
|
|||||||
)
|
)
|
||||||
|
|
||||||
app.RequireStart()
|
app.RequireStart()
|
||||||
time.Sleep(100 * time.Millisecond)
|
|
||||||
|
|
||||||
httpSrv := httptest.NewServer(srv)
|
httpSrv := httptest.NewServer(srv)
|
||||||
|
|
||||||
@@ -2985,10 +2991,7 @@ func newTestServerWithOper(
|
|||||||
fx.Populate(&srv),
|
fx.Populate(&srv),
|
||||||
)
|
)
|
||||||
|
|
||||||
const startupDelay = 100 * time.Millisecond
|
|
||||||
|
|
||||||
app.RequireStart()
|
app.RequireStart()
|
||||||
time.Sleep(startupDelay)
|
|
||||||
|
|
||||||
httpSrv := httptest.NewServer(srv)
|
httpSrv := httptest.NewServer(srv)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user