mirror of https://github.com/gofiber/fiber.git
fix linter
parent
8fb7753a14
commit
5af18cc275
4
app.go
4
app.go
|
@ -106,6 +106,8 @@ type App struct {
|
||||||
tlsHandler *TLSHandler
|
tlsHandler *TLSHandler
|
||||||
// Mount fields
|
// Mount fields
|
||||||
mountFields *mountFields
|
mountFields *mountFields
|
||||||
|
// state management
|
||||||
|
state *State
|
||||||
// Route stack divided by HTTP methods
|
// Route stack divided by HTTP methods
|
||||||
stack [][]*Route
|
stack [][]*Route
|
||||||
// Route stack divided by HTTP methods and route prefixes
|
// Route stack divided by HTTP methods and route prefixes
|
||||||
|
@ -129,8 +131,6 @@ type App struct {
|
||||||
handlersCount uint32
|
handlersCount uint32
|
||||||
// contains the information if the route stack has been changed to build the optimized tree
|
// contains the information if the route stack has been changed to build the optimized tree
|
||||||
routesRefreshed bool
|
routesRefreshed bool
|
||||||
// state management
|
|
||||||
state *State
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Config is a struct holding the server settings.
|
// Config is a struct holding the server settings.
|
||||||
|
|
13
state.go
13
state.go
|
@ -1,6 +1,8 @@
|
||||||
package fiber
|
package fiber
|
||||||
|
|
||||||
import "sync"
|
import (
|
||||||
|
"sync"
|
||||||
|
)
|
||||||
|
|
||||||
// State is a key-value store for Fiber's app in order to be used as a global storage for the app's dependencies.
|
// State is a key-value store for Fiber's app in order to be used as a global storage for the app's dependencies.
|
||||||
// It's a thread-safe implementation of a map[string]any, using sync.Map.
|
// It's a thread-safe implementation of a map[string]any, using sync.Map.
|
||||||
|
@ -48,7 +50,7 @@ func (s *State) GetInt(key string) (int, bool) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetBool retrieves a bool value from the State.
|
// GetBool retrieves a bool value from the State.
|
||||||
func (s *State) GetBool(key string) (bool, bool) {
|
func (s *State) GetBool(key string) (value, ok bool) { //nolint:nonamedreturns // Better idea to use named returns here
|
||||||
dep, ok := s.Get(key)
|
dep, ok := s.Get(key)
|
||||||
if ok {
|
if ok {
|
||||||
depBool, okCast := dep.(bool)
|
depBool, okCast := dep.(bool)
|
||||||
|
@ -92,7 +94,12 @@ func (s *State) Clear() {
|
||||||
func (s *State) Keys() []string {
|
func (s *State) Keys() []string {
|
||||||
keys := make([]string, 0)
|
keys := make([]string, 0)
|
||||||
s.dependencies.Range(func(key, _ any) bool {
|
s.dependencies.Range(func(key, _ any) bool {
|
||||||
keys = append(keys, key.(string))
|
keyStr, ok := key.(string)
|
||||||
|
if !ok {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
keys = append(keys, keyStr)
|
||||||
return true
|
return true
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -92,18 +92,18 @@ func TestState_GetFloat64(t *testing.T) {
|
||||||
st.Set("pi", 3.14)
|
st.Set("pi", 3.14)
|
||||||
f, ok := st.GetFloat64("pi")
|
f, ok := st.GetFloat64("pi")
|
||||||
require.True(t, ok)
|
require.True(t, ok)
|
||||||
require.Equal(t, 3.14, f)
|
require.InDelta(t, 3.14, f, 0.0001)
|
||||||
|
|
||||||
// wrong type should return zero value
|
// wrong type should return zero value
|
||||||
st.Set("int", 10)
|
st.Set("int", 10)
|
||||||
f, ok = st.GetFloat64("int")
|
f, ok = st.GetFloat64("int")
|
||||||
require.False(t, ok)
|
require.False(t, ok)
|
||||||
require.Equal(t, 0.0, f)
|
require.InDelta(t, 0.0, f, 0.0001)
|
||||||
|
|
||||||
// missing key should return zero value
|
// missing key should return zero value
|
||||||
f, ok = st.GetFloat64("missing")
|
f, ok = st.GetFloat64("missing")
|
||||||
require.False(t, ok)
|
require.False(t, ok)
|
||||||
require.Equal(t, 0.0, f)
|
require.InDelta(t, 0.0, f, 0.0001)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestState_MustGet(t *testing.T) {
|
func TestState_MustGet(t *testing.T) {
|
||||||
|
@ -170,7 +170,7 @@ func TestState_Len(t *testing.T) {
|
||||||
require.Equal(t, 1, st.Len())
|
require.Equal(t, 1, st.Len())
|
||||||
}
|
}
|
||||||
|
|
||||||
type testCase[T any] struct {
|
type testCase[T any] struct { //nolint:govet // It does not really matter for test
|
||||||
name string
|
name string
|
||||||
key string
|
key string
|
||||||
value any
|
value any
|
||||||
|
@ -179,6 +179,8 @@ type testCase[T any] struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func runGenericTest[T any](t *testing.T, getter func(*State, string) (T, bool), tests []testCase[T]) {
|
func runGenericTest[T any](t *testing.T, getter func(*State, string) (T, bool), tests []testCase[T]) {
|
||||||
|
t.Helper()
|
||||||
|
|
||||||
st := newState()
|
st := newState()
|
||||||
for _, tc := range tests {
|
for _, tc := range tests {
|
||||||
st.Set(tc.key, tc.value)
|
st.Set(tc.key, tc.value)
|
||||||
|
|
Loading…
Reference in New Issue