mirror of
https://github.com/gohugoio/hugo.git
synced 2024-12-29 04:24:33 +00:00
parent
4f93f8c670
commit
66b143a01d
2 changed files with 28 additions and 2 deletions
|
@ -20,6 +20,8 @@ import (
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/gohugoio/hugo/common/types"
|
||||||
|
|
||||||
"github.com/gohugoio/hugo/compare"
|
"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.
|
// Eq returns the boolean truth of arg1 == arg2.
|
||||||
func (*Namespace) Eq(x, y interface{}) bool {
|
func (*Namespace) Eq(x, y interface{}) bool {
|
||||||
|
|
||||||
if e, ok := x.(compare.Eqer); ok {
|
if e, ok := x.(compare.Eqer); ok {
|
||||||
return e.Eq(y)
|
return e.Eq(y)
|
||||||
}
|
}
|
||||||
|
@ -98,6 +99,9 @@ func (*Namespace) Eq(x, y interface{}) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
normalize := func(v interface{}) interface{} {
|
normalize := func(v interface{}) interface{} {
|
||||||
|
if types.IsNil(v) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
vv := reflect.ValueOf(v)
|
vv := reflect.ValueOf(v)
|
||||||
switch vv.Kind() {
|
switch vv.Kind() {
|
||||||
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
|
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
|
||||||
|
|
|
@ -27,6 +27,23 @@ import (
|
||||||
"github.com/stretchr/testify/require"
|
"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 tstEqerType1 string
|
||||||
type tstEqerType2 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.37-DEV", hugo.MustParseVersion("0.37").Version(), -1},
|
||||||
{"0.36", hugo.MustParseVersion("0.37-DEV").Version(), -1},
|
{"0.36", hugo.MustParseVersion("0.37-DEV").Version(), -1},
|
||||||
{"0.37-DEV", hugo.MustParseVersion("0.37-DEV").Version(), 0},
|
{"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)
|
result := funcUnderTest(test.left, test.right)
|
||||||
success := false
|
success := false
|
||||||
|
|
||||||
|
@ -206,7 +228,7 @@ func doTestCompare(t *testing.T, tp tstCompareType, funcUnderTest func(a, b inte
|
||||||
}
|
}
|
||||||
|
|
||||||
if !success {
|
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