Merge pull request #9916 from containerd/dependabot/go_modules/github.com/stretchr/testify-1.9.0
build(deps): bump github.com/stretchr/testify from 1.8.4 to 1.9.0
This commit is contained in:
		
							
								
								
									
										28
									
								
								vendor/github.com/stretchr/testify/assert/assertion_compare.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										28
									
								
								vendor/github.com/stretchr/testify/assert/assertion_compare.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -28,6 +28,8 @@ var (
 | 
			
		||||
	uint32Type = reflect.TypeOf(uint32(1))
 | 
			
		||||
	uint64Type = reflect.TypeOf(uint64(1))
 | 
			
		||||
 | 
			
		||||
	uintptrType = reflect.TypeOf(uintptr(1))
 | 
			
		||||
 | 
			
		||||
	float32Type = reflect.TypeOf(float32(1))
 | 
			
		||||
	float64Type = reflect.TypeOf(float64(1))
 | 
			
		||||
 | 
			
		||||
@@ -308,11 +310,11 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) {
 | 
			
		||||
	case reflect.Struct:
 | 
			
		||||
		{
 | 
			
		||||
			// All structs enter here. We're not interested in most types.
 | 
			
		||||
			if !canConvert(obj1Value, timeType) {
 | 
			
		||||
			if !obj1Value.CanConvert(timeType) {
 | 
			
		||||
				break
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// time.Time can compared!
 | 
			
		||||
			// time.Time can be compared!
 | 
			
		||||
			timeObj1, ok := obj1.(time.Time)
 | 
			
		||||
			if !ok {
 | 
			
		||||
				timeObj1 = obj1Value.Convert(timeType).Interface().(time.Time)
 | 
			
		||||
@@ -328,7 +330,7 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) {
 | 
			
		||||
	case reflect.Slice:
 | 
			
		||||
		{
 | 
			
		||||
			// We only care about the []byte type.
 | 
			
		||||
			if !canConvert(obj1Value, bytesType) {
 | 
			
		||||
			if !obj1Value.CanConvert(bytesType) {
 | 
			
		||||
				break
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
@@ -345,6 +347,26 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) {
 | 
			
		||||
 | 
			
		||||
			return CompareType(bytes.Compare(bytesObj1, bytesObj2)), true
 | 
			
		||||
		}
 | 
			
		||||
	case reflect.Uintptr:
 | 
			
		||||
		{
 | 
			
		||||
			uintptrObj1, ok := obj1.(uintptr)
 | 
			
		||||
			if !ok {
 | 
			
		||||
				uintptrObj1 = obj1Value.Convert(uintptrType).Interface().(uintptr)
 | 
			
		||||
			}
 | 
			
		||||
			uintptrObj2, ok := obj2.(uintptr)
 | 
			
		||||
			if !ok {
 | 
			
		||||
				uintptrObj2 = obj2Value.Convert(uintptrType).Interface().(uintptr)
 | 
			
		||||
			}
 | 
			
		||||
			if uintptrObj1 > uintptrObj2 {
 | 
			
		||||
				return compareGreater, true
 | 
			
		||||
			}
 | 
			
		||||
			if uintptrObj1 == uintptrObj2 {
 | 
			
		||||
				return compareEqual, true
 | 
			
		||||
			}
 | 
			
		||||
			if uintptrObj1 < uintptrObj2 {
 | 
			
		||||
				return compareLess, true
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return compareEqual, false
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										16
									
								
								vendor/github.com/stretchr/testify/assert/assertion_compare_can_convert.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										16
									
								
								vendor/github.com/stretchr/testify/assert/assertion_compare_can_convert.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,16 +0,0 @@
 | 
			
		||||
//go:build go1.17
 | 
			
		||||
// +build go1.17
 | 
			
		||||
 | 
			
		||||
// TODO: once support for Go 1.16 is dropped, this file can be
 | 
			
		||||
//       merged/removed with assertion_compare_go1.17_test.go and
 | 
			
		||||
//       assertion_compare_legacy.go
 | 
			
		||||
 | 
			
		||||
package assert
 | 
			
		||||
 | 
			
		||||
import "reflect"
 | 
			
		||||
 | 
			
		||||
// Wrapper around reflect.Value.CanConvert, for compatibility
 | 
			
		||||
// reasons.
 | 
			
		||||
func canConvert(value reflect.Value, to reflect.Type) bool {
 | 
			
		||||
	return value.CanConvert(to)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										16
									
								
								vendor/github.com/stretchr/testify/assert/assertion_compare_legacy.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										16
									
								
								vendor/github.com/stretchr/testify/assert/assertion_compare_legacy.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,16 +0,0 @@
 | 
			
		||||
//go:build !go1.17
 | 
			
		||||
// +build !go1.17
 | 
			
		||||
 | 
			
		||||
// TODO: once support for Go 1.16 is dropped, this file can be
 | 
			
		||||
//       merged/removed with assertion_compare_go1.17_test.go and
 | 
			
		||||
//       assertion_compare_can_convert.go
 | 
			
		||||
 | 
			
		||||
package assert
 | 
			
		||||
 | 
			
		||||
import "reflect"
 | 
			
		||||
 | 
			
		||||
// Older versions of Go does not have the reflect.Value.CanConvert
 | 
			
		||||
// method.
 | 
			
		||||
func canConvert(value reflect.Value, to reflect.Type) bool {
 | 
			
		||||
	return false
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										32
									
								
								vendor/github.com/stretchr/testify/assert/assertion_format.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										32
									
								
								vendor/github.com/stretchr/testify/assert/assertion_format.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,7 +1,4 @@
 | 
			
		||||
/*
 | 
			
		||||
* CODE GENERATED AUTOMATICALLY WITH github.com/stretchr/testify/_codegen
 | 
			
		||||
* THIS FILE MUST NOT BE EDITED BY HAND
 | 
			
		||||
 */
 | 
			
		||||
// Code generated with github.com/stretchr/testify/_codegen; DO NOT EDIT.
 | 
			
		||||
 | 
			
		||||
package assert
 | 
			
		||||
 | 
			
		||||
@@ -107,7 +104,7 @@ func EqualExportedValuesf(t TestingT, expected interface{}, actual interface{},
 | 
			
		||||
	return EqualExportedValues(t, expected, actual, append([]interface{}{msg}, args...)...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// EqualValuesf asserts that two objects are equal or convertable to the same types
 | 
			
		||||
// EqualValuesf asserts that two objects are equal or convertible to the same types
 | 
			
		||||
// and equal.
 | 
			
		||||
//
 | 
			
		||||
//	assert.EqualValuesf(t, uint32(123), int32(123), "error message %s", "formatted")
 | 
			
		||||
@@ -616,6 +613,16 @@ func NotErrorIsf(t TestingT, err error, target error, msg string, args ...interf
 | 
			
		||||
	return NotErrorIs(t, err, target, append([]interface{}{msg}, args...)...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotImplementsf asserts that an object does not implement the specified interface.
 | 
			
		||||
//
 | 
			
		||||
//	assert.NotImplementsf(t, (*MyInterface)(nil), new(MyObject), "error message %s", "formatted")
 | 
			
		||||
func NotImplementsf(t TestingT, interfaceObject interface{}, object interface{}, msg string, args ...interface{}) bool {
 | 
			
		||||
	if h, ok := t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
	return NotImplements(t, interfaceObject, object, append([]interface{}{msg}, args...)...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotNilf asserts that the specified object is not nil.
 | 
			
		||||
//
 | 
			
		||||
//	assert.NotNilf(t, err, "error message %s", "formatted")
 | 
			
		||||
@@ -660,10 +667,12 @@ func NotSamef(t TestingT, expected interface{}, actual interface{}, msg string,
 | 
			
		||||
	return NotSame(t, expected, actual, append([]interface{}{msg}, args...)...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotSubsetf asserts that the specified list(array, slice...) contains not all
 | 
			
		||||
// elements given in the specified subset(array, slice...).
 | 
			
		||||
// NotSubsetf asserts that the specified list(array, slice...) or map does NOT
 | 
			
		||||
// contain all elements given in the specified subset list(array, slice...) or
 | 
			
		||||
// map.
 | 
			
		||||
//
 | 
			
		||||
//	assert.NotSubsetf(t, [1, 3, 4], [1, 2], "But [1, 3, 4] does not contain [1, 2]", "error message %s", "formatted")
 | 
			
		||||
//	assert.NotSubsetf(t, [1, 3, 4], [1, 2], "error message %s", "formatted")
 | 
			
		||||
//	assert.NotSubsetf(t, {"x": 1, "y": 2}, {"z": 3}, "error message %s", "formatted")
 | 
			
		||||
func NotSubsetf(t TestingT, list interface{}, subset interface{}, msg string, args ...interface{}) bool {
 | 
			
		||||
	if h, ok := t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
@@ -747,10 +756,11 @@ func Samef(t TestingT, expected interface{}, actual interface{}, msg string, arg
 | 
			
		||||
	return Same(t, expected, actual, append([]interface{}{msg}, args...)...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Subsetf asserts that the specified list(array, slice...) contains all
 | 
			
		||||
// elements given in the specified subset(array, slice...).
 | 
			
		||||
// Subsetf asserts that the specified list(array, slice...) or map contains all
 | 
			
		||||
// elements given in the specified subset list(array, slice...) or map.
 | 
			
		||||
//
 | 
			
		||||
//	assert.Subsetf(t, [1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]", "error message %s", "formatted")
 | 
			
		||||
//	assert.Subsetf(t, [1, 2, 3], [1, 2], "error message %s", "formatted")
 | 
			
		||||
//	assert.Subsetf(t, {"x": 1, "y": 2}, {"x": 1}, "error message %s", "formatted")
 | 
			
		||||
func Subsetf(t TestingT, list interface{}, subset interface{}, msg string, args ...interface{}) bool {
 | 
			
		||||
	if h, ok := t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										59
									
								
								vendor/github.com/stretchr/testify/assert/assertion_forward.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										59
									
								
								vendor/github.com/stretchr/testify/assert/assertion_forward.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,7 +1,4 @@
 | 
			
		||||
/*
 | 
			
		||||
* CODE GENERATED AUTOMATICALLY WITH github.com/stretchr/testify/_codegen
 | 
			
		||||
* THIS FILE MUST NOT BE EDITED BY HAND
 | 
			
		||||
 */
 | 
			
		||||
// Code generated with github.com/stretchr/testify/_codegen; DO NOT EDIT.
 | 
			
		||||
 | 
			
		||||
package assert
 | 
			
		||||
 | 
			
		||||
@@ -189,7 +186,7 @@ func (a *Assertions) EqualExportedValuesf(expected interface{}, actual interface
 | 
			
		||||
	return EqualExportedValuesf(a.t, expected, actual, msg, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// EqualValues asserts that two objects are equal or convertable to the same types
 | 
			
		||||
// EqualValues asserts that two objects are equal or convertible to the same types
 | 
			
		||||
// and equal.
 | 
			
		||||
//
 | 
			
		||||
//	a.EqualValues(uint32(123), int32(123))
 | 
			
		||||
@@ -200,7 +197,7 @@ func (a *Assertions) EqualValues(expected interface{}, actual interface{}, msgAn
 | 
			
		||||
	return EqualValues(a.t, expected, actual, msgAndArgs...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// EqualValuesf asserts that two objects are equal or convertable to the same types
 | 
			
		||||
// EqualValuesf asserts that two objects are equal or convertible to the same types
 | 
			
		||||
// and equal.
 | 
			
		||||
//
 | 
			
		||||
//	a.EqualValuesf(uint32(123), int32(123), "error message %s", "formatted")
 | 
			
		||||
@@ -1221,6 +1218,26 @@ func (a *Assertions) NotErrorIsf(err error, target error, msg string, args ...in
 | 
			
		||||
	return NotErrorIsf(a.t, err, target, msg, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotImplements asserts that an object does not implement the specified interface.
 | 
			
		||||
//
 | 
			
		||||
//	a.NotImplements((*MyInterface)(nil), new(MyObject))
 | 
			
		||||
func (a *Assertions) NotImplements(interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) bool {
 | 
			
		||||
	if h, ok := a.t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
	return NotImplements(a.t, interfaceObject, object, msgAndArgs...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotImplementsf asserts that an object does not implement the specified interface.
 | 
			
		||||
//
 | 
			
		||||
//	a.NotImplementsf((*MyInterface)(nil), new(MyObject), "error message %s", "formatted")
 | 
			
		||||
func (a *Assertions) NotImplementsf(interfaceObject interface{}, object interface{}, msg string, args ...interface{}) bool {
 | 
			
		||||
	if h, ok := a.t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
	return NotImplementsf(a.t, interfaceObject, object, msg, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotNil asserts that the specified object is not nil.
 | 
			
		||||
//
 | 
			
		||||
//	a.NotNil(err)
 | 
			
		||||
@@ -1309,10 +1326,12 @@ func (a *Assertions) NotSamef(expected interface{}, actual interface{}, msg stri
 | 
			
		||||
	return NotSamef(a.t, expected, actual, msg, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotSubset asserts that the specified list(array, slice...) contains not all
 | 
			
		||||
// elements given in the specified subset(array, slice...).
 | 
			
		||||
// NotSubset asserts that the specified list(array, slice...) or map does NOT
 | 
			
		||||
// contain all elements given in the specified subset list(array, slice...) or
 | 
			
		||||
// map.
 | 
			
		||||
//
 | 
			
		||||
//	a.NotSubset([1, 3, 4], [1, 2], "But [1, 3, 4] does not contain [1, 2]")
 | 
			
		||||
//	a.NotSubset([1, 3, 4], [1, 2])
 | 
			
		||||
//	a.NotSubset({"x": 1, "y": 2}, {"z": 3})
 | 
			
		||||
func (a *Assertions) NotSubset(list interface{}, subset interface{}, msgAndArgs ...interface{}) bool {
 | 
			
		||||
	if h, ok := a.t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
@@ -1320,10 +1339,12 @@ func (a *Assertions) NotSubset(list interface{}, subset interface{}, msgAndArgs
 | 
			
		||||
	return NotSubset(a.t, list, subset, msgAndArgs...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotSubsetf asserts that the specified list(array, slice...) contains not all
 | 
			
		||||
// elements given in the specified subset(array, slice...).
 | 
			
		||||
// NotSubsetf asserts that the specified list(array, slice...) or map does NOT
 | 
			
		||||
// contain all elements given in the specified subset list(array, slice...) or
 | 
			
		||||
// map.
 | 
			
		||||
//
 | 
			
		||||
//	a.NotSubsetf([1, 3, 4], [1, 2], "But [1, 3, 4] does not contain [1, 2]", "error message %s", "formatted")
 | 
			
		||||
//	a.NotSubsetf([1, 3, 4], [1, 2], "error message %s", "formatted")
 | 
			
		||||
//	a.NotSubsetf({"x": 1, "y": 2}, {"z": 3}, "error message %s", "formatted")
 | 
			
		||||
func (a *Assertions) NotSubsetf(list interface{}, subset interface{}, msg string, args ...interface{}) bool {
 | 
			
		||||
	if h, ok := a.t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
@@ -1483,10 +1504,11 @@ func (a *Assertions) Samef(expected interface{}, actual interface{}, msg string,
 | 
			
		||||
	return Samef(a.t, expected, actual, msg, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Subset asserts that the specified list(array, slice...) contains all
 | 
			
		||||
// elements given in the specified subset(array, slice...).
 | 
			
		||||
// Subset asserts that the specified list(array, slice...) or map contains all
 | 
			
		||||
// elements given in the specified subset list(array, slice...) or map.
 | 
			
		||||
//
 | 
			
		||||
//	a.Subset([1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]")
 | 
			
		||||
//	a.Subset([1, 2, 3], [1, 2])
 | 
			
		||||
//	a.Subset({"x": 1, "y": 2}, {"x": 1})
 | 
			
		||||
func (a *Assertions) Subset(list interface{}, subset interface{}, msgAndArgs ...interface{}) bool {
 | 
			
		||||
	if h, ok := a.t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
@@ -1494,10 +1516,11 @@ func (a *Assertions) Subset(list interface{}, subset interface{}, msgAndArgs ...
 | 
			
		||||
	return Subset(a.t, list, subset, msgAndArgs...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Subsetf asserts that the specified list(array, slice...) contains all
 | 
			
		||||
// elements given in the specified subset(array, slice...).
 | 
			
		||||
// Subsetf asserts that the specified list(array, slice...) or map contains all
 | 
			
		||||
// elements given in the specified subset list(array, slice...) or map.
 | 
			
		||||
//
 | 
			
		||||
//	a.Subsetf([1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]", "error message %s", "formatted")
 | 
			
		||||
//	a.Subsetf([1, 2, 3], [1, 2], "error message %s", "formatted")
 | 
			
		||||
//	a.Subsetf({"x": 1, "y": 2}, {"x": 1}, "error message %s", "formatted")
 | 
			
		||||
func (a *Assertions) Subsetf(list interface{}, subset interface{}, msg string, args ...interface{}) bool {
 | 
			
		||||
	if h, ok := a.t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										207
									
								
								vendor/github.com/stretchr/testify/assert/assertions.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										207
									
								
								vendor/github.com/stretchr/testify/assert/assertions.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -19,7 +19,7 @@ import (
 | 
			
		||||
 | 
			
		||||
	"github.com/davecgh/go-spew/spew"
 | 
			
		||||
	"github.com/pmezard/go-difflib/difflib"
 | 
			
		||||
	yaml "gopkg.in/yaml.v3"
 | 
			
		||||
	"gopkg.in/yaml.v3"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
//go:generate sh -c "cd ../_codegen && go build && cd - && ../_codegen/_codegen -output-package=assert -template=assertion_format.go.tmpl"
 | 
			
		||||
@@ -110,7 +110,12 @@ func copyExportedFields(expected interface{}) interface{} {
 | 
			
		||||
		return result.Interface()
 | 
			
		||||
 | 
			
		||||
	case reflect.Array, reflect.Slice:
 | 
			
		||||
		result := reflect.MakeSlice(expectedType, expectedValue.Len(), expectedValue.Len())
 | 
			
		||||
		var result reflect.Value
 | 
			
		||||
		if expectedKind == reflect.Array {
 | 
			
		||||
			result = reflect.New(reflect.ArrayOf(expectedValue.Len(), expectedType.Elem())).Elem()
 | 
			
		||||
		} else {
 | 
			
		||||
			result = reflect.MakeSlice(expectedType, expectedValue.Len(), expectedValue.Len())
 | 
			
		||||
		}
 | 
			
		||||
		for i := 0; i < expectedValue.Len(); i++ {
 | 
			
		||||
			index := expectedValue.Index(i)
 | 
			
		||||
			if isNil(index) {
 | 
			
		||||
@@ -140,6 +145,8 @@ func copyExportedFields(expected interface{}) interface{} {
 | 
			
		||||
// structures.
 | 
			
		||||
//
 | 
			
		||||
// This function does no assertion of any kind.
 | 
			
		||||
//
 | 
			
		||||
// Deprecated: Use [EqualExportedValues] instead.
 | 
			
		||||
func ObjectsExportedFieldsAreEqual(expected, actual interface{}) bool {
 | 
			
		||||
	expectedCleaned := copyExportedFields(expected)
 | 
			
		||||
	actualCleaned := copyExportedFields(actual)
 | 
			
		||||
@@ -153,17 +160,40 @@ func ObjectsAreEqualValues(expected, actual interface{}) bool {
 | 
			
		||||
		return true
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	actualType := reflect.TypeOf(actual)
 | 
			
		||||
	if actualType == nil {
 | 
			
		||||
	expectedValue := reflect.ValueOf(expected)
 | 
			
		||||
	actualValue := reflect.ValueOf(actual)
 | 
			
		||||
	if !expectedValue.IsValid() || !actualValue.IsValid() {
 | 
			
		||||
		return false
 | 
			
		||||
	}
 | 
			
		||||
	expectedValue := reflect.ValueOf(expected)
 | 
			
		||||
	if expectedValue.IsValid() && expectedValue.Type().ConvertibleTo(actualType) {
 | 
			
		||||
		// Attempt comparison after type conversion
 | 
			
		||||
		return reflect.DeepEqual(expectedValue.Convert(actualType).Interface(), actual)
 | 
			
		||||
 | 
			
		||||
	expectedType := expectedValue.Type()
 | 
			
		||||
	actualType := actualValue.Type()
 | 
			
		||||
	if !expectedType.ConvertibleTo(actualType) {
 | 
			
		||||
		return false
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return false
 | 
			
		||||
	if !isNumericType(expectedType) || !isNumericType(actualType) {
 | 
			
		||||
		// Attempt comparison after type conversion
 | 
			
		||||
		return reflect.DeepEqual(
 | 
			
		||||
			expectedValue.Convert(actualType).Interface(), actual,
 | 
			
		||||
		)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// If BOTH values are numeric, there are chances of false positives due
 | 
			
		||||
	// to overflow or underflow. So, we need to make sure to always convert
 | 
			
		||||
	// the smaller type to a larger type before comparing.
 | 
			
		||||
	if expectedType.Size() >= actualType.Size() {
 | 
			
		||||
		return actualValue.Convert(expectedType).Interface() == expected
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return expectedValue.Convert(actualType).Interface() == actual
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// isNumericType returns true if the type is one of:
 | 
			
		||||
// int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64,
 | 
			
		||||
// float32, float64, complex64, complex128
 | 
			
		||||
func isNumericType(t reflect.Type) bool {
 | 
			
		||||
	return t.Kind() >= reflect.Int && t.Kind() <= reflect.Complex128
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* CallerInfo is necessary because the assert functions use the testing object
 | 
			
		||||
@@ -266,7 +296,7 @@ func messageFromMsgAndArgs(msgAndArgs ...interface{}) string {
 | 
			
		||||
 | 
			
		||||
// Aligns the provided message so that all lines after the first line start at the same location as the first line.
 | 
			
		||||
// Assumes that the first line starts at the correct location (after carriage return, tab, label, spacer and tab).
 | 
			
		||||
// The longestLabelLen parameter specifies the length of the longest label in the output (required becaues this is the
 | 
			
		||||
// The longestLabelLen parameter specifies the length of the longest label in the output (required because this is the
 | 
			
		||||
// basis on which the alignment occurs).
 | 
			
		||||
func indentMessageLines(message string, longestLabelLen int) string {
 | 
			
		||||
	outBuf := new(bytes.Buffer)
 | 
			
		||||
@@ -382,6 +412,25 @@ func Implements(t TestingT, interfaceObject interface{}, object interface{}, msg
 | 
			
		||||
	return true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotImplements asserts that an object does not implement the specified interface.
 | 
			
		||||
//
 | 
			
		||||
//	assert.NotImplements(t, (*MyInterface)(nil), new(MyObject))
 | 
			
		||||
func NotImplements(t TestingT, interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) bool {
 | 
			
		||||
	if h, ok := t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
	interfaceType := reflect.TypeOf(interfaceObject).Elem()
 | 
			
		||||
 | 
			
		||||
	if object == nil {
 | 
			
		||||
		return Fail(t, fmt.Sprintf("Cannot check if nil does not implement %v", interfaceType), msgAndArgs...)
 | 
			
		||||
	}
 | 
			
		||||
	if reflect.TypeOf(object).Implements(interfaceType) {
 | 
			
		||||
		return Fail(t, fmt.Sprintf("%T implements %v", object, interfaceType), msgAndArgs...)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IsType asserts that the specified objects are of the same type.
 | 
			
		||||
func IsType(t TestingT, expectedType interface{}, object interface{}, msgAndArgs ...interface{}) bool {
 | 
			
		||||
	if h, ok := t.(tHelper); ok {
 | 
			
		||||
@@ -496,7 +545,7 @@ func samePointers(first, second interface{}) bool {
 | 
			
		||||
// representations appropriate to be presented to the user.
 | 
			
		||||
//
 | 
			
		||||
// If the values are not of like type, the returned strings will be prefixed
 | 
			
		||||
// with the type name, and the value will be enclosed in parenthesis similar
 | 
			
		||||
// with the type name, and the value will be enclosed in parentheses similar
 | 
			
		||||
// to a type conversion in the Go grammar.
 | 
			
		||||
func formatUnequalValues(expected, actual interface{}) (e string, a string) {
 | 
			
		||||
	if reflect.TypeOf(expected) != reflect.TypeOf(actual) {
 | 
			
		||||
@@ -523,7 +572,7 @@ func truncatingFormat(data interface{}) string {
 | 
			
		||||
	return value
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// EqualValues asserts that two objects are equal or convertable to the same types
 | 
			
		||||
// EqualValues asserts that two objects are equal or convertible to the same types
 | 
			
		||||
// and equal.
 | 
			
		||||
//
 | 
			
		||||
//	assert.EqualValues(t, uint32(123), int32(123))
 | 
			
		||||
@@ -566,12 +615,19 @@ func EqualExportedValues(t TestingT, expected, actual interface{}, msgAndArgs ..
 | 
			
		||||
		return Fail(t, fmt.Sprintf("Types expected to match exactly\n\t%v != %v", aType, bType), msgAndArgs...)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if aType.Kind() == reflect.Ptr {
 | 
			
		||||
		aType = aType.Elem()
 | 
			
		||||
	}
 | 
			
		||||
	if bType.Kind() == reflect.Ptr {
 | 
			
		||||
		bType = bType.Elem()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if aType.Kind() != reflect.Struct {
 | 
			
		||||
		return Fail(t, fmt.Sprintf("Types expected to both be struct \n\t%v != %v", aType.Kind(), reflect.Struct), msgAndArgs...)
 | 
			
		||||
		return Fail(t, fmt.Sprintf("Types expected to both be struct or pointer to struct \n\t%v != %v", aType.Kind(), reflect.Struct), msgAndArgs...)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if bType.Kind() != reflect.Struct {
 | 
			
		||||
		return Fail(t, fmt.Sprintf("Types expected to both be struct \n\t%v != %v", bType.Kind(), reflect.Struct), msgAndArgs...)
 | 
			
		||||
		return Fail(t, fmt.Sprintf("Types expected to both be struct or pointer to struct \n\t%v != %v", bType.Kind(), reflect.Struct), msgAndArgs...)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	expected = copyExportedFields(expected)
 | 
			
		||||
@@ -620,17 +676,6 @@ func NotNil(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {
 | 
			
		||||
	return Fail(t, "Expected value not to be nil.", msgAndArgs...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// containsKind checks if a specified kind in the slice of kinds.
 | 
			
		||||
func containsKind(kinds []reflect.Kind, kind reflect.Kind) bool {
 | 
			
		||||
	for i := 0; i < len(kinds); i++ {
 | 
			
		||||
		if kind == kinds[i] {
 | 
			
		||||
			return true
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// isNil checks if a specified object is nil or not, without Failing.
 | 
			
		||||
func isNil(object interface{}) bool {
 | 
			
		||||
	if object == nil {
 | 
			
		||||
@@ -638,16 +683,13 @@ func isNil(object interface{}) bool {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	value := reflect.ValueOf(object)
 | 
			
		||||
	kind := value.Kind()
 | 
			
		||||
	isNilableKind := containsKind(
 | 
			
		||||
		[]reflect.Kind{
 | 
			
		||||
			reflect.Chan, reflect.Func,
 | 
			
		||||
			reflect.Interface, reflect.Map,
 | 
			
		||||
			reflect.Ptr, reflect.Slice, reflect.UnsafePointer},
 | 
			
		||||
		kind)
 | 
			
		||||
	switch value.Kind() {
 | 
			
		||||
	case
 | 
			
		||||
		reflect.Chan, reflect.Func,
 | 
			
		||||
		reflect.Interface, reflect.Map,
 | 
			
		||||
		reflect.Ptr, reflect.Slice, reflect.UnsafePointer:
 | 
			
		||||
 | 
			
		||||
	if isNilableKind && value.IsNil() {
 | 
			
		||||
		return true
 | 
			
		||||
		return value.IsNil()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return false
 | 
			
		||||
@@ -731,16 +773,14 @@ func NotEmpty(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// getLen try to get length of object.
 | 
			
		||||
// return (false, 0) if impossible.
 | 
			
		||||
func getLen(x interface{}) (ok bool, length int) {
 | 
			
		||||
// getLen tries to get the length of an object.
 | 
			
		||||
// It returns (0, false) if impossible.
 | 
			
		||||
func getLen(x interface{}) (length int, ok bool) {
 | 
			
		||||
	v := reflect.ValueOf(x)
 | 
			
		||||
	defer func() {
 | 
			
		||||
		if e := recover(); e != nil {
 | 
			
		||||
			ok = false
 | 
			
		||||
		}
 | 
			
		||||
		ok = recover() == nil
 | 
			
		||||
	}()
 | 
			
		||||
	return true, v.Len()
 | 
			
		||||
	return v.Len(), true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Len asserts that the specified object has specific length.
 | 
			
		||||
@@ -751,13 +791,13 @@ func Len(t TestingT, object interface{}, length int, msgAndArgs ...interface{})
 | 
			
		||||
	if h, ok := t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
	ok, l := getLen(object)
 | 
			
		||||
	l, ok := getLen(object)
 | 
			
		||||
	if !ok {
 | 
			
		||||
		return Fail(t, fmt.Sprintf("\"%s\" could not be applied builtin len()", object), msgAndArgs...)
 | 
			
		||||
		return Fail(t, fmt.Sprintf("\"%v\" could not be applied builtin len()", object), msgAndArgs...)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if l != length {
 | 
			
		||||
		return Fail(t, fmt.Sprintf("\"%s\" should have %d item(s), but has %d", object, length, l), msgAndArgs...)
 | 
			
		||||
		return Fail(t, fmt.Sprintf("\"%v\" should have %d item(s), but has %d", object, length, l), msgAndArgs...)
 | 
			
		||||
	}
 | 
			
		||||
	return true
 | 
			
		||||
}
 | 
			
		||||
@@ -919,10 +959,11 @@ func NotContains(t TestingT, s, contains interface{}, msgAndArgs ...interface{})
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Subset asserts that the specified list(array, slice...) contains all
 | 
			
		||||
// elements given in the specified subset(array, slice...).
 | 
			
		||||
// Subset asserts that the specified list(array, slice...) or map contains all
 | 
			
		||||
// elements given in the specified subset list(array, slice...) or map.
 | 
			
		||||
//
 | 
			
		||||
//	assert.Subset(t, [1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]")
 | 
			
		||||
//	assert.Subset(t, [1, 2, 3], [1, 2])
 | 
			
		||||
//	assert.Subset(t, {"x": 1, "y": 2}, {"x": 1})
 | 
			
		||||
func Subset(t TestingT, list, subset interface{}, msgAndArgs ...interface{}) (ok bool) {
 | 
			
		||||
	if h, ok := t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
@@ -975,10 +1016,12 @@ func Subset(t TestingT, list, subset interface{}, msgAndArgs ...interface{}) (ok
 | 
			
		||||
	return true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotSubset asserts that the specified list(array, slice...) contains not all
 | 
			
		||||
// elements given in the specified subset(array, slice...).
 | 
			
		||||
// NotSubset asserts that the specified list(array, slice...) or map does NOT
 | 
			
		||||
// contain all elements given in the specified subset list(array, slice...) or
 | 
			
		||||
// map.
 | 
			
		||||
//
 | 
			
		||||
//	assert.NotSubset(t, [1, 3, 4], [1, 2], "But [1, 3, 4] does not contain [1, 2]")
 | 
			
		||||
//	assert.NotSubset(t, [1, 3, 4], [1, 2])
 | 
			
		||||
//	assert.NotSubset(t, {"x": 1, "y": 2}, {"z": 3})
 | 
			
		||||
func NotSubset(t TestingT, list, subset interface{}, msgAndArgs ...interface{}) (ok bool) {
 | 
			
		||||
	if h, ok := t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
@@ -1439,7 +1482,7 @@ func InEpsilon(t TestingT, expected, actual interface{}, epsilon float64, msgAnd
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
	if math.IsNaN(epsilon) {
 | 
			
		||||
		return Fail(t, "epsilon must not be NaN")
 | 
			
		||||
		return Fail(t, "epsilon must not be NaN", msgAndArgs...)
 | 
			
		||||
	}
 | 
			
		||||
	actualEpsilon, err := calcRelativeError(expected, actual)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
@@ -1458,19 +1501,26 @@ func InEpsilonSlice(t TestingT, expected, actual interface{}, epsilon float64, m
 | 
			
		||||
	if h, ok := t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
	if expected == nil || actual == nil ||
 | 
			
		||||
		reflect.TypeOf(actual).Kind() != reflect.Slice ||
 | 
			
		||||
		reflect.TypeOf(expected).Kind() != reflect.Slice {
 | 
			
		||||
 | 
			
		||||
	if expected == nil || actual == nil {
 | 
			
		||||
		return Fail(t, "Parameters must be slice", msgAndArgs...)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	actualSlice := reflect.ValueOf(actual)
 | 
			
		||||
	expectedSlice := reflect.ValueOf(expected)
 | 
			
		||||
	actualSlice := reflect.ValueOf(actual)
 | 
			
		||||
 | 
			
		||||
	for i := 0; i < actualSlice.Len(); i++ {
 | 
			
		||||
		result := InEpsilon(t, actualSlice.Index(i).Interface(), expectedSlice.Index(i).Interface(), epsilon)
 | 
			
		||||
		if !result {
 | 
			
		||||
			return result
 | 
			
		||||
	if expectedSlice.Type().Kind() != reflect.Slice {
 | 
			
		||||
		return Fail(t, "Expected value must be slice", msgAndArgs...)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	expectedLen := expectedSlice.Len()
 | 
			
		||||
	if !IsType(t, expected, actual) || !Len(t, actual, expectedLen) {
 | 
			
		||||
		return false
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for i := 0; i < expectedLen; i++ {
 | 
			
		||||
		if !InEpsilon(t, expectedSlice.Index(i).Interface(), actualSlice.Index(i).Interface(), epsilon, "at index %d", i) {
 | 
			
		||||
			return false
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -1870,23 +1920,18 @@ func (c *CollectT) Errorf(format string, args ...interface{}) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// FailNow panics.
 | 
			
		||||
func (c *CollectT) FailNow() {
 | 
			
		||||
func (*CollectT) FailNow() {
 | 
			
		||||
	panic("Assertion failed")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Reset clears the collected errors.
 | 
			
		||||
func (c *CollectT) Reset() {
 | 
			
		||||
	c.errors = nil
 | 
			
		||||
// Deprecated: That was a method for internal usage that should not have been published. Now just panics.
 | 
			
		||||
func (*CollectT) Reset() {
 | 
			
		||||
	panic("Reset() is deprecated")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Copy copies the collected errors to the supplied t.
 | 
			
		||||
func (c *CollectT) Copy(t TestingT) {
 | 
			
		||||
	if tt, ok := t.(tHelper); ok {
 | 
			
		||||
		tt.Helper()
 | 
			
		||||
	}
 | 
			
		||||
	for _, err := range c.errors {
 | 
			
		||||
		t.Errorf("%v", err)
 | 
			
		||||
	}
 | 
			
		||||
// Deprecated: That was a method for internal usage that should not have been published. Now just panics.
 | 
			
		||||
func (*CollectT) Copy(TestingT) {
 | 
			
		||||
	panic("Copy() is deprecated")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// EventuallyWithT asserts that given condition will be met in waitFor time,
 | 
			
		||||
@@ -1912,8 +1957,8 @@ func EventuallyWithT(t TestingT, condition func(collect *CollectT), waitFor time
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	collect := new(CollectT)
 | 
			
		||||
	ch := make(chan bool, 1)
 | 
			
		||||
	var lastFinishedTickErrs []error
 | 
			
		||||
	ch := make(chan []error, 1)
 | 
			
		||||
 | 
			
		||||
	timer := time.NewTimer(waitFor)
 | 
			
		||||
	defer timer.Stop()
 | 
			
		||||
@@ -1924,19 +1969,25 @@ func EventuallyWithT(t TestingT, condition func(collect *CollectT), waitFor time
 | 
			
		||||
	for tick := ticker.C; ; {
 | 
			
		||||
		select {
 | 
			
		||||
		case <-timer.C:
 | 
			
		||||
			collect.Copy(t)
 | 
			
		||||
			for _, err := range lastFinishedTickErrs {
 | 
			
		||||
				t.Errorf("%v", err)
 | 
			
		||||
			}
 | 
			
		||||
			return Fail(t, "Condition never satisfied", msgAndArgs...)
 | 
			
		||||
		case <-tick:
 | 
			
		||||
			tick = nil
 | 
			
		||||
			collect.Reset()
 | 
			
		||||
			go func() {
 | 
			
		||||
				collect := new(CollectT)
 | 
			
		||||
				defer func() {
 | 
			
		||||
					ch <- collect.errors
 | 
			
		||||
				}()
 | 
			
		||||
				condition(collect)
 | 
			
		||||
				ch <- len(collect.errors) == 0
 | 
			
		||||
			}()
 | 
			
		||||
		case v := <-ch:
 | 
			
		||||
			if v {
 | 
			
		||||
		case errs := <-ch:
 | 
			
		||||
			if len(errs) == 0 {
 | 
			
		||||
				return true
 | 
			
		||||
			}
 | 
			
		||||
			// Keep the errors from the last ended condition, so that they can be copied to t if timeout is reached.
 | 
			
		||||
			lastFinishedTickErrs = errs
 | 
			
		||||
			tick = ticker.C
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										27
									
								
								vendor/github.com/stretchr/testify/assert/http_assertions.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										27
									
								
								vendor/github.com/stretchr/testify/assert/http_assertions.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -12,7 +12,7 @@ import (
 | 
			
		||||
// an error if building a new request fails.
 | 
			
		||||
func httpCode(handler http.HandlerFunc, method, url string, values url.Values) (int, error) {
 | 
			
		||||
	w := httptest.NewRecorder()
 | 
			
		||||
	req, err := http.NewRequest(method, url, nil)
 | 
			
		||||
	req, err := http.NewRequest(method, url, http.NoBody)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return -1, err
 | 
			
		||||
	}
 | 
			
		||||
@@ -32,12 +32,12 @@ func HTTPSuccess(t TestingT, handler http.HandlerFunc, method, url string, value
 | 
			
		||||
	}
 | 
			
		||||
	code, err := httpCode(handler, method, url, values)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		Fail(t, fmt.Sprintf("Failed to build test request, got error: %s", err))
 | 
			
		||||
		Fail(t, fmt.Sprintf("Failed to build test request, got error: %s", err), msgAndArgs...)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	isSuccessCode := code >= http.StatusOK && code <= http.StatusPartialContent
 | 
			
		||||
	if !isSuccessCode {
 | 
			
		||||
		Fail(t, fmt.Sprintf("Expected HTTP success status code for %q but received %d", url+"?"+values.Encode(), code))
 | 
			
		||||
		Fail(t, fmt.Sprintf("Expected HTTP success status code for %q but received %d", url+"?"+values.Encode(), code), msgAndArgs...)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return isSuccessCode
 | 
			
		||||
@@ -54,12 +54,12 @@ func HTTPRedirect(t TestingT, handler http.HandlerFunc, method, url string, valu
 | 
			
		||||
	}
 | 
			
		||||
	code, err := httpCode(handler, method, url, values)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		Fail(t, fmt.Sprintf("Failed to build test request, got error: %s", err))
 | 
			
		||||
		Fail(t, fmt.Sprintf("Failed to build test request, got error: %s", err), msgAndArgs...)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	isRedirectCode := code >= http.StatusMultipleChoices && code <= http.StatusTemporaryRedirect
 | 
			
		||||
	if !isRedirectCode {
 | 
			
		||||
		Fail(t, fmt.Sprintf("Expected HTTP redirect status code for %q but received %d", url+"?"+values.Encode(), code))
 | 
			
		||||
		Fail(t, fmt.Sprintf("Expected HTTP redirect status code for %q but received %d", url+"?"+values.Encode(), code), msgAndArgs...)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return isRedirectCode
 | 
			
		||||
@@ -76,12 +76,12 @@ func HTTPError(t TestingT, handler http.HandlerFunc, method, url string, values
 | 
			
		||||
	}
 | 
			
		||||
	code, err := httpCode(handler, method, url, values)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		Fail(t, fmt.Sprintf("Failed to build test request, got error: %s", err))
 | 
			
		||||
		Fail(t, fmt.Sprintf("Failed to build test request, got error: %s", err), msgAndArgs...)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	isErrorCode := code >= http.StatusBadRequest
 | 
			
		||||
	if !isErrorCode {
 | 
			
		||||
		Fail(t, fmt.Sprintf("Expected HTTP error status code for %q but received %d", url+"?"+values.Encode(), code))
 | 
			
		||||
		Fail(t, fmt.Sprintf("Expected HTTP error status code for %q but received %d", url+"?"+values.Encode(), code), msgAndArgs...)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return isErrorCode
 | 
			
		||||
@@ -98,12 +98,12 @@ func HTTPStatusCode(t TestingT, handler http.HandlerFunc, method, url string, va
 | 
			
		||||
	}
 | 
			
		||||
	code, err := httpCode(handler, method, url, values)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		Fail(t, fmt.Sprintf("Failed to build test request, got error: %s", err))
 | 
			
		||||
		Fail(t, fmt.Sprintf("Failed to build test request, got error: %s", err), msgAndArgs...)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	successful := code == statuscode
 | 
			
		||||
	if !successful {
 | 
			
		||||
		Fail(t, fmt.Sprintf("Expected HTTP status code %d for %q but received %d", statuscode, url+"?"+values.Encode(), code))
 | 
			
		||||
		Fail(t, fmt.Sprintf("Expected HTTP status code %d for %q but received %d", statuscode, url+"?"+values.Encode(), code), msgAndArgs...)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return successful
 | 
			
		||||
@@ -113,7 +113,10 @@ func HTTPStatusCode(t TestingT, handler http.HandlerFunc, method, url string, va
 | 
			
		||||
// empty string if building a new request fails.
 | 
			
		||||
func HTTPBody(handler http.HandlerFunc, method, url string, values url.Values) string {
 | 
			
		||||
	w := httptest.NewRecorder()
 | 
			
		||||
	req, err := http.NewRequest(method, url+"?"+values.Encode(), nil)
 | 
			
		||||
	if len(values) > 0 {
 | 
			
		||||
		url += "?" + values.Encode()
 | 
			
		||||
	}
 | 
			
		||||
	req, err := http.NewRequest(method, url, http.NoBody)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return ""
 | 
			
		||||
	}
 | 
			
		||||
@@ -135,7 +138,7 @@ func HTTPBodyContains(t TestingT, handler http.HandlerFunc, method, url string,
 | 
			
		||||
 | 
			
		||||
	contains := strings.Contains(body, fmt.Sprint(str))
 | 
			
		||||
	if !contains {
 | 
			
		||||
		Fail(t, fmt.Sprintf("Expected response body for \"%s\" to contain \"%s\" but found \"%s\"", url+"?"+values.Encode(), str, body))
 | 
			
		||||
		Fail(t, fmt.Sprintf("Expected response body for \"%s\" to contain \"%s\" but found \"%s\"", url+"?"+values.Encode(), str, body), msgAndArgs...)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return contains
 | 
			
		||||
@@ -155,7 +158,7 @@ func HTTPBodyNotContains(t TestingT, handler http.HandlerFunc, method, url strin
 | 
			
		||||
 | 
			
		||||
	contains := strings.Contains(body, fmt.Sprint(str))
 | 
			
		||||
	if contains {
 | 
			
		||||
		Fail(t, fmt.Sprintf("Expected response body for \"%s\" to NOT contain \"%s\" but found \"%s\"", url+"?"+values.Encode(), str, body))
 | 
			
		||||
		Fail(t, fmt.Sprintf("Expected response body for \"%s\" to NOT contain \"%s\" but found \"%s\"", url+"?"+values.Encode(), str, body), msgAndArgs...)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return !contains
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										65
									
								
								vendor/github.com/stretchr/testify/require/require.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										65
									
								
								vendor/github.com/stretchr/testify/require/require.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,7 +1,4 @@
 | 
			
		||||
/*
 | 
			
		||||
* CODE GENERATED AUTOMATICALLY WITH github.com/stretchr/testify/_codegen
 | 
			
		||||
* THIS FILE MUST NOT BE EDITED BY HAND
 | 
			
		||||
 */
 | 
			
		||||
// Code generated with github.com/stretchr/testify/_codegen; DO NOT EDIT.
 | 
			
		||||
 | 
			
		||||
package require
 | 
			
		||||
 | 
			
		||||
@@ -235,7 +232,7 @@ func EqualExportedValuesf(t TestingT, expected interface{}, actual interface{},
 | 
			
		||||
	t.FailNow()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// EqualValues asserts that two objects are equal or convertable to the same types
 | 
			
		||||
// EqualValues asserts that two objects are equal or convertible to the same types
 | 
			
		||||
// and equal.
 | 
			
		||||
//
 | 
			
		||||
//	assert.EqualValues(t, uint32(123), int32(123))
 | 
			
		||||
@@ -249,7 +246,7 @@ func EqualValues(t TestingT, expected interface{}, actual interface{}, msgAndArg
 | 
			
		||||
	t.FailNow()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// EqualValuesf asserts that two objects are equal or convertable to the same types
 | 
			
		||||
// EqualValuesf asserts that two objects are equal or convertible to the same types
 | 
			
		||||
// and equal.
 | 
			
		||||
//
 | 
			
		||||
//	assert.EqualValuesf(t, uint32(123), int32(123), "error message %s", "formatted")
 | 
			
		||||
@@ -1546,6 +1543,32 @@ func NotErrorIsf(t TestingT, err error, target error, msg string, args ...interf
 | 
			
		||||
	t.FailNow()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotImplements asserts that an object does not implement the specified interface.
 | 
			
		||||
//
 | 
			
		||||
//	assert.NotImplements(t, (*MyInterface)(nil), new(MyObject))
 | 
			
		||||
func NotImplements(t TestingT, interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) {
 | 
			
		||||
	if h, ok := t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
	if assert.NotImplements(t, interfaceObject, object, msgAndArgs...) {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	t.FailNow()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotImplementsf asserts that an object does not implement the specified interface.
 | 
			
		||||
//
 | 
			
		||||
//	assert.NotImplementsf(t, (*MyInterface)(nil), new(MyObject), "error message %s", "formatted")
 | 
			
		||||
func NotImplementsf(t TestingT, interfaceObject interface{}, object interface{}, msg string, args ...interface{}) {
 | 
			
		||||
	if h, ok := t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
	if assert.NotImplementsf(t, interfaceObject, object, msg, args...) {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	t.FailNow()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotNil asserts that the specified object is not nil.
 | 
			
		||||
//
 | 
			
		||||
//	assert.NotNil(t, err)
 | 
			
		||||
@@ -1658,10 +1681,12 @@ func NotSamef(t TestingT, expected interface{}, actual interface{}, msg string,
 | 
			
		||||
	t.FailNow()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotSubset asserts that the specified list(array, slice...) contains not all
 | 
			
		||||
// elements given in the specified subset(array, slice...).
 | 
			
		||||
// NotSubset asserts that the specified list(array, slice...) or map does NOT
 | 
			
		||||
// contain all elements given in the specified subset list(array, slice...) or
 | 
			
		||||
// map.
 | 
			
		||||
//
 | 
			
		||||
//	assert.NotSubset(t, [1, 3, 4], [1, 2], "But [1, 3, 4] does not contain [1, 2]")
 | 
			
		||||
//	assert.NotSubset(t, [1, 3, 4], [1, 2])
 | 
			
		||||
//	assert.NotSubset(t, {"x": 1, "y": 2}, {"z": 3})
 | 
			
		||||
func NotSubset(t TestingT, list interface{}, subset interface{}, msgAndArgs ...interface{}) {
 | 
			
		||||
	if h, ok := t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
@@ -1672,10 +1697,12 @@ func NotSubset(t TestingT, list interface{}, subset interface{}, msgAndArgs ...i
 | 
			
		||||
	t.FailNow()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotSubsetf asserts that the specified list(array, slice...) contains not all
 | 
			
		||||
// elements given in the specified subset(array, slice...).
 | 
			
		||||
// NotSubsetf asserts that the specified list(array, slice...) or map does NOT
 | 
			
		||||
// contain all elements given in the specified subset list(array, slice...) or
 | 
			
		||||
// map.
 | 
			
		||||
//
 | 
			
		||||
//	assert.NotSubsetf(t, [1, 3, 4], [1, 2], "But [1, 3, 4] does not contain [1, 2]", "error message %s", "formatted")
 | 
			
		||||
//	assert.NotSubsetf(t, [1, 3, 4], [1, 2], "error message %s", "formatted")
 | 
			
		||||
//	assert.NotSubsetf(t, {"x": 1, "y": 2}, {"z": 3}, "error message %s", "formatted")
 | 
			
		||||
func NotSubsetf(t TestingT, list interface{}, subset interface{}, msg string, args ...interface{}) {
 | 
			
		||||
	if h, ok := t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
@@ -1880,10 +1907,11 @@ func Samef(t TestingT, expected interface{}, actual interface{}, msg string, arg
 | 
			
		||||
	t.FailNow()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Subset asserts that the specified list(array, slice...) contains all
 | 
			
		||||
// elements given in the specified subset(array, slice...).
 | 
			
		||||
// Subset asserts that the specified list(array, slice...) or map contains all
 | 
			
		||||
// elements given in the specified subset list(array, slice...) or map.
 | 
			
		||||
//
 | 
			
		||||
//	assert.Subset(t, [1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]")
 | 
			
		||||
//	assert.Subset(t, [1, 2, 3], [1, 2])
 | 
			
		||||
//	assert.Subset(t, {"x": 1, "y": 2}, {"x": 1})
 | 
			
		||||
func Subset(t TestingT, list interface{}, subset interface{}, msgAndArgs ...interface{}) {
 | 
			
		||||
	if h, ok := t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
@@ -1894,10 +1922,11 @@ func Subset(t TestingT, list interface{}, subset interface{}, msgAndArgs ...inte
 | 
			
		||||
	t.FailNow()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Subsetf asserts that the specified list(array, slice...) contains all
 | 
			
		||||
// elements given in the specified subset(array, slice...).
 | 
			
		||||
// Subsetf asserts that the specified list(array, slice...) or map contains all
 | 
			
		||||
// elements given in the specified subset list(array, slice...) or map.
 | 
			
		||||
//
 | 
			
		||||
//	assert.Subsetf(t, [1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]", "error message %s", "formatted")
 | 
			
		||||
//	assert.Subsetf(t, [1, 2, 3], [1, 2], "error message %s", "formatted")
 | 
			
		||||
//	assert.Subsetf(t, {"x": 1, "y": 2}, {"x": 1}, "error message %s", "formatted")
 | 
			
		||||
func Subsetf(t TestingT, list interface{}, subset interface{}, msg string, args ...interface{}) {
 | 
			
		||||
	if h, ok := t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										59
									
								
								vendor/github.com/stretchr/testify/require/require_forward.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										59
									
								
								vendor/github.com/stretchr/testify/require/require_forward.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,7 +1,4 @@
 | 
			
		||||
/*
 | 
			
		||||
* CODE GENERATED AUTOMATICALLY WITH github.com/stretchr/testify/_codegen
 | 
			
		||||
* THIS FILE MUST NOT BE EDITED BY HAND
 | 
			
		||||
 */
 | 
			
		||||
// Code generated with github.com/stretchr/testify/_codegen; DO NOT EDIT.
 | 
			
		||||
 | 
			
		||||
package require
 | 
			
		||||
 | 
			
		||||
@@ -190,7 +187,7 @@ func (a *Assertions) EqualExportedValuesf(expected interface{}, actual interface
 | 
			
		||||
	EqualExportedValuesf(a.t, expected, actual, msg, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// EqualValues asserts that two objects are equal or convertable to the same types
 | 
			
		||||
// EqualValues asserts that two objects are equal or convertible to the same types
 | 
			
		||||
// and equal.
 | 
			
		||||
//
 | 
			
		||||
//	a.EqualValues(uint32(123), int32(123))
 | 
			
		||||
@@ -201,7 +198,7 @@ func (a *Assertions) EqualValues(expected interface{}, actual interface{}, msgAn
 | 
			
		||||
	EqualValues(a.t, expected, actual, msgAndArgs...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// EqualValuesf asserts that two objects are equal or convertable to the same types
 | 
			
		||||
// EqualValuesf asserts that two objects are equal or convertible to the same types
 | 
			
		||||
// and equal.
 | 
			
		||||
//
 | 
			
		||||
//	a.EqualValuesf(uint32(123), int32(123), "error message %s", "formatted")
 | 
			
		||||
@@ -1222,6 +1219,26 @@ func (a *Assertions) NotErrorIsf(err error, target error, msg string, args ...in
 | 
			
		||||
	NotErrorIsf(a.t, err, target, msg, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotImplements asserts that an object does not implement the specified interface.
 | 
			
		||||
//
 | 
			
		||||
//	a.NotImplements((*MyInterface)(nil), new(MyObject))
 | 
			
		||||
func (a *Assertions) NotImplements(interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) {
 | 
			
		||||
	if h, ok := a.t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
	NotImplements(a.t, interfaceObject, object, msgAndArgs...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotImplementsf asserts that an object does not implement the specified interface.
 | 
			
		||||
//
 | 
			
		||||
//	a.NotImplementsf((*MyInterface)(nil), new(MyObject), "error message %s", "formatted")
 | 
			
		||||
func (a *Assertions) NotImplementsf(interfaceObject interface{}, object interface{}, msg string, args ...interface{}) {
 | 
			
		||||
	if h, ok := a.t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
	NotImplementsf(a.t, interfaceObject, object, msg, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotNil asserts that the specified object is not nil.
 | 
			
		||||
//
 | 
			
		||||
//	a.NotNil(err)
 | 
			
		||||
@@ -1310,10 +1327,12 @@ func (a *Assertions) NotSamef(expected interface{}, actual interface{}, msg stri
 | 
			
		||||
	NotSamef(a.t, expected, actual, msg, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotSubset asserts that the specified list(array, slice...) contains not all
 | 
			
		||||
// elements given in the specified subset(array, slice...).
 | 
			
		||||
// NotSubset asserts that the specified list(array, slice...) or map does NOT
 | 
			
		||||
// contain all elements given in the specified subset list(array, slice...) or
 | 
			
		||||
// map.
 | 
			
		||||
//
 | 
			
		||||
//	a.NotSubset([1, 3, 4], [1, 2], "But [1, 3, 4] does not contain [1, 2]")
 | 
			
		||||
//	a.NotSubset([1, 3, 4], [1, 2])
 | 
			
		||||
//	a.NotSubset({"x": 1, "y": 2}, {"z": 3})
 | 
			
		||||
func (a *Assertions) NotSubset(list interface{}, subset interface{}, msgAndArgs ...interface{}) {
 | 
			
		||||
	if h, ok := a.t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
@@ -1321,10 +1340,12 @@ func (a *Assertions) NotSubset(list interface{}, subset interface{}, msgAndArgs
 | 
			
		||||
	NotSubset(a.t, list, subset, msgAndArgs...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotSubsetf asserts that the specified list(array, slice...) contains not all
 | 
			
		||||
// elements given in the specified subset(array, slice...).
 | 
			
		||||
// NotSubsetf asserts that the specified list(array, slice...) or map does NOT
 | 
			
		||||
// contain all elements given in the specified subset list(array, slice...) or
 | 
			
		||||
// map.
 | 
			
		||||
//
 | 
			
		||||
//	a.NotSubsetf([1, 3, 4], [1, 2], "But [1, 3, 4] does not contain [1, 2]", "error message %s", "formatted")
 | 
			
		||||
//	a.NotSubsetf([1, 3, 4], [1, 2], "error message %s", "formatted")
 | 
			
		||||
//	a.NotSubsetf({"x": 1, "y": 2}, {"z": 3}, "error message %s", "formatted")
 | 
			
		||||
func (a *Assertions) NotSubsetf(list interface{}, subset interface{}, msg string, args ...interface{}) {
 | 
			
		||||
	if h, ok := a.t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
@@ -1484,10 +1505,11 @@ func (a *Assertions) Samef(expected interface{}, actual interface{}, msg string,
 | 
			
		||||
	Samef(a.t, expected, actual, msg, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Subset asserts that the specified list(array, slice...) contains all
 | 
			
		||||
// elements given in the specified subset(array, slice...).
 | 
			
		||||
// Subset asserts that the specified list(array, slice...) or map contains all
 | 
			
		||||
// elements given in the specified subset list(array, slice...) or map.
 | 
			
		||||
//
 | 
			
		||||
//	a.Subset([1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]")
 | 
			
		||||
//	a.Subset([1, 2, 3], [1, 2])
 | 
			
		||||
//	a.Subset({"x": 1, "y": 2}, {"x": 1})
 | 
			
		||||
func (a *Assertions) Subset(list interface{}, subset interface{}, msgAndArgs ...interface{}) {
 | 
			
		||||
	if h, ok := a.t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
@@ -1495,10 +1517,11 @@ func (a *Assertions) Subset(list interface{}, subset interface{}, msgAndArgs ...
 | 
			
		||||
	Subset(a.t, list, subset, msgAndArgs...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Subsetf asserts that the specified list(array, slice...) contains all
 | 
			
		||||
// elements given in the specified subset(array, slice...).
 | 
			
		||||
// Subsetf asserts that the specified list(array, slice...) or map contains all
 | 
			
		||||
// elements given in the specified subset list(array, slice...) or map.
 | 
			
		||||
//
 | 
			
		||||
//	a.Subsetf([1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]", "error message %s", "formatted")
 | 
			
		||||
//	a.Subsetf([1, 2, 3], [1, 2], "error message %s", "formatted")
 | 
			
		||||
//	a.Subsetf({"x": 1, "y": 2}, {"x": 1}, "error message %s", "formatted")
 | 
			
		||||
func (a *Assertions) Subsetf(list interface{}, subset interface{}, msg string, args ...interface{}) {
 | 
			
		||||
	if h, ok := a.t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user