"strconv"
"time"
+ "github.com/gohugoio/hugo/common/types"
+
"github.com/gohugoio/hugo/compare"
)
// 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)
}
}
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:
"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
{"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
}
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)
}
}
}