Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,16 @@ linters:
- godox
- gosmopolitan
- inamedparam
- intrange # disabled while < go1.22
- ireturn
- lll
- musttag
- nestif
- nlreturn
- nonamedreturns
- noinlineerr
- paralleltest
- recvcheck
- testpackage
- thelper
- tparallel
Expand All @@ -31,6 +34,7 @@ linters:
- whitespace
- wrapcheck
- wsl
- wsl_v5
settings:
dupl:
threshold: 200
Expand Down Expand Up @@ -60,3 +64,12 @@ formatters:
- third_party$
- builtin$
- examples$
issues:
# Maximum issues count per one linter.
# Set to 0 to disable.
# Default: 50
max-issues-per-linter: 0
# Maximum count of issues with the same text.
# Set to 0 to disable.
# Default: 3
max-same-issues: 0
4 changes: 2 additions & 2 deletions bson.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,10 @@ func IsBSONObjectID(str string) bool {
// ObjectId represents a BSON object ID (alias to go.mongodb.org/mongo-driver/bson/primitive.ObjectID)
//
// swagger:strfmt bsonobjectid
type ObjectId bsonprim.ObjectID //nolint:revive,stylecheck
type ObjectId bsonprim.ObjectID //nolint:revive

// NewObjectId creates a ObjectId from a Hex String
func NewObjectId(hex string) ObjectId { //nolint:revive,stylecheck
func NewObjectId(hex string) ObjectId { //nolint:revive
oid, err := bsonprim.ObjectIDFromHex(hex)
if err != nil {
panic(err)
Expand Down
2 changes: 1 addition & 1 deletion date_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ func TestDate(t *testing.T) {

err = pp.UnmarshalJSON(bj)
require.NoError(t, err)
assert.EqualValues(t, orig, pp.String())
assert.Equal(t, orig, pp.String())

err = pp.UnmarshalJSON([]byte(`"1972/01/01"`))
require.Error(t, err)
Expand Down
28 changes: 14 additions & 14 deletions default_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ func TestFormatUUID3(t *testing.T) {
var uuidZero UUID3
err := uuidZero.UnmarshalJSON([]byte(jsonNull))
require.NoError(t, err)
assert.EqualValues(t, UUID3(""), uuidZero)
assert.Equal(t, UUID3(""), uuidZero)
}

func TestFormatUUID4(t *testing.T) {
Expand Down Expand Up @@ -296,7 +296,7 @@ func TestFormatUUID4(t *testing.T) {
var uuidZero UUID4
err := uuidZero.UnmarshalJSON([]byte(jsonNull))
require.NoError(t, err)
assert.EqualValues(t, UUID4(""), uuidZero)
assert.Equal(t, UUID4(""), uuidZero)
}

func TestFormatUUID5(t *testing.T) {
Expand Down Expand Up @@ -327,7 +327,7 @@ func TestFormatUUID5(t *testing.T) {
var uuidZero UUID5
err := uuidZero.UnmarshalJSON([]byte(jsonNull))
require.NoError(t, err)
assert.EqualValues(t, UUID5(""), uuidZero)
assert.Equal(t, UUID5(""), uuidZero)
}

func TestFormatUUID(t *testing.T) {
Expand Down Expand Up @@ -365,7 +365,7 @@ func TestFormatUUID(t *testing.T) {
var uuidZero UUID
err := uuidZero.UnmarshalJSON([]byte(jsonNull))
require.NoError(t, err)
assert.EqualValues(t, UUID(""), uuidZero)
assert.Equal(t, UUID(""), uuidZero)
}

func TestFormatISBN(t *testing.T) {
Expand Down Expand Up @@ -425,7 +425,7 @@ func TestFormatBase64(t *testing.T) {
var subj Base64
err := subj.UnmarshalText([]byte(str))
require.NoError(t, err)
assert.EqualValues(t, expected, subj)
assert.Equal(t, expected, subj)

b, err = subj.MarshalText()
require.NoError(t, err)
Expand All @@ -434,7 +434,7 @@ func TestFormatBase64(t *testing.T) {
var subj2 Base64
err = subj2.UnmarshalJSON(bj)
require.NoError(t, err)
assert.EqualValues(t, expected, subj2)
assert.Equal(t, expected, subj2)

b, err = subj2.MarshalJSON()
require.NoError(t, err)
Expand All @@ -456,18 +456,18 @@ func TestFormatBase64(t *testing.T) {
require.NoError(t, err)
sqlvalueAsString, ok := sqlvalue.(string)
if assert.Truef(t, ok, "[%s]Value: expected driver value to be a string", "byte") {
assert.EqualValuesf(t, str, sqlvalueAsString, "[%s]Value: expected %v and %v to be equal", "byte", sqlvalue, str)
assert.Equal(t, str, sqlvalueAsString, "[%s]Value: expected %v and %v to be equal", "byte", sqlvalue, str)
}
// Scanner interface
var subj3 Base64
err = subj3.Scan([]byte(str))
require.NoError(t, err)
assert.EqualValues(t, str, subj3.String())
assert.Equal(t, str, subj3.String())

var subj4 Base64
err = subj4.Scan(str)
require.NoError(t, err)
assert.EqualValues(t, str, subj4.String())
assert.Equal(t, str, subj4.String())

err = subj4.Scan(123)
require.Error(t, err)
Expand Down Expand Up @@ -511,7 +511,7 @@ func testStringFormat(t *testing.T, what testableFormat, format, with string, va
require.NoError(t, err)
val = reflect.Indirect(reflect.ValueOf(what))
strVal = val.String()
assert.EqualValuesf(t, with, strVal, "[%s]UnmarshalJSON: expected %v and %v to be value equal", format, strVal, with)
assert.Equal(t, with, strVal, "[%s]UnmarshalJSON: expected %v and %v to be value equal", format, strVal, with)

b, err = what.MarshalJSON()
require.NoError(t, err)
Expand All @@ -527,21 +527,21 @@ func testStringFormat(t *testing.T, what testableFormat, format, with string, va
require.NoError(t, err)
val = reflect.Indirect(reflect.ValueOf(what))
strVal = val.String()
assert.EqualValuesf(t, with, strVal, "[%s]bson.Unmarshal: expected %v and %v to be equal (reset value) ", format, what, with)
assert.Equal(t, with, strVal, "[%s]bson.Unmarshal: expected %v and %v to be equal (reset value) ", format, what, with)

// Scanner interface
resetValue(t, format, what)
err = what.Scan(with)
require.NoError(t, err)
val = reflect.Indirect(reflect.ValueOf(what))
strVal = val.String()
assert.EqualValuesf(t, with, strVal, "[%s]Scan: expected %v and %v to be value equal", format, strVal, with)
assert.Equal(t, with, strVal, "[%s]Scan: expected %v and %v to be value equal", format, strVal, with)

err = what.Scan([]byte(with))
require.NoError(t, err)
val = reflect.Indirect(reflect.ValueOf(what))
strVal = val.String()
assert.EqualValuesf(t, with, strVal, "[%s]Scan: expected %v and %v to be value equal", format, strVal, with)
assert.Equal(t, with, strVal, "[%s]Scan: expected %v and %v to be value equal", format, strVal, with)

err = what.Scan(123)
require.Error(t, err)
Expand All @@ -551,7 +551,7 @@ func testStringFormat(t *testing.T, what testableFormat, format, with string, va
require.NoError(t, err)
sqlvalueAsString, ok := sqlvalue.(string)
if assert.Truef(t, ok, "[%s]Value: expected driver value to be a string", format) {
assert.EqualValuesf(t, with, sqlvalueAsString, "[%s]Value: expected %v and %v to be equal", format, sqlvalue, with)
assert.Equal(t, with, sqlvalueAsString, "[%s]Value: expected %v and %v to be equal", format, sqlvalue, with)
}

// validation with Registry
Expand Down
2 changes: 1 addition & 1 deletion duration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ func TestDuration(t *testing.T) {

err = pp.UnmarshalJSON(bj)
require.NoError(t, err)
assert.EqualValues(t, orig, pp.String())
assert.Equal(t, orig, pp.String())

err = pp.UnmarshalJSON([]byte("yada"))
require.Error(t, err)
Expand Down
45 changes: 23 additions & 22 deletions format.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,29 @@ type Registry interface {
GetType(string) (reflect.Type, bool)
ContainsName(string) bool
Validates(string, string) bool
Parse(string, string) (interface{}, error)
Parse(string, string) (any, error)
MapStructureHookFunc() mapstructure.DecodeHookFunc
}

// NewFormats creates a new formats registry seeded with the values from the default
func NewFormats() Registry {
//nolint:forcetypeassert
return NewSeededFormats(Default.(*defaultFormats).data, nil)
}

// NewSeededFormats creates a new formats registry
func NewSeededFormats(seeds []knownFormat, normalizer NameNormalizer) Registry {
if normalizer == nil {
normalizer = DefaultNameNormalizer
}
// copy here, don't modify original
d := append([]knownFormat(nil), seeds...)
return &defaultFormats{
data: d,
normalizeName: normalizer,
}
}

type knownFormat struct {
Name string
OrigName string
Expand All @@ -70,32 +89,14 @@ func DefaultNameNormalizer(name string) string {

type defaultFormats struct {
sync.Mutex

data []knownFormat
normalizeName NameNormalizer
}

// NewFormats creates a new formats registry seeded with the values from the default
func NewFormats() Registry {
//nolint:forcetypeassert
return NewSeededFormats(Default.(*defaultFormats).data, nil)
}

// NewSeededFormats creates a new formats registry
func NewSeededFormats(seeds []knownFormat, normalizer NameNormalizer) Registry {
if normalizer == nil {
normalizer = DefaultNameNormalizer
}
// copy here, don't modify original
d := append([]knownFormat(nil), seeds...)
return &defaultFormats{
data: d,
normalizeName: normalizer,
}
}

// MapStructureHookFunc is a decode hook function for mapstructure
func (f *defaultFormats) MapStructureHookFunc() mapstructure.DecodeHookFunc {
return func(from reflect.Type, to reflect.Type, obj interface{}) (interface{}, error) {
return func(from reflect.Type, to reflect.Type, obj any) (any, error) {
if from.Kind() != reflect.String {
return obj, nil
}
Expand Down Expand Up @@ -306,7 +307,7 @@ func (f *defaultFormats) Validates(name, data string) bool {
// Parse a string into the appropriate format representation type.
//
// E.g. parsing a string a "date" will return a Date type.
func (f *defaultFormats) Parse(name, data string) (interface{}, error) {
func (f *defaultFormats) Parse(name, data string) (any, error) {
f.Lock()
defer f.Unlock()
nme := f.normalizeName(name)
Expand Down
2 changes: 1 addition & 1 deletion time.go
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ func (t DateTime) IsZero() bool {

// IsUnixZerom returns whether the date time is equivalent to time.Unix(0, 0).UTC().
func (t DateTime) IsUnixZero() bool {
return time.Time(t) == UnixZero
return time.Time(t).Equal(UnixZero)
}

// MarshalText implements the text marshaller interface
Expand Down
4 changes: 2 additions & 2 deletions time_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,7 @@ func TestDateTime_MarshalJSON(t *testing.T) {
dt := DateTime(example.time)
bb, err := dt.MarshalJSON()
require.NoError(t, err)
assert.EqualValues(t, esc([]byte(example.str)), bb)
assert.Equal(t, esc([]byte(example.str)), bb)
}
}
func TestDateTime_MarshalJSON_Override(t *testing.T) {
Expand All @@ -234,7 +234,7 @@ func TestDateTime_MarshalJSON_Override(t *testing.T) {
dt := DateTime(example.time.UTC())
bb, err := dt.MarshalJSON()
require.NoError(t, err)
assert.EqualValues(t, esc([]byte(example.utcStr)), bb)
assert.Equal(t, esc([]byte(example.utcStr)), bb)
}
}

Expand Down
Loading