mirror of
https://github.com/gohugoio/hugo.git
synced 2024-12-23 19:21:26 +00:00
parent
4f93f8c670
commit
66b143a01d
2 changed files with 28 additions and 2 deletions
|
@ -20,6 +20,8 @@ import (
|
|||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/gohugoio/hugo/common/types"
|
||||
|
||||
"github.com/gohugoio/hugo/compare"
|
||||
)
|
||||
|
||||
|
@ -88,7 +90,6 @@ func (*Namespace) Default(dflt interface{}, given ...interface{}) (interface{},
|
|||
|
||||
// Eq returns the boolean truth of arg1 == arg2.
|
||||
func (*Namespace) Eq(x, y interface{}) bool {
|
||||
|
||||
if e, ok := x.(compare.Eqer); ok {
|
||||
return e.Eq(y)
|
||||
}
|
||||
|
@ -98,6 +99,9 @@ func (*Namespace) Eq(x, y interface{}) bool {
|
|||
}
|
||||
|
||||
normalize := func(v interface{}) interface{} {
|
||||
if types.IsNil(v) {
|
||||
return nil
|
||||
}
|
||||
vv := reflect.ValueOf(v)
|
||||
switch vv.Kind() {
|
||||
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
|
||||
|
|
|
@ -27,6 +27,23 @@ import (
|
|||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
type T struct {
|
||||
NonEmptyInterfaceNil I
|
||||
NonEmptyInterfaceTypedNil I
|
||||
}
|
||||
|
||||
type I interface {
|
||||
Foo() string
|
||||
}
|
||||
|
||||
func (t *T) Foo() string {
|
||||
return "foo"
|
||||
}
|
||||
|
||||
var testT = &T{
|
||||
NonEmptyInterfaceTypedNil: (*T)(nil),
|
||||
}
|
||||
|
||||
type tstEqerType1 string
|
||||
type tstEqerType2 string
|
||||
|
||||
|
@ -183,7 +200,12 @@ func doTestCompare(t *testing.T, tp tstCompareType, funcUnderTest func(a, b inte
|
|||
{"0.37-DEV", hugo.MustParseVersion("0.37").Version(), -1},
|
||||
{"0.36", hugo.MustParseVersion("0.37-DEV").Version(), -1},
|
||||
{"0.37-DEV", hugo.MustParseVersion("0.37-DEV").Version(), 0},
|
||||
// https://github.com/gohugoio/hugo/issues/5905
|
||||
{nil, nil, 0},
|
||||
{testT.NonEmptyInterfaceNil, nil, 0},
|
||||
{testT.NonEmptyInterfaceTypedNil, nil, 0},
|
||||
} {
|
||||
|
||||
result := funcUnderTest(test.left, test.right)
|
||||
success := false
|
||||
|
||||
|
@ -206,7 +228,7 @@ func doTestCompare(t *testing.T, tp tstCompareType, funcUnderTest func(a, b inte
|
|||
}
|
||||
|
||||
if !success {
|
||||
t.Errorf("[%d][%s] %v compared to %v: %t", i, path.Base(runtime.FuncForPC(reflect.ValueOf(funcUnderTest).Pointer()).Name()), test.left, test.right, result)
|
||||
t.Fatalf("[%d][%s] %v compared to %v: %t", i, path.Base(runtime.FuncForPC(reflect.ValueOf(funcUnderTest).Pointer()).Name()), test.left, test.right, result)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue