Files
Quentin McGaw 4a78989d9d chore: do not use sentinel errors when unneeded
- main reason being it's a burden to always define sentinel errors at global scope, wrap them with `%w` instead of using a string directly
- only use sentinel errors when it has to be checked using `errors.Is`
- replace all usage of these sentinel errors in `fmt.Errorf` with direct strings that were in the sentinel error
- exclude the sentinel error definition requirement from .golangci.yml
- update unit tests to use ContainersError instead of ErrorIs so it stays as a "not a change detector test" without requiring a sentinel error
2026-05-02 03:29:46 +00:00

67 lines
1.4 KiB
Go

package httpserver
import (
"net/http"
"testing"
"time"
"github.com/stretchr/testify/assert"
)
//go:generate mockgen -destination=logger_mock_test.go -package $GOPACKAGE . Logger
func Test_New(t *testing.T) {
t.Parallel()
someHandler := http.NewServeMux()
someLogger := &testLogger{}
testCases := map[string]struct {
settings Settings
expected *Server
errMessage string
}{
"empty settings": {
errMessage: "http server settings validation failed: HTTP handler cannot be left unset",
},
"filled settings": {
settings: Settings{
Address: ":8001",
Handler: someHandler,
Logger: someLogger,
ReadHeaderTimeout: time.Second,
ReadTimeout: time.Second,
ShutdownTimeout: time.Second,
},
expected: &Server{
address: ":8001",
handler: someHandler,
logger: someLogger,
readHeaderTimeout: time.Second,
readTimeout: time.Second,
shutdownTimeout: time.Second,
},
},
}
for name, testCase := range testCases {
t.Run(name, func(t *testing.T) {
t.Parallel()
server, err := New(testCase.settings)
if testCase.errMessage != "" {
assert.EqualError(t, err, testCase.errMessage)
} else {
assert.NoError(t, err)
}
if server != nil {
assert.NotNil(t, server.addressSet)
server.addressSet = nil
}
assert.Equal(t, testCase.expected, server)
})
}
}