diff options
Diffstat (limited to 'vendor/github.com/stretchr/testify')
11 files changed, 1267 insertions, 760 deletions
| diff --git a/vendor/github.com/stretchr/testify/assert/assertion_compare.go b/vendor/github.com/stretchr/testify/assert/assertion_compare.go index 95d8e59da..b774da88d 100644 --- a/vendor/github.com/stretchr/testify/assert/assertion_compare.go +++ b/vendor/github.com/stretchr/testify/assert/assertion_compare.go @@ -352,9 +352,9 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) {  // Greater asserts that the first element is greater than the second  // -//    assert.Greater(t, 2, 1) -//    assert.Greater(t, float64(2), float64(1)) -//    assert.Greater(t, "b", "a") +//	assert.Greater(t, 2, 1) +//	assert.Greater(t, float64(2), float64(1)) +//	assert.Greater(t, "b", "a")  func Greater(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -364,10 +364,10 @@ func Greater(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface  // GreaterOrEqual asserts that the first element is greater than or equal to the second  // -//    assert.GreaterOrEqual(t, 2, 1) -//    assert.GreaterOrEqual(t, 2, 2) -//    assert.GreaterOrEqual(t, "b", "a") -//    assert.GreaterOrEqual(t, "b", "b") +//	assert.GreaterOrEqual(t, 2, 1) +//	assert.GreaterOrEqual(t, 2, 2) +//	assert.GreaterOrEqual(t, "b", "a") +//	assert.GreaterOrEqual(t, "b", "b")  func GreaterOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -377,9 +377,9 @@ func GreaterOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...in  // Less asserts that the first element is less than the second  // -//    assert.Less(t, 1, 2) -//    assert.Less(t, float64(1), float64(2)) -//    assert.Less(t, "a", "b") +//	assert.Less(t, 1, 2) +//	assert.Less(t, float64(1), float64(2)) +//	assert.Less(t, "a", "b")  func Less(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -389,10 +389,10 @@ func Less(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{})  // LessOrEqual asserts that the first element is less than or equal to the second  // -//    assert.LessOrEqual(t, 1, 2) -//    assert.LessOrEqual(t, 2, 2) -//    assert.LessOrEqual(t, "a", "b") -//    assert.LessOrEqual(t, "b", "b") +//	assert.LessOrEqual(t, 1, 2) +//	assert.LessOrEqual(t, 2, 2) +//	assert.LessOrEqual(t, "a", "b") +//	assert.LessOrEqual(t, "b", "b")  func LessOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -402,8 +402,8 @@ func LessOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...inter  // Positive asserts that the specified element is positive  // -//    assert.Positive(t, 1) -//    assert.Positive(t, 1.23) +//	assert.Positive(t, 1) +//	assert.Positive(t, 1.23)  func Positive(t TestingT, e interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -414,8 +414,8 @@ func Positive(t TestingT, e interface{}, msgAndArgs ...interface{}) bool {  // Negative asserts that the specified element is negative  // -//    assert.Negative(t, -1) -//    assert.Negative(t, -1.23) +//	assert.Negative(t, -1) +//	assert.Negative(t, -1.23)  func Negative(t TestingT, e interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() diff --git a/vendor/github.com/stretchr/testify/assert/assertion_format.go b/vendor/github.com/stretchr/testify/assert/assertion_format.go index 7880b8f94..84dbd6c79 100644 --- a/vendor/github.com/stretchr/testify/assert/assertion_format.go +++ b/vendor/github.com/stretchr/testify/assert/assertion_format.go @@ -22,9 +22,9 @@ func Conditionf(t TestingT, comp Comparison, msg string, args ...interface{}) bo  // Containsf asserts that the specified string, list(array, slice...) or map contains the  // specified substring or element.  // -//    assert.Containsf(t, "Hello World", "World", "error message %s", "formatted") -//    assert.Containsf(t, ["Hello", "World"], "World", "error message %s", "formatted") -//    assert.Containsf(t, {"Hello": "World"}, "Hello", "error message %s", "formatted") +//	assert.Containsf(t, "Hello World", "World", "error message %s", "formatted") +//	assert.Containsf(t, ["Hello", "World"], "World", "error message %s", "formatted") +//	assert.Containsf(t, {"Hello": "World"}, "Hello", "error message %s", "formatted")  func Containsf(t TestingT, s interface{}, contains interface{}, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -56,7 +56,7 @@ func ElementsMatchf(t TestingT, listA interface{}, listB interface{}, msg string  // Emptyf asserts that the specified object is empty.  I.e. nil, "", false, 0 or either  // a slice or a channel with len == 0.  // -//  assert.Emptyf(t, obj, "error message %s", "formatted") +//	assert.Emptyf(t, obj, "error message %s", "formatted")  func Emptyf(t TestingT, object interface{}, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -66,7 +66,7 @@ func Emptyf(t TestingT, object interface{}, msg string, args ...interface{}) boo  // Equalf asserts that two objects are equal.  // -//    assert.Equalf(t, 123, 123, "error message %s", "formatted") +//	assert.Equalf(t, 123, 123, "error message %s", "formatted")  //  // Pointer variable equality is determined based on the equality of the  // referenced values (as opposed to the memory addresses). Function equality @@ -81,8 +81,8 @@ func Equalf(t TestingT, expected interface{}, actual interface{}, msg string, ar  // EqualErrorf asserts that a function returned an error (i.e. not `nil`)  // and that it is equal to the provided error.  // -//   actualObj, err := SomeFunction() -//   assert.EqualErrorf(t, err,  expectedErrorString, "error message %s", "formatted") +//	actualObj, err := SomeFunction() +//	assert.EqualErrorf(t, err,  expectedErrorString, "error message %s", "formatted")  func EqualErrorf(t TestingT, theError error, errString string, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -90,10 +90,27 @@ func EqualErrorf(t TestingT, theError error, errString string, msg string, args  	return EqualError(t, theError, errString, append([]interface{}{msg}, args...)...)  } +// EqualExportedValuesf asserts that the types of two objects are equal and their public +// fields are also equal. This is useful for comparing structs that have private fields +// that could potentially differ. +// +//	 type S struct { +//		Exported     	int +//		notExported   	int +//	 } +//	 assert.EqualExportedValuesf(t, S{1, 2}, S{1, 3}, "error message %s", "formatted") => true +//	 assert.EqualExportedValuesf(t, S{1, 2}, S{2, 3}, "error message %s", "formatted") => false +func EqualExportedValuesf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool { +	if h, ok := t.(tHelper); ok { +		h.Helper() +	} +	return EqualExportedValues(t, expected, actual, append([]interface{}{msg}, args...)...) +} +  // EqualValuesf asserts that two objects are equal or convertable to the same types  // and equal.  // -//    assert.EqualValuesf(t, uint32(123), int32(123), "error message %s", "formatted") +//	assert.EqualValuesf(t, uint32(123), int32(123), "error message %s", "formatted")  func EqualValuesf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -103,10 +120,10 @@ func EqualValuesf(t TestingT, expected interface{}, actual interface{}, msg stri  // Errorf asserts that a function returned an error (i.e. not `nil`).  // -//   actualObj, err := SomeFunction() -//   if assert.Errorf(t, err, "error message %s", "formatted") { -// 	   assert.Equal(t, expectedErrorf, err) -//   } +//	  actualObj, err := SomeFunction() +//	  if assert.Errorf(t, err, "error message %s", "formatted") { +//		   assert.Equal(t, expectedErrorf, err) +//	  }  func Errorf(t TestingT, err error, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -126,8 +143,8 @@ func ErrorAsf(t TestingT, err error, target interface{}, msg string, args ...int  // ErrorContainsf asserts that a function returned an error (i.e. not `nil`)  // and that the error contains the specified substring.  // -//   actualObj, err := SomeFunction() -//   assert.ErrorContainsf(t, err,  expectedErrorSubString, "error message %s", "formatted") +//	actualObj, err := SomeFunction() +//	assert.ErrorContainsf(t, err,  expectedErrorSubString, "error message %s", "formatted")  func ErrorContainsf(t TestingT, theError error, contains string, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -147,7 +164,7 @@ func ErrorIsf(t TestingT, err error, target error, msg string, args ...interface  // Eventuallyf asserts that given condition will be met in waitFor time,  // periodically checking target function each tick.  // -//    assert.Eventuallyf(t, func() bool { return true; }, time.Second, 10*time.Millisecond, "error message %s", "formatted") +//	assert.Eventuallyf(t, func() bool { return true; }, time.Second, 10*time.Millisecond, "error message %s", "formatted")  func Eventuallyf(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -155,9 +172,34 @@ func Eventuallyf(t TestingT, condition func() bool, waitFor time.Duration, tick  	return Eventually(t, condition, waitFor, tick, append([]interface{}{msg}, args...)...)  } +// EventuallyWithTf asserts that given condition will be met in waitFor time, +// periodically checking target function each tick. In contrast to Eventually, +// it supplies a CollectT to the condition function, so that the condition +// function can use the CollectT to call other assertions. +// The condition is considered "met" if no errors are raised in a tick. +// The supplied CollectT collects all errors from one tick (if there are any). +// If the condition is not met before waitFor, the collected errors of +// the last tick are copied to t. +// +//	externalValue := false +//	go func() { +//		time.Sleep(8*time.Second) +//		externalValue = true +//	}() +//	assert.EventuallyWithTf(t, func(c *assert.CollectT, "error message %s", "formatted") { +//		// add assertions as needed; any assertion failure will fail the current tick +//		assert.True(c, externalValue, "expected 'externalValue' to be true") +//	}, 1*time.Second, 10*time.Second, "external state has not changed to 'true'; still false") +func EventuallyWithTf(t TestingT, condition func(collect *CollectT), waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) bool { +	if h, ok := t.(tHelper); ok { +		h.Helper() +	} +	return EventuallyWithT(t, condition, waitFor, tick, append([]interface{}{msg}, args...)...) +} +  // Exactlyf asserts that two objects are equal in value and type.  // -//    assert.Exactlyf(t, int32(123), int64(123), "error message %s", "formatted") +//	assert.Exactlyf(t, int32(123), int64(123), "error message %s", "formatted")  func Exactlyf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -183,7 +225,7 @@ func FailNowf(t TestingT, failureMessage string, msg string, args ...interface{}  // Falsef asserts that the specified value is false.  // -//    assert.Falsef(t, myBool, "error message %s", "formatted") +//	assert.Falsef(t, myBool, "error message %s", "formatted")  func Falsef(t TestingT, value bool, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -202,9 +244,9 @@ func FileExistsf(t TestingT, path string, msg string, args ...interface{}) bool  // Greaterf asserts that the first element is greater than the second  // -//    assert.Greaterf(t, 2, 1, "error message %s", "formatted") -//    assert.Greaterf(t, float64(2), float64(1), "error message %s", "formatted") -//    assert.Greaterf(t, "b", "a", "error message %s", "formatted") +//	assert.Greaterf(t, 2, 1, "error message %s", "formatted") +//	assert.Greaterf(t, float64(2), float64(1), "error message %s", "formatted") +//	assert.Greaterf(t, "b", "a", "error message %s", "formatted")  func Greaterf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -214,10 +256,10 @@ func Greaterf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...in  // GreaterOrEqualf asserts that the first element is greater than or equal to the second  // -//    assert.GreaterOrEqualf(t, 2, 1, "error message %s", "formatted") -//    assert.GreaterOrEqualf(t, 2, 2, "error message %s", "formatted") -//    assert.GreaterOrEqualf(t, "b", "a", "error message %s", "formatted") -//    assert.GreaterOrEqualf(t, "b", "b", "error message %s", "formatted") +//	assert.GreaterOrEqualf(t, 2, 1, "error message %s", "formatted") +//	assert.GreaterOrEqualf(t, 2, 2, "error message %s", "formatted") +//	assert.GreaterOrEqualf(t, "b", "a", "error message %s", "formatted") +//	assert.GreaterOrEqualf(t, "b", "b", "error message %s", "formatted")  func GreaterOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -228,7 +270,7 @@ func GreaterOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string, arg  // HTTPBodyContainsf asserts that a specified handler returns a  // body that contains a string.  // -//  assert.HTTPBodyContainsf(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted") +//	assert.HTTPBodyContainsf(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted")  //  // Returns whether the assertion was successful (true) or not (false).  func HTTPBodyContainsf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) bool { @@ -241,7 +283,7 @@ func HTTPBodyContainsf(t TestingT, handler http.HandlerFunc, method string, url  // HTTPBodyNotContainsf asserts that a specified handler returns a  // body that does not contain a string.  // -//  assert.HTTPBodyNotContainsf(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted") +//	assert.HTTPBodyNotContainsf(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted")  //  // Returns whether the assertion was successful (true) or not (false).  func HTTPBodyNotContainsf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) bool { @@ -253,7 +295,7 @@ func HTTPBodyNotContainsf(t TestingT, handler http.HandlerFunc, method string, u  // HTTPErrorf asserts that a specified handler returns an error status code.  // -//  assert.HTTPErrorf(t, myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}} +//	assert.HTTPErrorf(t, myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}}  //  // Returns whether the assertion was successful (true) or not (false).  func HTTPErrorf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool { @@ -265,7 +307,7 @@ func HTTPErrorf(t TestingT, handler http.HandlerFunc, method string, url string,  // HTTPRedirectf asserts that a specified handler returns a redirect status code.  // -//  assert.HTTPRedirectf(t, myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}} +//	assert.HTTPRedirectf(t, myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}}  //  // Returns whether the assertion was successful (true) or not (false).  func HTTPRedirectf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool { @@ -277,7 +319,7 @@ func HTTPRedirectf(t TestingT, handler http.HandlerFunc, method string, url stri  // HTTPStatusCodef asserts that a specified handler returns a specified status code.  // -//  assert.HTTPStatusCodef(t, myHandler, "GET", "/notImplemented", nil, 501, "error message %s", "formatted") +//	assert.HTTPStatusCodef(t, myHandler, "GET", "/notImplemented", nil, 501, "error message %s", "formatted")  //  // Returns whether the assertion was successful (true) or not (false).  func HTTPStatusCodef(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, statuscode int, msg string, args ...interface{}) bool { @@ -289,7 +331,7 @@ func HTTPStatusCodef(t TestingT, handler http.HandlerFunc, method string, url st  // HTTPSuccessf asserts that a specified handler returns a success status code.  // -//  assert.HTTPSuccessf(t, myHandler, "POST", "http://www.google.com", nil, "error message %s", "formatted") +//	assert.HTTPSuccessf(t, myHandler, "POST", "http://www.google.com", nil, "error message %s", "formatted")  //  // Returns whether the assertion was successful (true) or not (false).  func HTTPSuccessf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool { @@ -301,7 +343,7 @@ func HTTPSuccessf(t TestingT, handler http.HandlerFunc, method string, url strin  // Implementsf asserts that an object is implemented by the specified interface.  // -//    assert.Implementsf(t, (*MyInterface)(nil), new(MyObject), "error message %s", "formatted") +//	assert.Implementsf(t, (*MyInterface)(nil), new(MyObject), "error message %s", "formatted")  func Implementsf(t TestingT, interfaceObject interface{}, object interface{}, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -311,7 +353,7 @@ func Implementsf(t TestingT, interfaceObject interface{}, object interface{}, ms  // InDeltaf asserts that the two numerals are within delta of each other.  // -// 	 assert.InDeltaf(t, math.Pi, 22/7.0, 0.01, "error message %s", "formatted") +//	assert.InDeltaf(t, math.Pi, 22/7.0, 0.01, "error message %s", "formatted")  func InDeltaf(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -353,9 +395,9 @@ func InEpsilonSlicef(t TestingT, expected interface{}, actual interface{}, epsil  // IsDecreasingf asserts that the collection is decreasing  // -//    assert.IsDecreasingf(t, []int{2, 1, 0}, "error message %s", "formatted") -//    assert.IsDecreasingf(t, []float{2, 1}, "error message %s", "formatted") -//    assert.IsDecreasingf(t, []string{"b", "a"}, "error message %s", "formatted") +//	assert.IsDecreasingf(t, []int{2, 1, 0}, "error message %s", "formatted") +//	assert.IsDecreasingf(t, []float{2, 1}, "error message %s", "formatted") +//	assert.IsDecreasingf(t, []string{"b", "a"}, "error message %s", "formatted")  func IsDecreasingf(t TestingT, object interface{}, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -365,9 +407,9 @@ func IsDecreasingf(t TestingT, object interface{}, msg string, args ...interface  // IsIncreasingf asserts that the collection is increasing  // -//    assert.IsIncreasingf(t, []int{1, 2, 3}, "error message %s", "formatted") -//    assert.IsIncreasingf(t, []float{1, 2}, "error message %s", "formatted") -//    assert.IsIncreasingf(t, []string{"a", "b"}, "error message %s", "formatted") +//	assert.IsIncreasingf(t, []int{1, 2, 3}, "error message %s", "formatted") +//	assert.IsIncreasingf(t, []float{1, 2}, "error message %s", "formatted") +//	assert.IsIncreasingf(t, []string{"a", "b"}, "error message %s", "formatted")  func IsIncreasingf(t TestingT, object interface{}, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -377,9 +419,9 @@ func IsIncreasingf(t TestingT, object interface{}, msg string, args ...interface  // IsNonDecreasingf asserts that the collection is not decreasing  // -//    assert.IsNonDecreasingf(t, []int{1, 1, 2}, "error message %s", "formatted") -//    assert.IsNonDecreasingf(t, []float{1, 2}, "error message %s", "formatted") -//    assert.IsNonDecreasingf(t, []string{"a", "b"}, "error message %s", "formatted") +//	assert.IsNonDecreasingf(t, []int{1, 1, 2}, "error message %s", "formatted") +//	assert.IsNonDecreasingf(t, []float{1, 2}, "error message %s", "formatted") +//	assert.IsNonDecreasingf(t, []string{"a", "b"}, "error message %s", "formatted")  func IsNonDecreasingf(t TestingT, object interface{}, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -389,9 +431,9 @@ func IsNonDecreasingf(t TestingT, object interface{}, msg string, args ...interf  // IsNonIncreasingf asserts that the collection is not increasing  // -//    assert.IsNonIncreasingf(t, []int{2, 1, 1}, "error message %s", "formatted") -//    assert.IsNonIncreasingf(t, []float{2, 1}, "error message %s", "formatted") -//    assert.IsNonIncreasingf(t, []string{"b", "a"}, "error message %s", "formatted") +//	assert.IsNonIncreasingf(t, []int{2, 1, 1}, "error message %s", "formatted") +//	assert.IsNonIncreasingf(t, []float{2, 1}, "error message %s", "formatted") +//	assert.IsNonIncreasingf(t, []string{"b", "a"}, "error message %s", "formatted")  func IsNonIncreasingf(t TestingT, object interface{}, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -409,7 +451,7 @@ func IsTypef(t TestingT, expectedType interface{}, object interface{}, msg strin  // JSONEqf asserts that two JSON strings are equivalent.  // -//  assert.JSONEqf(t, `{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`, "error message %s", "formatted") +//	assert.JSONEqf(t, `{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`, "error message %s", "formatted")  func JSONEqf(t TestingT, expected string, actual string, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -420,7 +462,7 @@ func JSONEqf(t TestingT, expected string, actual string, msg string, args ...int  // Lenf asserts that the specified object has specific length.  // Lenf also fails if the object has a type that len() not accept.  // -//    assert.Lenf(t, mySlice, 3, "error message %s", "formatted") +//	assert.Lenf(t, mySlice, 3, "error message %s", "formatted")  func Lenf(t TestingT, object interface{}, length int, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -430,9 +472,9 @@ func Lenf(t TestingT, object interface{}, length int, msg string, args ...interf  // Lessf asserts that the first element is less than the second  // -//    assert.Lessf(t, 1, 2, "error message %s", "formatted") -//    assert.Lessf(t, float64(1), float64(2), "error message %s", "formatted") -//    assert.Lessf(t, "a", "b", "error message %s", "formatted") +//	assert.Lessf(t, 1, 2, "error message %s", "formatted") +//	assert.Lessf(t, float64(1), float64(2), "error message %s", "formatted") +//	assert.Lessf(t, "a", "b", "error message %s", "formatted")  func Lessf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -442,10 +484,10 @@ func Lessf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...inter  // LessOrEqualf asserts that the first element is less than or equal to the second  // -//    assert.LessOrEqualf(t, 1, 2, "error message %s", "formatted") -//    assert.LessOrEqualf(t, 2, 2, "error message %s", "formatted") -//    assert.LessOrEqualf(t, "a", "b", "error message %s", "formatted") -//    assert.LessOrEqualf(t, "b", "b", "error message %s", "formatted") +//	assert.LessOrEqualf(t, 1, 2, "error message %s", "formatted") +//	assert.LessOrEqualf(t, 2, 2, "error message %s", "formatted") +//	assert.LessOrEqualf(t, "a", "b", "error message %s", "formatted") +//	assert.LessOrEqualf(t, "b", "b", "error message %s", "formatted")  func LessOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -455,8 +497,8 @@ func LessOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string, args .  // Negativef asserts that the specified element is negative  // -//    assert.Negativef(t, -1, "error message %s", "formatted") -//    assert.Negativef(t, -1.23, "error message %s", "formatted") +//	assert.Negativef(t, -1, "error message %s", "formatted") +//	assert.Negativef(t, -1.23, "error message %s", "formatted")  func Negativef(t TestingT, e interface{}, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -467,7 +509,7 @@ func Negativef(t TestingT, e interface{}, msg string, args ...interface{}) bool  // Neverf asserts that the given condition doesn't satisfy in waitFor time,  // periodically checking the target function each tick.  // -//    assert.Neverf(t, func() bool { return false; }, time.Second, 10*time.Millisecond, "error message %s", "formatted") +//	assert.Neverf(t, func() bool { return false; }, time.Second, 10*time.Millisecond, "error message %s", "formatted")  func Neverf(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -477,7 +519,7 @@ func Neverf(t TestingT, condition func() bool, waitFor time.Duration, tick time.  // Nilf asserts that the specified object is nil.  // -//    assert.Nilf(t, err, "error message %s", "formatted") +//	assert.Nilf(t, err, "error message %s", "formatted")  func Nilf(t TestingT, object interface{}, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -496,10 +538,10 @@ func NoDirExistsf(t TestingT, path string, msg string, args ...interface{}) bool  // NoErrorf asserts that a function returned no error (i.e. `nil`).  // -//   actualObj, err := SomeFunction() -//   if assert.NoErrorf(t, err, "error message %s", "formatted") { -// 	   assert.Equal(t, expectedObj, actualObj) -//   } +//	  actualObj, err := SomeFunction() +//	  if assert.NoErrorf(t, err, "error message %s", "formatted") { +//		   assert.Equal(t, expectedObj, actualObj) +//	  }  func NoErrorf(t TestingT, err error, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -519,9 +561,9 @@ func NoFileExistsf(t TestingT, path string, msg string, args ...interface{}) boo  // NotContainsf asserts that the specified string, list(array, slice...) or map does NOT contain the  // specified substring or element.  // -//    assert.NotContainsf(t, "Hello World", "Earth", "error message %s", "formatted") -//    assert.NotContainsf(t, ["Hello", "World"], "Earth", "error message %s", "formatted") -//    assert.NotContainsf(t, {"Hello": "World"}, "Earth", "error message %s", "formatted") +//	assert.NotContainsf(t, "Hello World", "Earth", "error message %s", "formatted") +//	assert.NotContainsf(t, ["Hello", "World"], "Earth", "error message %s", "formatted") +//	assert.NotContainsf(t, {"Hello": "World"}, "Earth", "error message %s", "formatted")  func NotContainsf(t TestingT, s interface{}, contains interface{}, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -532,9 +574,9 @@ func NotContainsf(t TestingT, s interface{}, contains interface{}, msg string, a  // NotEmptyf asserts that the specified object is NOT empty.  I.e. not nil, "", false, 0 or either  // a slice or a channel with len == 0.  // -//  if assert.NotEmptyf(t, obj, "error message %s", "formatted") { -//    assert.Equal(t, "two", obj[1]) -//  } +//	if assert.NotEmptyf(t, obj, "error message %s", "formatted") { +//	  assert.Equal(t, "two", obj[1]) +//	}  func NotEmptyf(t TestingT, object interface{}, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -544,7 +586,7 @@ func NotEmptyf(t TestingT, object interface{}, msg string, args ...interface{})  // NotEqualf asserts that the specified values are NOT equal.  // -//    assert.NotEqualf(t, obj1, obj2, "error message %s", "formatted") +//	assert.NotEqualf(t, obj1, obj2, "error message %s", "formatted")  //  // Pointer variable equality is determined based on the equality of the  // referenced values (as opposed to the memory addresses). @@ -557,7 +599,7 @@ func NotEqualf(t TestingT, expected interface{}, actual interface{}, msg string,  // NotEqualValuesf asserts that two objects are not equal even when converted to the same type  // -//    assert.NotEqualValuesf(t, obj1, obj2, "error message %s", "formatted") +//	assert.NotEqualValuesf(t, obj1, obj2, "error message %s", "formatted")  func NotEqualValuesf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -576,7 +618,7 @@ func NotErrorIsf(t TestingT, err error, target error, msg string, args ...interf  // NotNilf asserts that the specified object is not nil.  // -//    assert.NotNilf(t, err, "error message %s", "formatted") +//	assert.NotNilf(t, err, "error message %s", "formatted")  func NotNilf(t TestingT, object interface{}, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -586,7 +628,7 @@ func NotNilf(t TestingT, object interface{}, msg string, args ...interface{}) bo  // NotPanicsf asserts that the code inside the specified PanicTestFunc does NOT panic.  // -//   assert.NotPanicsf(t, func(){ RemainCalm() }, "error message %s", "formatted") +//	assert.NotPanicsf(t, func(){ RemainCalm() }, "error message %s", "formatted")  func NotPanicsf(t TestingT, f PanicTestFunc, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -596,8 +638,8 @@ func NotPanicsf(t TestingT, f PanicTestFunc, msg string, args ...interface{}) bo  // NotRegexpf asserts that a specified regexp does not match a string.  // -//  assert.NotRegexpf(t, regexp.MustCompile("starts"), "it's starting", "error message %s", "formatted") -//  assert.NotRegexpf(t, "^start", "it's not starting", "error message %s", "formatted") +//	assert.NotRegexpf(t, regexp.MustCompile("starts"), "it's starting", "error message %s", "formatted") +//	assert.NotRegexpf(t, "^start", "it's not starting", "error message %s", "formatted")  func NotRegexpf(t TestingT, rx interface{}, str interface{}, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -607,7 +649,7 @@ func NotRegexpf(t TestingT, rx interface{}, str interface{}, msg string, args ..  // NotSamef asserts that two pointers do not reference the same object.  // -//    assert.NotSamef(t, ptr1, ptr2, "error message %s", "formatted") +//	assert.NotSamef(t, ptr1, ptr2, "error message %s", "formatted")  //  // Both arguments must be pointer variables. Pointer variable sameness is  // determined based on the equality of both type and value. @@ -621,7 +663,7 @@ func NotSamef(t TestingT, expected interface{}, actual interface{}, msg string,  // NotSubsetf asserts that the specified list(array, slice...) contains not all  // elements given in the specified subset(array, slice...).  // -//    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], "But [1, 3, 4] does not contain [1, 2]", "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() @@ -639,7 +681,7 @@ func NotZerof(t TestingT, i interface{}, msg string, args ...interface{}) bool {  // Panicsf asserts that the code inside the specified PanicTestFunc panics.  // -//   assert.Panicsf(t, func(){ GoCrazy() }, "error message %s", "formatted") +//	assert.Panicsf(t, func(){ GoCrazy() }, "error message %s", "formatted")  func Panicsf(t TestingT, f PanicTestFunc, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -651,7 +693,7 @@ func Panicsf(t TestingT, f PanicTestFunc, msg string, args ...interface{}) bool  // panics, and that the recovered panic value is an error that satisfies the  // EqualError comparison.  // -//   assert.PanicsWithErrorf(t, "crazy error", func(){ GoCrazy() }, "error message %s", "formatted") +//	assert.PanicsWithErrorf(t, "crazy error", func(){ GoCrazy() }, "error message %s", "formatted")  func PanicsWithErrorf(t TestingT, errString string, f PanicTestFunc, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -662,7 +704,7 @@ func PanicsWithErrorf(t TestingT, errString string, f PanicTestFunc, msg string,  // PanicsWithValuef asserts that the code inside the specified PanicTestFunc panics, and that  // the recovered panic value equals the expected panic value.  // -//   assert.PanicsWithValuef(t, "crazy error", func(){ GoCrazy() }, "error message %s", "formatted") +//	assert.PanicsWithValuef(t, "crazy error", func(){ GoCrazy() }, "error message %s", "formatted")  func PanicsWithValuef(t TestingT, expected interface{}, f PanicTestFunc, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -672,8 +714,8 @@ func PanicsWithValuef(t TestingT, expected interface{}, f PanicTestFunc, msg str  // Positivef asserts that the specified element is positive  // -//    assert.Positivef(t, 1, "error message %s", "formatted") -//    assert.Positivef(t, 1.23, "error message %s", "formatted") +//	assert.Positivef(t, 1, "error message %s", "formatted") +//	assert.Positivef(t, 1.23, "error message %s", "formatted")  func Positivef(t TestingT, e interface{}, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -683,8 +725,8 @@ func Positivef(t TestingT, e interface{}, msg string, args ...interface{}) bool  // Regexpf asserts that a specified regexp matches a string.  // -//  assert.Regexpf(t, regexp.MustCompile("start"), "it's starting", "error message %s", "formatted") -//  assert.Regexpf(t, "start...$", "it's not starting", "error message %s", "formatted") +//	assert.Regexpf(t, regexp.MustCompile("start"), "it's starting", "error message %s", "formatted") +//	assert.Regexpf(t, "start...$", "it's not starting", "error message %s", "formatted")  func Regexpf(t TestingT, rx interface{}, str interface{}, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -694,7 +736,7 @@ func Regexpf(t TestingT, rx interface{}, str interface{}, msg string, args ...in  // Samef asserts that two pointers reference the same object.  // -//    assert.Samef(t, ptr1, ptr2, "error message %s", "formatted") +//	assert.Samef(t, ptr1, ptr2, "error message %s", "formatted")  //  // Both arguments must be pointer variables. Pointer variable sameness is  // determined based on the equality of both type and value. @@ -708,7 +750,7 @@ func Samef(t TestingT, expected interface{}, actual interface{}, msg string, arg  // Subsetf asserts that the specified list(array, slice...) contains all  // elements given in the specified subset(array, slice...).  // -//    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], "But [1, 2, 3] does contain [1, 2]", "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() @@ -718,7 +760,7 @@ func Subsetf(t TestingT, list interface{}, subset interface{}, msg string, args  // Truef asserts that the specified value is true.  // -//    assert.Truef(t, myBool, "error message %s", "formatted") +//	assert.Truef(t, myBool, "error message %s", "formatted")  func Truef(t TestingT, value bool, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -728,7 +770,7 @@ func Truef(t TestingT, value bool, msg string, args ...interface{}) bool {  // WithinDurationf asserts that the two times are within duration delta of each other.  // -//   assert.WithinDurationf(t, time.Now(), time.Now(), 10*time.Second, "error message %s", "formatted") +//	assert.WithinDurationf(t, time.Now(), time.Now(), 10*time.Second, "error message %s", "formatted")  func WithinDurationf(t TestingT, expected time.Time, actual time.Time, delta time.Duration, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -738,7 +780,7 @@ func WithinDurationf(t TestingT, expected time.Time, actual time.Time, delta tim  // WithinRangef asserts that a time is within a time range (inclusive).  // -//   assert.WithinRangef(t, time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second), "error message %s", "formatted") +//	assert.WithinRangef(t, time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second), "error message %s", "formatted")  func WithinRangef(t TestingT, actual time.Time, start time.Time, end time.Time, msg string, args ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() diff --git a/vendor/github.com/stretchr/testify/assert/assertion_forward.go b/vendor/github.com/stretchr/testify/assert/assertion_forward.go index 339515b8b..b1d94aec5 100644 --- a/vendor/github.com/stretchr/testify/assert/assertion_forward.go +++ b/vendor/github.com/stretchr/testify/assert/assertion_forward.go @@ -30,9 +30,9 @@ func (a *Assertions) Conditionf(comp Comparison, msg string, args ...interface{}  // Contains asserts that the specified string, list(array, slice...) or map contains the  // specified substring or element.  // -//    a.Contains("Hello World", "World") -//    a.Contains(["Hello", "World"], "World") -//    a.Contains({"Hello": "World"}, "Hello") +//	a.Contains("Hello World", "World") +//	a.Contains(["Hello", "World"], "World") +//	a.Contains({"Hello": "World"}, "Hello")  func (a *Assertions) Contains(s interface{}, contains interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -43,9 +43,9 @@ func (a *Assertions) Contains(s interface{}, contains interface{}, msgAndArgs ..  // Containsf asserts that the specified string, list(array, slice...) or map contains the  // specified substring or element.  // -//    a.Containsf("Hello World", "World", "error message %s", "formatted") -//    a.Containsf(["Hello", "World"], "World", "error message %s", "formatted") -//    a.Containsf({"Hello": "World"}, "Hello", "error message %s", "formatted") +//	a.Containsf("Hello World", "World", "error message %s", "formatted") +//	a.Containsf(["Hello", "World"], "World", "error message %s", "formatted") +//	a.Containsf({"Hello": "World"}, "Hello", "error message %s", "formatted")  func (a *Assertions) Containsf(s interface{}, contains interface{}, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -98,7 +98,7 @@ func (a *Assertions) ElementsMatchf(listA interface{}, listB interface{}, msg st  // Empty asserts that the specified object is empty.  I.e. nil, "", false, 0 or either  // a slice or a channel with len == 0.  // -//  a.Empty(obj) +//	a.Empty(obj)  func (a *Assertions) Empty(object interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -109,7 +109,7 @@ func (a *Assertions) Empty(object interface{}, msgAndArgs ...interface{}) bool {  // Emptyf asserts that the specified object is empty.  I.e. nil, "", false, 0 or either  // a slice or a channel with len == 0.  // -//  a.Emptyf(obj, "error message %s", "formatted") +//	a.Emptyf(obj, "error message %s", "formatted")  func (a *Assertions) Emptyf(object interface{}, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -119,7 +119,7 @@ func (a *Assertions) Emptyf(object interface{}, msg string, args ...interface{})  // Equal asserts that two objects are equal.  // -//    a.Equal(123, 123) +//	a.Equal(123, 123)  //  // Pointer variable equality is determined based on the equality of the  // referenced values (as opposed to the memory addresses). Function equality @@ -134,8 +134,8 @@ func (a *Assertions) Equal(expected interface{}, actual interface{}, msgAndArgs  // EqualError asserts that a function returned an error (i.e. not `nil`)  // and that it is equal to the provided error.  // -//   actualObj, err := SomeFunction() -//   a.EqualError(err,  expectedErrorString) +//	actualObj, err := SomeFunction() +//	a.EqualError(err,  expectedErrorString)  func (a *Assertions) EqualError(theError error, errString string, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -146,8 +146,8 @@ func (a *Assertions) EqualError(theError error, errString string, msgAndArgs ...  // EqualErrorf asserts that a function returned an error (i.e. not `nil`)  // and that it is equal to the provided error.  // -//   actualObj, err := SomeFunction() -//   a.EqualErrorf(err,  expectedErrorString, "error message %s", "formatted") +//	actualObj, err := SomeFunction() +//	a.EqualErrorf(err,  expectedErrorString, "error message %s", "formatted")  func (a *Assertions) EqualErrorf(theError error, errString string, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -155,10 +155,44 @@ func (a *Assertions) EqualErrorf(theError error, errString string, msg string, a  	return EqualErrorf(a.t, theError, errString, msg, args...)  } +// EqualExportedValues asserts that the types of two objects are equal and their public +// fields are also equal. This is useful for comparing structs that have private fields +// that could potentially differ. +// +//	 type S struct { +//		Exported     	int +//		notExported   	int +//	 } +//	 a.EqualExportedValues(S{1, 2}, S{1, 3}) => true +//	 a.EqualExportedValues(S{1, 2}, S{2, 3}) => false +func (a *Assertions) EqualExportedValues(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool { +	if h, ok := a.t.(tHelper); ok { +		h.Helper() +	} +	return EqualExportedValues(a.t, expected, actual, msgAndArgs...) +} + +// EqualExportedValuesf asserts that the types of two objects are equal and their public +// fields are also equal. This is useful for comparing structs that have private fields +// that could potentially differ. +// +//	 type S struct { +//		Exported     	int +//		notExported   	int +//	 } +//	 a.EqualExportedValuesf(S{1, 2}, S{1, 3}, "error message %s", "formatted") => true +//	 a.EqualExportedValuesf(S{1, 2}, S{2, 3}, "error message %s", "formatted") => false +func (a *Assertions) EqualExportedValuesf(expected interface{}, actual interface{}, msg string, args ...interface{}) bool { +	if h, ok := a.t.(tHelper); ok { +		h.Helper() +	} +	return EqualExportedValuesf(a.t, expected, actual, msg, args...) +} +  // EqualValues asserts that two objects are equal or convertable to the same types  // and equal.  // -//    a.EqualValues(uint32(123), int32(123)) +//	a.EqualValues(uint32(123), int32(123))  func (a *Assertions) EqualValues(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -169,7 +203,7 @@ func (a *Assertions) EqualValues(expected interface{}, actual interface{}, msgAn  // EqualValuesf asserts that two objects are equal or convertable to the same types  // and equal.  // -//    a.EqualValuesf(uint32(123), int32(123), "error message %s", "formatted") +//	a.EqualValuesf(uint32(123), int32(123), "error message %s", "formatted")  func (a *Assertions) EqualValuesf(expected interface{}, actual interface{}, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -179,7 +213,7 @@ func (a *Assertions) EqualValuesf(expected interface{}, actual interface{}, msg  // Equalf asserts that two objects are equal.  // -//    a.Equalf(123, 123, "error message %s", "formatted") +//	a.Equalf(123, 123, "error message %s", "formatted")  //  // Pointer variable equality is determined based on the equality of the  // referenced values (as opposed to the memory addresses). Function equality @@ -193,10 +227,10 @@ func (a *Assertions) Equalf(expected interface{}, actual interface{}, msg string  // Error asserts that a function returned an error (i.e. not `nil`).  // -//   actualObj, err := SomeFunction() -//   if a.Error(err) { -// 	   assert.Equal(t, expectedError, err) -//   } +//	  actualObj, err := SomeFunction() +//	  if a.Error(err) { +//		   assert.Equal(t, expectedError, err) +//	  }  func (a *Assertions) Error(err error, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -225,8 +259,8 @@ func (a *Assertions) ErrorAsf(err error, target interface{}, msg string, args ..  // ErrorContains asserts that a function returned an error (i.e. not `nil`)  // and that the error contains the specified substring.  // -//   actualObj, err := SomeFunction() -//   a.ErrorContains(err,  expectedErrorSubString) +//	actualObj, err := SomeFunction() +//	a.ErrorContains(err,  expectedErrorSubString)  func (a *Assertions) ErrorContains(theError error, contains string, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -237,8 +271,8 @@ func (a *Assertions) ErrorContains(theError error, contains string, msgAndArgs .  // ErrorContainsf asserts that a function returned an error (i.e. not `nil`)  // and that the error contains the specified substring.  // -//   actualObj, err := SomeFunction() -//   a.ErrorContainsf(err,  expectedErrorSubString, "error message %s", "formatted") +//	actualObj, err := SomeFunction() +//	a.ErrorContainsf(err,  expectedErrorSubString, "error message %s", "formatted")  func (a *Assertions) ErrorContainsf(theError error, contains string, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -266,10 +300,10 @@ func (a *Assertions) ErrorIsf(err error, target error, msg string, args ...inter  // Errorf asserts that a function returned an error (i.e. not `nil`).  // -//   actualObj, err := SomeFunction() -//   if a.Errorf(err, "error message %s", "formatted") { -// 	   assert.Equal(t, expectedErrorf, err) -//   } +//	  actualObj, err := SomeFunction() +//	  if a.Errorf(err, "error message %s", "formatted") { +//		   assert.Equal(t, expectedErrorf, err) +//	  }  func (a *Assertions) Errorf(err error, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -280,7 +314,7 @@ func (a *Assertions) Errorf(err error, msg string, args ...interface{}) bool {  // Eventually asserts that given condition will be met in waitFor time,  // periodically checking target function each tick.  // -//    a.Eventually(func() bool { return true; }, time.Second, 10*time.Millisecond) +//	a.Eventually(func() bool { return true; }, time.Second, 10*time.Millisecond)  func (a *Assertions) Eventually(condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -288,10 +322,60 @@ func (a *Assertions) Eventually(condition func() bool, waitFor time.Duration, ti  	return Eventually(a.t, condition, waitFor, tick, msgAndArgs...)  } +// EventuallyWithT asserts that given condition will be met in waitFor time, +// periodically checking target function each tick. In contrast to Eventually, +// it supplies a CollectT to the condition function, so that the condition +// function can use the CollectT to call other assertions. +// The condition is considered "met" if no errors are raised in a tick. +// The supplied CollectT collects all errors from one tick (if there are any). +// If the condition is not met before waitFor, the collected errors of +// the last tick are copied to t. +// +//	externalValue := false +//	go func() { +//		time.Sleep(8*time.Second) +//		externalValue = true +//	}() +//	a.EventuallyWithT(func(c *assert.CollectT) { +//		// add assertions as needed; any assertion failure will fail the current tick +//		assert.True(c, externalValue, "expected 'externalValue' to be true") +//	}, 1*time.Second, 10*time.Second, "external state has not changed to 'true'; still false") +func (a *Assertions) EventuallyWithT(condition func(collect *CollectT), waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) bool { +	if h, ok := a.t.(tHelper); ok { +		h.Helper() +	} +	return EventuallyWithT(a.t, condition, waitFor, tick, msgAndArgs...) +} + +// EventuallyWithTf asserts that given condition will be met in waitFor time, +// periodically checking target function each tick. In contrast to Eventually, +// it supplies a CollectT to the condition function, so that the condition +// function can use the CollectT to call other assertions. +// The condition is considered "met" if no errors are raised in a tick. +// The supplied CollectT collects all errors from one tick (if there are any). +// If the condition is not met before waitFor, the collected errors of +// the last tick are copied to t. +// +//	externalValue := false +//	go func() { +//		time.Sleep(8*time.Second) +//		externalValue = true +//	}() +//	a.EventuallyWithTf(func(c *assert.CollectT, "error message %s", "formatted") { +//		// add assertions as needed; any assertion failure will fail the current tick +//		assert.True(c, externalValue, "expected 'externalValue' to be true") +//	}, 1*time.Second, 10*time.Second, "external state has not changed to 'true'; still false") +func (a *Assertions) EventuallyWithTf(condition func(collect *CollectT), waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) bool { +	if h, ok := a.t.(tHelper); ok { +		h.Helper() +	} +	return EventuallyWithTf(a.t, condition, waitFor, tick, msg, args...) +} +  // Eventuallyf asserts that given condition will be met in waitFor time,  // periodically checking target function each tick.  // -//    a.Eventuallyf(func() bool { return true; }, time.Second, 10*time.Millisecond, "error message %s", "formatted") +//	a.Eventuallyf(func() bool { return true; }, time.Second, 10*time.Millisecond, "error message %s", "formatted")  func (a *Assertions) Eventuallyf(condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -301,7 +385,7 @@ func (a *Assertions) Eventuallyf(condition func() bool, waitFor time.Duration, t  // Exactly asserts that two objects are equal in value and type.  // -//    a.Exactly(int32(123), int64(123)) +//	a.Exactly(int32(123), int64(123))  func (a *Assertions) Exactly(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -311,7 +395,7 @@ func (a *Assertions) Exactly(expected interface{}, actual interface{}, msgAndArg  // Exactlyf asserts that two objects are equal in value and type.  // -//    a.Exactlyf(int32(123), int64(123), "error message %s", "formatted") +//	a.Exactlyf(int32(123), int64(123), "error message %s", "formatted")  func (a *Assertions) Exactlyf(expected interface{}, actual interface{}, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -353,7 +437,7 @@ func (a *Assertions) Failf(failureMessage string, msg string, args ...interface{  // False asserts that the specified value is false.  // -//    a.False(myBool) +//	a.False(myBool)  func (a *Assertions) False(value bool, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -363,7 +447,7 @@ func (a *Assertions) False(value bool, msgAndArgs ...interface{}) bool {  // Falsef asserts that the specified value is false.  // -//    a.Falsef(myBool, "error message %s", "formatted") +//	a.Falsef(myBool, "error message %s", "formatted")  func (a *Assertions) Falsef(value bool, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -391,9 +475,9 @@ func (a *Assertions) FileExistsf(path string, msg string, args ...interface{}) b  // Greater asserts that the first element is greater than the second  // -//    a.Greater(2, 1) -//    a.Greater(float64(2), float64(1)) -//    a.Greater("b", "a") +//	a.Greater(2, 1) +//	a.Greater(float64(2), float64(1)) +//	a.Greater("b", "a")  func (a *Assertions) Greater(e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -403,10 +487,10 @@ func (a *Assertions) Greater(e1 interface{}, e2 interface{}, msgAndArgs ...inter  // GreaterOrEqual asserts that the first element is greater than or equal to the second  // -//    a.GreaterOrEqual(2, 1) -//    a.GreaterOrEqual(2, 2) -//    a.GreaterOrEqual("b", "a") -//    a.GreaterOrEqual("b", "b") +//	a.GreaterOrEqual(2, 1) +//	a.GreaterOrEqual(2, 2) +//	a.GreaterOrEqual("b", "a") +//	a.GreaterOrEqual("b", "b")  func (a *Assertions) GreaterOrEqual(e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -416,10 +500,10 @@ func (a *Assertions) GreaterOrEqual(e1 interface{}, e2 interface{}, msgAndArgs .  // GreaterOrEqualf asserts that the first element is greater than or equal to the second  // -//    a.GreaterOrEqualf(2, 1, "error message %s", "formatted") -//    a.GreaterOrEqualf(2, 2, "error message %s", "formatted") -//    a.GreaterOrEqualf("b", "a", "error message %s", "formatted") -//    a.GreaterOrEqualf("b", "b", "error message %s", "formatted") +//	a.GreaterOrEqualf(2, 1, "error message %s", "formatted") +//	a.GreaterOrEqualf(2, 2, "error message %s", "formatted") +//	a.GreaterOrEqualf("b", "a", "error message %s", "formatted") +//	a.GreaterOrEqualf("b", "b", "error message %s", "formatted")  func (a *Assertions) GreaterOrEqualf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -429,9 +513,9 @@ func (a *Assertions) GreaterOrEqualf(e1 interface{}, e2 interface{}, msg string,  // Greaterf asserts that the first element is greater than the second  // -//    a.Greaterf(2, 1, "error message %s", "formatted") -//    a.Greaterf(float64(2), float64(1), "error message %s", "formatted") -//    a.Greaterf("b", "a", "error message %s", "formatted") +//	a.Greaterf(2, 1, "error message %s", "formatted") +//	a.Greaterf(float64(2), float64(1), "error message %s", "formatted") +//	a.Greaterf("b", "a", "error message %s", "formatted")  func (a *Assertions) Greaterf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -442,7 +526,7 @@ func (a *Assertions) Greaterf(e1 interface{}, e2 interface{}, msg string, args .  // HTTPBodyContains asserts that a specified handler returns a  // body that contains a string.  // -//  a.HTTPBodyContains(myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky") +//	a.HTTPBodyContains(myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky")  //  // Returns whether the assertion was successful (true) or not (false).  func (a *Assertions) HTTPBodyContains(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) bool { @@ -455,7 +539,7 @@ func (a *Assertions) HTTPBodyContains(handler http.HandlerFunc, method string, u  // HTTPBodyContainsf asserts that a specified handler returns a  // body that contains a string.  // -//  a.HTTPBodyContainsf(myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted") +//	a.HTTPBodyContainsf(myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted")  //  // Returns whether the assertion was successful (true) or not (false).  func (a *Assertions) HTTPBodyContainsf(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) bool { @@ -468,7 +552,7 @@ func (a *Assertions) HTTPBodyContainsf(handler http.HandlerFunc, method string,  // HTTPBodyNotContains asserts that a specified handler returns a  // body that does not contain a string.  // -//  a.HTTPBodyNotContains(myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky") +//	a.HTTPBodyNotContains(myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky")  //  // Returns whether the assertion was successful (true) or not (false).  func (a *Assertions) HTTPBodyNotContains(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) bool { @@ -481,7 +565,7 @@ func (a *Assertions) HTTPBodyNotContains(handler http.HandlerFunc, method string  // HTTPBodyNotContainsf asserts that a specified handler returns a  // body that does not contain a string.  // -//  a.HTTPBodyNotContainsf(myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted") +//	a.HTTPBodyNotContainsf(myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted")  //  // Returns whether the assertion was successful (true) or not (false).  func (a *Assertions) HTTPBodyNotContainsf(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) bool { @@ -493,7 +577,7 @@ func (a *Assertions) HTTPBodyNotContainsf(handler http.HandlerFunc, method strin  // HTTPError asserts that a specified handler returns an error status code.  // -//  a.HTTPError(myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}} +//	a.HTTPError(myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}}  //  // Returns whether the assertion was successful (true) or not (false).  func (a *Assertions) HTTPError(handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) bool { @@ -505,7 +589,7 @@ func (a *Assertions) HTTPError(handler http.HandlerFunc, method string, url stri  // HTTPErrorf asserts that a specified handler returns an error status code.  // -//  a.HTTPErrorf(myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}} +//	a.HTTPErrorf(myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}}  //  // Returns whether the assertion was successful (true) or not (false).  func (a *Assertions) HTTPErrorf(handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool { @@ -517,7 +601,7 @@ func (a *Assertions) HTTPErrorf(handler http.HandlerFunc, method string, url str  // HTTPRedirect asserts that a specified handler returns a redirect status code.  // -//  a.HTTPRedirect(myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}} +//	a.HTTPRedirect(myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}}  //  // Returns whether the assertion was successful (true) or not (false).  func (a *Assertions) HTTPRedirect(handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) bool { @@ -529,7 +613,7 @@ func (a *Assertions) HTTPRedirect(handler http.HandlerFunc, method string, url s  // HTTPRedirectf asserts that a specified handler returns a redirect status code.  // -//  a.HTTPRedirectf(myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}} +//	a.HTTPRedirectf(myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}}  //  // Returns whether the assertion was successful (true) or not (false).  func (a *Assertions) HTTPRedirectf(handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool { @@ -541,7 +625,7 @@ func (a *Assertions) HTTPRedirectf(handler http.HandlerFunc, method string, url  // HTTPStatusCode asserts that a specified handler returns a specified status code.  // -//  a.HTTPStatusCode(myHandler, "GET", "/notImplemented", nil, 501) +//	a.HTTPStatusCode(myHandler, "GET", "/notImplemented", nil, 501)  //  // Returns whether the assertion was successful (true) or not (false).  func (a *Assertions) HTTPStatusCode(handler http.HandlerFunc, method string, url string, values url.Values, statuscode int, msgAndArgs ...interface{}) bool { @@ -553,7 +637,7 @@ func (a *Assertions) HTTPStatusCode(handler http.HandlerFunc, method string, url  // HTTPStatusCodef asserts that a specified handler returns a specified status code.  // -//  a.HTTPStatusCodef(myHandler, "GET", "/notImplemented", nil, 501, "error message %s", "formatted") +//	a.HTTPStatusCodef(myHandler, "GET", "/notImplemented", nil, 501, "error message %s", "formatted")  //  // Returns whether the assertion was successful (true) or not (false).  func (a *Assertions) HTTPStatusCodef(handler http.HandlerFunc, method string, url string, values url.Values, statuscode int, msg string, args ...interface{}) bool { @@ -565,7 +649,7 @@ func (a *Assertions) HTTPStatusCodef(handler http.HandlerFunc, method string, ur  // HTTPSuccess asserts that a specified handler returns a success status code.  // -//  a.HTTPSuccess(myHandler, "POST", "http://www.google.com", nil) +//	a.HTTPSuccess(myHandler, "POST", "http://www.google.com", nil)  //  // Returns whether the assertion was successful (true) or not (false).  func (a *Assertions) HTTPSuccess(handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) bool { @@ -577,7 +661,7 @@ func (a *Assertions) HTTPSuccess(handler http.HandlerFunc, method string, url st  // HTTPSuccessf asserts that a specified handler returns a success status code.  // -//  a.HTTPSuccessf(myHandler, "POST", "http://www.google.com", nil, "error message %s", "formatted") +//	a.HTTPSuccessf(myHandler, "POST", "http://www.google.com", nil, "error message %s", "formatted")  //  // Returns whether the assertion was successful (true) or not (false).  func (a *Assertions) HTTPSuccessf(handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool { @@ -589,7 +673,7 @@ func (a *Assertions) HTTPSuccessf(handler http.HandlerFunc, method string, url s  // Implements asserts that an object is implemented by the specified interface.  // -//    a.Implements((*MyInterface)(nil), new(MyObject)) +//	a.Implements((*MyInterface)(nil), new(MyObject))  func (a *Assertions) Implements(interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -599,7 +683,7 @@ func (a *Assertions) Implements(interfaceObject interface{}, object interface{},  // Implementsf asserts that an object is implemented by the specified interface.  // -//    a.Implementsf((*MyInterface)(nil), new(MyObject), "error message %s", "formatted") +//	a.Implementsf((*MyInterface)(nil), new(MyObject), "error message %s", "formatted")  func (a *Assertions) Implementsf(interfaceObject interface{}, object interface{}, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -609,7 +693,7 @@ func (a *Assertions) Implementsf(interfaceObject interface{}, object interface{}  // InDelta asserts that the two numerals are within delta of each other.  // -// 	 a.InDelta(math.Pi, 22/7.0, 0.01) +//	a.InDelta(math.Pi, 22/7.0, 0.01)  func (a *Assertions) InDelta(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -651,7 +735,7 @@ func (a *Assertions) InDeltaSlicef(expected interface{}, actual interface{}, del  // InDeltaf asserts that the two numerals are within delta of each other.  // -// 	 a.InDeltaf(math.Pi, 22/7.0, 0.01, "error message %s", "formatted") +//	a.InDeltaf(math.Pi, 22/7.0, 0.01, "error message %s", "formatted")  func (a *Assertions) InDeltaf(expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -693,9 +777,9 @@ func (a *Assertions) InEpsilonf(expected interface{}, actual interface{}, epsilo  // IsDecreasing asserts that the collection is decreasing  // -//    a.IsDecreasing([]int{2, 1, 0}) -//    a.IsDecreasing([]float{2, 1}) -//    a.IsDecreasing([]string{"b", "a"}) +//	a.IsDecreasing([]int{2, 1, 0}) +//	a.IsDecreasing([]float{2, 1}) +//	a.IsDecreasing([]string{"b", "a"})  func (a *Assertions) IsDecreasing(object interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -705,9 +789,9 @@ func (a *Assertions) IsDecreasing(object interface{}, msgAndArgs ...interface{})  // IsDecreasingf asserts that the collection is decreasing  // -//    a.IsDecreasingf([]int{2, 1, 0}, "error message %s", "formatted") -//    a.IsDecreasingf([]float{2, 1}, "error message %s", "formatted") -//    a.IsDecreasingf([]string{"b", "a"}, "error message %s", "formatted") +//	a.IsDecreasingf([]int{2, 1, 0}, "error message %s", "formatted") +//	a.IsDecreasingf([]float{2, 1}, "error message %s", "formatted") +//	a.IsDecreasingf([]string{"b", "a"}, "error message %s", "formatted")  func (a *Assertions) IsDecreasingf(object interface{}, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -717,9 +801,9 @@ func (a *Assertions) IsDecreasingf(object interface{}, msg string, args ...inter  // IsIncreasing asserts that the collection is increasing  // -//    a.IsIncreasing([]int{1, 2, 3}) -//    a.IsIncreasing([]float{1, 2}) -//    a.IsIncreasing([]string{"a", "b"}) +//	a.IsIncreasing([]int{1, 2, 3}) +//	a.IsIncreasing([]float{1, 2}) +//	a.IsIncreasing([]string{"a", "b"})  func (a *Assertions) IsIncreasing(object interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -729,9 +813,9 @@ func (a *Assertions) IsIncreasing(object interface{}, msgAndArgs ...interface{})  // IsIncreasingf asserts that the collection is increasing  // -//    a.IsIncreasingf([]int{1, 2, 3}, "error message %s", "formatted") -//    a.IsIncreasingf([]float{1, 2}, "error message %s", "formatted") -//    a.IsIncreasingf([]string{"a", "b"}, "error message %s", "formatted") +//	a.IsIncreasingf([]int{1, 2, 3}, "error message %s", "formatted") +//	a.IsIncreasingf([]float{1, 2}, "error message %s", "formatted") +//	a.IsIncreasingf([]string{"a", "b"}, "error message %s", "formatted")  func (a *Assertions) IsIncreasingf(object interface{}, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -741,9 +825,9 @@ func (a *Assertions) IsIncreasingf(object interface{}, msg string, args ...inter  // IsNonDecreasing asserts that the collection is not decreasing  // -//    a.IsNonDecreasing([]int{1, 1, 2}) -//    a.IsNonDecreasing([]float{1, 2}) -//    a.IsNonDecreasing([]string{"a", "b"}) +//	a.IsNonDecreasing([]int{1, 1, 2}) +//	a.IsNonDecreasing([]float{1, 2}) +//	a.IsNonDecreasing([]string{"a", "b"})  func (a *Assertions) IsNonDecreasing(object interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -753,9 +837,9 @@ func (a *Assertions) IsNonDecreasing(object interface{}, msgAndArgs ...interface  // IsNonDecreasingf asserts that the collection is not decreasing  // -//    a.IsNonDecreasingf([]int{1, 1, 2}, "error message %s", "formatted") -//    a.IsNonDecreasingf([]float{1, 2}, "error message %s", "formatted") -//    a.IsNonDecreasingf([]string{"a", "b"}, "error message %s", "formatted") +//	a.IsNonDecreasingf([]int{1, 1, 2}, "error message %s", "formatted") +//	a.IsNonDecreasingf([]float{1, 2}, "error message %s", "formatted") +//	a.IsNonDecreasingf([]string{"a", "b"}, "error message %s", "formatted")  func (a *Assertions) IsNonDecreasingf(object interface{}, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -765,9 +849,9 @@ func (a *Assertions) IsNonDecreasingf(object interface{}, msg string, args ...in  // IsNonIncreasing asserts that the collection is not increasing  // -//    a.IsNonIncreasing([]int{2, 1, 1}) -//    a.IsNonIncreasing([]float{2, 1}) -//    a.IsNonIncreasing([]string{"b", "a"}) +//	a.IsNonIncreasing([]int{2, 1, 1}) +//	a.IsNonIncreasing([]float{2, 1}) +//	a.IsNonIncreasing([]string{"b", "a"})  func (a *Assertions) IsNonIncreasing(object interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -777,9 +861,9 @@ func (a *Assertions) IsNonIncreasing(object interface{}, msgAndArgs ...interface  // IsNonIncreasingf asserts that the collection is not increasing  // -//    a.IsNonIncreasingf([]int{2, 1, 1}, "error message %s", "formatted") -//    a.IsNonIncreasingf([]float{2, 1}, "error message %s", "formatted") -//    a.IsNonIncreasingf([]string{"b", "a"}, "error message %s", "formatted") +//	a.IsNonIncreasingf([]int{2, 1, 1}, "error message %s", "formatted") +//	a.IsNonIncreasingf([]float{2, 1}, "error message %s", "formatted") +//	a.IsNonIncreasingf([]string{"b", "a"}, "error message %s", "formatted")  func (a *Assertions) IsNonIncreasingf(object interface{}, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -805,7 +889,7 @@ func (a *Assertions) IsTypef(expectedType interface{}, object interface{}, msg s  // JSONEq asserts that two JSON strings are equivalent.  // -//  a.JSONEq(`{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`) +//	a.JSONEq(`{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`)  func (a *Assertions) JSONEq(expected string, actual string, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -815,7 +899,7 @@ func (a *Assertions) JSONEq(expected string, actual string, msgAndArgs ...interf  // JSONEqf asserts that two JSON strings are equivalent.  // -//  a.JSONEqf(`{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`, "error message %s", "formatted") +//	a.JSONEqf(`{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`, "error message %s", "formatted")  func (a *Assertions) JSONEqf(expected string, actual string, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -826,7 +910,7 @@ func (a *Assertions) JSONEqf(expected string, actual string, msg string, args ..  // Len asserts that the specified object has specific length.  // Len also fails if the object has a type that len() not accept.  // -//    a.Len(mySlice, 3) +//	a.Len(mySlice, 3)  func (a *Assertions) Len(object interface{}, length int, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -837,7 +921,7 @@ func (a *Assertions) Len(object interface{}, length int, msgAndArgs ...interface  // Lenf asserts that the specified object has specific length.  // Lenf also fails if the object has a type that len() not accept.  // -//    a.Lenf(mySlice, 3, "error message %s", "formatted") +//	a.Lenf(mySlice, 3, "error message %s", "formatted")  func (a *Assertions) Lenf(object interface{}, length int, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -847,9 +931,9 @@ func (a *Assertions) Lenf(object interface{}, length int, msg string, args ...in  // Less asserts that the first element is less than the second  // -//    a.Less(1, 2) -//    a.Less(float64(1), float64(2)) -//    a.Less("a", "b") +//	a.Less(1, 2) +//	a.Less(float64(1), float64(2)) +//	a.Less("a", "b")  func (a *Assertions) Less(e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -859,10 +943,10 @@ func (a *Assertions) Less(e1 interface{}, e2 interface{}, msgAndArgs ...interfac  // LessOrEqual asserts that the first element is less than or equal to the second  // -//    a.LessOrEqual(1, 2) -//    a.LessOrEqual(2, 2) -//    a.LessOrEqual("a", "b") -//    a.LessOrEqual("b", "b") +//	a.LessOrEqual(1, 2) +//	a.LessOrEqual(2, 2) +//	a.LessOrEqual("a", "b") +//	a.LessOrEqual("b", "b")  func (a *Assertions) LessOrEqual(e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -872,10 +956,10 @@ func (a *Assertions) LessOrEqual(e1 interface{}, e2 interface{}, msgAndArgs ...i  // LessOrEqualf asserts that the first element is less than or equal to the second  // -//    a.LessOrEqualf(1, 2, "error message %s", "formatted") -//    a.LessOrEqualf(2, 2, "error message %s", "formatted") -//    a.LessOrEqualf("a", "b", "error message %s", "formatted") -//    a.LessOrEqualf("b", "b", "error message %s", "formatted") +//	a.LessOrEqualf(1, 2, "error message %s", "formatted") +//	a.LessOrEqualf(2, 2, "error message %s", "formatted") +//	a.LessOrEqualf("a", "b", "error message %s", "formatted") +//	a.LessOrEqualf("b", "b", "error message %s", "formatted")  func (a *Assertions) LessOrEqualf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -885,9 +969,9 @@ func (a *Assertions) LessOrEqualf(e1 interface{}, e2 interface{}, msg string, ar  // Lessf asserts that the first element is less than the second  // -//    a.Lessf(1, 2, "error message %s", "formatted") -//    a.Lessf(float64(1), float64(2), "error message %s", "formatted") -//    a.Lessf("a", "b", "error message %s", "formatted") +//	a.Lessf(1, 2, "error message %s", "formatted") +//	a.Lessf(float64(1), float64(2), "error message %s", "formatted") +//	a.Lessf("a", "b", "error message %s", "formatted")  func (a *Assertions) Lessf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -897,8 +981,8 @@ func (a *Assertions) Lessf(e1 interface{}, e2 interface{}, msg string, args ...i  // Negative asserts that the specified element is negative  // -//    a.Negative(-1) -//    a.Negative(-1.23) +//	a.Negative(-1) +//	a.Negative(-1.23)  func (a *Assertions) Negative(e interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -908,8 +992,8 @@ func (a *Assertions) Negative(e interface{}, msgAndArgs ...interface{}) bool {  // Negativef asserts that the specified element is negative  // -//    a.Negativef(-1, "error message %s", "formatted") -//    a.Negativef(-1.23, "error message %s", "formatted") +//	a.Negativef(-1, "error message %s", "formatted") +//	a.Negativef(-1.23, "error message %s", "formatted")  func (a *Assertions) Negativef(e interface{}, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -920,7 +1004,7 @@ func (a *Assertions) Negativef(e interface{}, msg string, args ...interface{}) b  // Never asserts that the given condition doesn't satisfy in waitFor time,  // periodically checking the target function each tick.  // -//    a.Never(func() bool { return false; }, time.Second, 10*time.Millisecond) +//	a.Never(func() bool { return false; }, time.Second, 10*time.Millisecond)  func (a *Assertions) Never(condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -931,7 +1015,7 @@ func (a *Assertions) Never(condition func() bool, waitFor time.Duration, tick ti  // Neverf asserts that the given condition doesn't satisfy in waitFor time,  // periodically checking the target function each tick.  // -//    a.Neverf(func() bool { return false; }, time.Second, 10*time.Millisecond, "error message %s", "formatted") +//	a.Neverf(func() bool { return false; }, time.Second, 10*time.Millisecond, "error message %s", "formatted")  func (a *Assertions) Neverf(condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -941,7 +1025,7 @@ func (a *Assertions) Neverf(condition func() bool, waitFor time.Duration, tick t  // Nil asserts that the specified object is nil.  // -//    a.Nil(err) +//	a.Nil(err)  func (a *Assertions) Nil(object interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -951,7 +1035,7 @@ func (a *Assertions) Nil(object interface{}, msgAndArgs ...interface{}) bool {  // Nilf asserts that the specified object is nil.  // -//    a.Nilf(err, "error message %s", "formatted") +//	a.Nilf(err, "error message %s", "formatted")  func (a *Assertions) Nilf(object interface{}, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -979,10 +1063,10 @@ func (a *Assertions) NoDirExistsf(path string, msg string, args ...interface{})  // NoError asserts that a function returned no error (i.e. `nil`).  // -//   actualObj, err := SomeFunction() -//   if a.NoError(err) { -// 	   assert.Equal(t, expectedObj, actualObj) -//   } +//	  actualObj, err := SomeFunction() +//	  if a.NoError(err) { +//		   assert.Equal(t, expectedObj, actualObj) +//	  }  func (a *Assertions) NoError(err error, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -992,10 +1076,10 @@ func (a *Assertions) NoError(err error, msgAndArgs ...interface{}) bool {  // NoErrorf asserts that a function returned no error (i.e. `nil`).  // -//   actualObj, err := SomeFunction() -//   if a.NoErrorf(err, "error message %s", "formatted") { -// 	   assert.Equal(t, expectedObj, actualObj) -//   } +//	  actualObj, err := SomeFunction() +//	  if a.NoErrorf(err, "error message %s", "formatted") { +//		   assert.Equal(t, expectedObj, actualObj) +//	  }  func (a *Assertions) NoErrorf(err error, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1024,9 +1108,9 @@ func (a *Assertions) NoFileExistsf(path string, msg string, args ...interface{})  // NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the  // specified substring or element.  // -//    a.NotContains("Hello World", "Earth") -//    a.NotContains(["Hello", "World"], "Earth") -//    a.NotContains({"Hello": "World"}, "Earth") +//	a.NotContains("Hello World", "Earth") +//	a.NotContains(["Hello", "World"], "Earth") +//	a.NotContains({"Hello": "World"}, "Earth")  func (a *Assertions) NotContains(s interface{}, contains interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1037,9 +1121,9 @@ func (a *Assertions) NotContains(s interface{}, contains interface{}, msgAndArgs  // NotContainsf asserts that the specified string, list(array, slice...) or map does NOT contain the  // specified substring or element.  // -//    a.NotContainsf("Hello World", "Earth", "error message %s", "formatted") -//    a.NotContainsf(["Hello", "World"], "Earth", "error message %s", "formatted") -//    a.NotContainsf({"Hello": "World"}, "Earth", "error message %s", "formatted") +//	a.NotContainsf("Hello World", "Earth", "error message %s", "formatted") +//	a.NotContainsf(["Hello", "World"], "Earth", "error message %s", "formatted") +//	a.NotContainsf({"Hello": "World"}, "Earth", "error message %s", "formatted")  func (a *Assertions) NotContainsf(s interface{}, contains interface{}, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1050,9 +1134,9 @@ func (a *Assertions) NotContainsf(s interface{}, contains interface{}, msg strin  // NotEmpty asserts that the specified object is NOT empty.  I.e. not nil, "", false, 0 or either  // a slice or a channel with len == 0.  // -//  if a.NotEmpty(obj) { -//    assert.Equal(t, "two", obj[1]) -//  } +//	if a.NotEmpty(obj) { +//	  assert.Equal(t, "two", obj[1]) +//	}  func (a *Assertions) NotEmpty(object interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1063,9 +1147,9 @@ func (a *Assertions) NotEmpty(object interface{}, msgAndArgs ...interface{}) boo  // NotEmptyf asserts that the specified object is NOT empty.  I.e. not nil, "", false, 0 or either  // a slice or a channel with len == 0.  // -//  if a.NotEmptyf(obj, "error message %s", "formatted") { -//    assert.Equal(t, "two", obj[1]) -//  } +//	if a.NotEmptyf(obj, "error message %s", "formatted") { +//	  assert.Equal(t, "two", obj[1]) +//	}  func (a *Assertions) NotEmptyf(object interface{}, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1075,7 +1159,7 @@ func (a *Assertions) NotEmptyf(object interface{}, msg string, args ...interface  // NotEqual asserts that the specified values are NOT equal.  // -//    a.NotEqual(obj1, obj2) +//	a.NotEqual(obj1, obj2)  //  // Pointer variable equality is determined based on the equality of the  // referenced values (as opposed to the memory addresses). @@ -1088,7 +1172,7 @@ func (a *Assertions) NotEqual(expected interface{}, actual interface{}, msgAndAr  // NotEqualValues asserts that two objects are not equal even when converted to the same type  // -//    a.NotEqualValues(obj1, obj2) +//	a.NotEqualValues(obj1, obj2)  func (a *Assertions) NotEqualValues(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1098,7 +1182,7 @@ func (a *Assertions) NotEqualValues(expected interface{}, actual interface{}, ms  // NotEqualValuesf asserts that two objects are not equal even when converted to the same type  // -//    a.NotEqualValuesf(obj1, obj2, "error message %s", "formatted") +//	a.NotEqualValuesf(obj1, obj2, "error message %s", "formatted")  func (a *Assertions) NotEqualValuesf(expected interface{}, actual interface{}, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1108,7 +1192,7 @@ func (a *Assertions) NotEqualValuesf(expected interface{}, actual interface{}, m  // NotEqualf asserts that the specified values are NOT equal.  // -//    a.NotEqualf(obj1, obj2, "error message %s", "formatted") +//	a.NotEqualf(obj1, obj2, "error message %s", "formatted")  //  // Pointer variable equality is determined based on the equality of the  // referenced values (as opposed to the memory addresses). @@ -1139,7 +1223,7 @@ func (a *Assertions) NotErrorIsf(err error, target error, msg string, args ...in  // NotNil asserts that the specified object is not nil.  // -//    a.NotNil(err) +//	a.NotNil(err)  func (a *Assertions) NotNil(object interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1149,7 +1233,7 @@ func (a *Assertions) NotNil(object interface{}, msgAndArgs ...interface{}) bool  // NotNilf asserts that the specified object is not nil.  // -//    a.NotNilf(err, "error message %s", "formatted") +//	a.NotNilf(err, "error message %s", "formatted")  func (a *Assertions) NotNilf(object interface{}, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1159,7 +1243,7 @@ func (a *Assertions) NotNilf(object interface{}, msg string, args ...interface{}  // NotPanics asserts that the code inside the specified PanicTestFunc does NOT panic.  // -//   a.NotPanics(func(){ RemainCalm() }) +//	a.NotPanics(func(){ RemainCalm() })  func (a *Assertions) NotPanics(f PanicTestFunc, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1169,7 +1253,7 @@ func (a *Assertions) NotPanics(f PanicTestFunc, msgAndArgs ...interface{}) bool  // NotPanicsf asserts that the code inside the specified PanicTestFunc does NOT panic.  // -//   a.NotPanicsf(func(){ RemainCalm() }, "error message %s", "formatted") +//	a.NotPanicsf(func(){ RemainCalm() }, "error message %s", "formatted")  func (a *Assertions) NotPanicsf(f PanicTestFunc, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1179,8 +1263,8 @@ func (a *Assertions) NotPanicsf(f PanicTestFunc, msg string, args ...interface{}  // NotRegexp asserts that a specified regexp does not match a string.  // -//  a.NotRegexp(regexp.MustCompile("starts"), "it's starting") -//  a.NotRegexp("^start", "it's not starting") +//	a.NotRegexp(regexp.MustCompile("starts"), "it's starting") +//	a.NotRegexp("^start", "it's not starting")  func (a *Assertions) NotRegexp(rx interface{}, str interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1190,8 +1274,8 @@ func (a *Assertions) NotRegexp(rx interface{}, str interface{}, msgAndArgs ...in  // NotRegexpf asserts that a specified regexp does not match a string.  // -//  a.NotRegexpf(regexp.MustCompile("starts"), "it's starting", "error message %s", "formatted") -//  a.NotRegexpf("^start", "it's not starting", "error message %s", "formatted") +//	a.NotRegexpf(regexp.MustCompile("starts"), "it's starting", "error message %s", "formatted") +//	a.NotRegexpf("^start", "it's not starting", "error message %s", "formatted")  func (a *Assertions) NotRegexpf(rx interface{}, str interface{}, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1201,7 +1285,7 @@ func (a *Assertions) NotRegexpf(rx interface{}, str interface{}, msg string, arg  // NotSame asserts that two pointers do not reference the same object.  // -//    a.NotSame(ptr1, ptr2) +//	a.NotSame(ptr1, ptr2)  //  // Both arguments must be pointer variables. Pointer variable sameness is  // determined based on the equality of both type and value. @@ -1214,7 +1298,7 @@ func (a *Assertions) NotSame(expected interface{}, actual interface{}, msgAndArg  // NotSamef asserts that two pointers do not reference the same object.  // -//    a.NotSamef(ptr1, ptr2, "error message %s", "formatted") +//	a.NotSamef(ptr1, ptr2, "error message %s", "formatted")  //  // Both arguments must be pointer variables. Pointer variable sameness is  // determined based on the equality of both type and value. @@ -1228,7 +1312,7 @@ func (a *Assertions) NotSamef(expected interface{}, actual interface{}, msg stri  // NotSubset asserts that the specified list(array, slice...) contains not all  // elements given in the specified subset(array, slice...).  // -//    a.NotSubset([1, 3, 4], [1, 2], "But [1, 3, 4] does not contain [1, 2]") +//	a.NotSubset([1, 3, 4], [1, 2], "But [1, 3, 4] does not contain [1, 2]")  func (a *Assertions) NotSubset(list interface{}, subset interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1239,7 +1323,7 @@ func (a *Assertions) NotSubset(list interface{}, subset interface{}, msgAndArgs  // NotSubsetf asserts that the specified list(array, slice...) contains not all  // elements given in the specified subset(array, slice...).  // -//    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], "But [1, 3, 4] does not contain [1, 2]", "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() @@ -1265,7 +1349,7 @@ func (a *Assertions) NotZerof(i interface{}, msg string, args ...interface{}) bo  // Panics asserts that the code inside the specified PanicTestFunc panics.  // -//   a.Panics(func(){ GoCrazy() }) +//	a.Panics(func(){ GoCrazy() })  func (a *Assertions) Panics(f PanicTestFunc, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1277,7 +1361,7 @@ func (a *Assertions) Panics(f PanicTestFunc, msgAndArgs ...interface{}) bool {  // panics, and that the recovered panic value is an error that satisfies the  // EqualError comparison.  // -//   a.PanicsWithError("crazy error", func(){ GoCrazy() }) +//	a.PanicsWithError("crazy error", func(){ GoCrazy() })  func (a *Assertions) PanicsWithError(errString string, f PanicTestFunc, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1289,7 +1373,7 @@ func (a *Assertions) PanicsWithError(errString string, f PanicTestFunc, msgAndAr  // panics, and that the recovered panic value is an error that satisfies the  // EqualError comparison.  // -//   a.PanicsWithErrorf("crazy error", func(){ GoCrazy() }, "error message %s", "formatted") +//	a.PanicsWithErrorf("crazy error", func(){ GoCrazy() }, "error message %s", "formatted")  func (a *Assertions) PanicsWithErrorf(errString string, f PanicTestFunc, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1300,7 +1384,7 @@ func (a *Assertions) PanicsWithErrorf(errString string, f PanicTestFunc, msg str  // PanicsWithValue asserts that the code inside the specified PanicTestFunc panics, and that  // the recovered panic value equals the expected panic value.  // -//   a.PanicsWithValue("crazy error", func(){ GoCrazy() }) +//	a.PanicsWithValue("crazy error", func(){ GoCrazy() })  func (a *Assertions) PanicsWithValue(expected interface{}, f PanicTestFunc, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1311,7 +1395,7 @@ func (a *Assertions) PanicsWithValue(expected interface{}, f PanicTestFunc, msgA  // PanicsWithValuef asserts that the code inside the specified PanicTestFunc panics, and that  // the recovered panic value equals the expected panic value.  // -//   a.PanicsWithValuef("crazy error", func(){ GoCrazy() }, "error message %s", "formatted") +//	a.PanicsWithValuef("crazy error", func(){ GoCrazy() }, "error message %s", "formatted")  func (a *Assertions) PanicsWithValuef(expected interface{}, f PanicTestFunc, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1321,7 +1405,7 @@ func (a *Assertions) PanicsWithValuef(expected interface{}, f PanicTestFunc, msg  // Panicsf asserts that the code inside the specified PanicTestFunc panics.  // -//   a.Panicsf(func(){ GoCrazy() }, "error message %s", "formatted") +//	a.Panicsf(func(){ GoCrazy() }, "error message %s", "formatted")  func (a *Assertions) Panicsf(f PanicTestFunc, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1331,8 +1415,8 @@ func (a *Assertions) Panicsf(f PanicTestFunc, msg string, args ...interface{}) b  // Positive asserts that the specified element is positive  // -//    a.Positive(1) -//    a.Positive(1.23) +//	a.Positive(1) +//	a.Positive(1.23)  func (a *Assertions) Positive(e interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1342,8 +1426,8 @@ func (a *Assertions) Positive(e interface{}, msgAndArgs ...interface{}) bool {  // Positivef asserts that the specified element is positive  // -//    a.Positivef(1, "error message %s", "formatted") -//    a.Positivef(1.23, "error message %s", "formatted") +//	a.Positivef(1, "error message %s", "formatted") +//	a.Positivef(1.23, "error message %s", "formatted")  func (a *Assertions) Positivef(e interface{}, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1353,8 +1437,8 @@ func (a *Assertions) Positivef(e interface{}, msg string, args ...interface{}) b  // Regexp asserts that a specified regexp matches a string.  // -//  a.Regexp(regexp.MustCompile("start"), "it's starting") -//  a.Regexp("start...$", "it's not starting") +//	a.Regexp(regexp.MustCompile("start"), "it's starting") +//	a.Regexp("start...$", "it's not starting")  func (a *Assertions) Regexp(rx interface{}, str interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1364,8 +1448,8 @@ func (a *Assertions) Regexp(rx interface{}, str interface{}, msgAndArgs ...inter  // Regexpf asserts that a specified regexp matches a string.  // -//  a.Regexpf(regexp.MustCompile("start"), "it's starting", "error message %s", "formatted") -//  a.Regexpf("start...$", "it's not starting", "error message %s", "formatted") +//	a.Regexpf(regexp.MustCompile("start"), "it's starting", "error message %s", "formatted") +//	a.Regexpf("start...$", "it's not starting", "error message %s", "formatted")  func (a *Assertions) Regexpf(rx interface{}, str interface{}, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1375,7 +1459,7 @@ func (a *Assertions) Regexpf(rx interface{}, str interface{}, msg string, args .  // Same asserts that two pointers reference the same object.  // -//    a.Same(ptr1, ptr2) +//	a.Same(ptr1, ptr2)  //  // Both arguments must be pointer variables. Pointer variable sameness is  // determined based on the equality of both type and value. @@ -1388,7 +1472,7 @@ func (a *Assertions) Same(expected interface{}, actual interface{}, msgAndArgs .  // Samef asserts that two pointers reference the same object.  // -//    a.Samef(ptr1, ptr2, "error message %s", "formatted") +//	a.Samef(ptr1, ptr2, "error message %s", "formatted")  //  // Both arguments must be pointer variables. Pointer variable sameness is  // determined based on the equality of both type and value. @@ -1402,7 +1486,7 @@ func (a *Assertions) Samef(expected interface{}, actual interface{}, msg string,  // Subset asserts that the specified list(array, slice...) contains all  // elements given in the specified subset(array, slice...).  // -//    a.Subset([1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]") +//	a.Subset([1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]")  func (a *Assertions) Subset(list interface{}, subset interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1413,7 +1497,7 @@ func (a *Assertions) Subset(list interface{}, subset interface{}, msgAndArgs ...  // Subsetf asserts that the specified list(array, slice...) contains all  // elements given in the specified subset(array, slice...).  // -//    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], "But [1, 2, 3] does contain [1, 2]", "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() @@ -1423,7 +1507,7 @@ func (a *Assertions) Subsetf(list interface{}, subset interface{}, msg string, a  // True asserts that the specified value is true.  // -//    a.True(myBool) +//	a.True(myBool)  func (a *Assertions) True(value bool, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1433,7 +1517,7 @@ func (a *Assertions) True(value bool, msgAndArgs ...interface{}) bool {  // Truef asserts that the specified value is true.  // -//    a.Truef(myBool, "error message %s", "formatted") +//	a.Truef(myBool, "error message %s", "formatted")  func (a *Assertions) Truef(value bool, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1443,7 +1527,7 @@ func (a *Assertions) Truef(value bool, msg string, args ...interface{}) bool {  // WithinDuration asserts that the two times are within duration delta of each other.  // -//   a.WithinDuration(time.Now(), time.Now(), 10*time.Second) +//	a.WithinDuration(time.Now(), time.Now(), 10*time.Second)  func (a *Assertions) WithinDuration(expected time.Time, actual time.Time, delta time.Duration, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1453,7 +1537,7 @@ func (a *Assertions) WithinDuration(expected time.Time, actual time.Time, delta  // WithinDurationf asserts that the two times are within duration delta of each other.  // -//   a.WithinDurationf(time.Now(), time.Now(), 10*time.Second, "error message %s", "formatted") +//	a.WithinDurationf(time.Now(), time.Now(), 10*time.Second, "error message %s", "formatted")  func (a *Assertions) WithinDurationf(expected time.Time, actual time.Time, delta time.Duration, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1463,7 +1547,7 @@ func (a *Assertions) WithinDurationf(expected time.Time, actual time.Time, delta  // WithinRange asserts that a time is within a time range (inclusive).  // -//   a.WithinRange(time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second)) +//	a.WithinRange(time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second))  func (a *Assertions) WithinRange(actual time.Time, start time.Time, end time.Time, msgAndArgs ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1473,7 +1557,7 @@ func (a *Assertions) WithinRange(actual time.Time, start time.Time, end time.Tim  // WithinRangef asserts that a time is within a time range (inclusive).  // -//   a.WithinRangef(time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second), "error message %s", "formatted") +//	a.WithinRangef(time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second), "error message %s", "formatted")  func (a *Assertions) WithinRangef(actual time.Time, start time.Time, end time.Time, msg string, args ...interface{}) bool {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() diff --git a/vendor/github.com/stretchr/testify/assert/assertion_order.go b/vendor/github.com/stretchr/testify/assert/assertion_order.go index 759448783..00df62a05 100644 --- a/vendor/github.com/stretchr/testify/assert/assertion_order.go +++ b/vendor/github.com/stretchr/testify/assert/assertion_order.go @@ -46,36 +46,36 @@ func isOrdered(t TestingT, object interface{}, allowedComparesResults []CompareT  // IsIncreasing asserts that the collection is increasing  // -//    assert.IsIncreasing(t, []int{1, 2, 3}) -//    assert.IsIncreasing(t, []float{1, 2}) -//    assert.IsIncreasing(t, []string{"a", "b"}) +//	assert.IsIncreasing(t, []int{1, 2, 3}) +//	assert.IsIncreasing(t, []float{1, 2}) +//	assert.IsIncreasing(t, []string{"a", "b"})  func IsIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {  	return isOrdered(t, object, []CompareType{compareLess}, "\"%v\" is not less than \"%v\"", msgAndArgs...)  }  // IsNonIncreasing asserts that the collection is not increasing  // -//    assert.IsNonIncreasing(t, []int{2, 1, 1}) -//    assert.IsNonIncreasing(t, []float{2, 1}) -//    assert.IsNonIncreasing(t, []string{"b", "a"}) +//	assert.IsNonIncreasing(t, []int{2, 1, 1}) +//	assert.IsNonIncreasing(t, []float{2, 1}) +//	assert.IsNonIncreasing(t, []string{"b", "a"})  func IsNonIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {  	return isOrdered(t, object, []CompareType{compareEqual, compareGreater}, "\"%v\" is not greater than or equal to \"%v\"", msgAndArgs...)  }  // IsDecreasing asserts that the collection is decreasing  // -//    assert.IsDecreasing(t, []int{2, 1, 0}) -//    assert.IsDecreasing(t, []float{2, 1}) -//    assert.IsDecreasing(t, []string{"b", "a"}) +//	assert.IsDecreasing(t, []int{2, 1, 0}) +//	assert.IsDecreasing(t, []float{2, 1}) +//	assert.IsDecreasing(t, []string{"b", "a"})  func IsDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {  	return isOrdered(t, object, []CompareType{compareGreater}, "\"%v\" is not greater than \"%v\"", msgAndArgs...)  }  // IsNonDecreasing asserts that the collection is not decreasing  // -//    assert.IsNonDecreasing(t, []int{1, 1, 2}) -//    assert.IsNonDecreasing(t, []float{1, 2}) -//    assert.IsNonDecreasing(t, []string{"a", "b"}) +//	assert.IsNonDecreasing(t, []int{1, 1, 2}) +//	assert.IsNonDecreasing(t, []float{1, 2}) +//	assert.IsNonDecreasing(t, []string{"a", "b"})  func IsNonDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {  	return isOrdered(t, object, []CompareType{compareLess, compareEqual}, "\"%v\" is not less than or equal to \"%v\"", msgAndArgs...)  } diff --git a/vendor/github.com/stretchr/testify/assert/assertions.go b/vendor/github.com/stretchr/testify/assert/assertions.go index 2924cf3a1..a55d1bba9 100644 --- a/vendor/github.com/stretchr/testify/assert/assertions.go +++ b/vendor/github.com/stretchr/testify/assert/assertions.go @@ -75,6 +75,77 @@ func ObjectsAreEqual(expected, actual interface{}) bool {  	return bytes.Equal(exp, act)  } +// copyExportedFields iterates downward through nested data structures and creates a copy +// that only contains the exported struct fields. +func copyExportedFields(expected interface{}) interface{} { +	if isNil(expected) { +		return expected +	} + +	expectedType := reflect.TypeOf(expected) +	expectedKind := expectedType.Kind() +	expectedValue := reflect.ValueOf(expected) + +	switch expectedKind { +	case reflect.Struct: +		result := reflect.New(expectedType).Elem() +		for i := 0; i < expectedType.NumField(); i++ { +			field := expectedType.Field(i) +			isExported := field.IsExported() +			if isExported { +				fieldValue := expectedValue.Field(i) +				if isNil(fieldValue) || isNil(fieldValue.Interface()) { +					continue +				} +				newValue := copyExportedFields(fieldValue.Interface()) +				result.Field(i).Set(reflect.ValueOf(newValue)) +			} +		} +		return result.Interface() + +	case reflect.Ptr: +		result := reflect.New(expectedType.Elem()) +		unexportedRemoved := copyExportedFields(expectedValue.Elem().Interface()) +		result.Elem().Set(reflect.ValueOf(unexportedRemoved)) +		return result.Interface() + +	case reflect.Array, reflect.Slice: +		result := reflect.MakeSlice(expectedType, expectedValue.Len(), expectedValue.Len()) +		for i := 0; i < expectedValue.Len(); i++ { +			index := expectedValue.Index(i) +			if isNil(index) { +				continue +			} +			unexportedRemoved := copyExportedFields(index.Interface()) +			result.Index(i).Set(reflect.ValueOf(unexportedRemoved)) +		} +		return result.Interface() + +	case reflect.Map: +		result := reflect.MakeMap(expectedType) +		for _, k := range expectedValue.MapKeys() { +			index := expectedValue.MapIndex(k) +			unexportedRemoved := copyExportedFields(index.Interface()) +			result.SetMapIndex(k, reflect.ValueOf(unexportedRemoved)) +		} +		return result.Interface() + +	default: +		return expected +	} +} + +// ObjectsExportedFieldsAreEqual determines if the exported (public) fields of two objects are +// considered equal. This comparison of only exported fields is applied recursively to nested data +// structures. +// +// This function does no assertion of any kind. +func ObjectsExportedFieldsAreEqual(expected, actual interface{}) bool { +	expectedCleaned := copyExportedFields(expected) +	actualCleaned := copyExportedFields(actual) +	return ObjectsAreEqualValues(expectedCleaned, actualCleaned) +} +  // ObjectsAreEqualValues gets whether two objects are equal, or if their  // values are equal.  func ObjectsAreEqualValues(expected, actual interface{}) bool { @@ -271,7 +342,7 @@ type labeledContent struct {  // labeledOutput returns a string consisting of the provided labeledContent. Each labeled output is appended in the following manner:  // -//   \t{{label}}:{{align_spaces}}\t{{content}}\n +//	\t{{label}}:{{align_spaces}}\t{{content}}\n  //  // The initial carriage return is required to undo/erase any padding added by testing.T.Errorf. The "\t{{label}}:" is for the label.  // If a label is shorter than the longest label provided, padding spaces are added to make all the labels match in length. Once this @@ -294,7 +365,7 @@ func labeledOutput(content ...labeledContent) string {  // Implements asserts that an object is implemented by the specified interface.  // -//    assert.Implements(t, (*MyInterface)(nil), new(MyObject)) +//	assert.Implements(t, (*MyInterface)(nil), new(MyObject))  func Implements(t TestingT, interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -326,7 +397,7 @@ func IsType(t TestingT, expectedType interface{}, object interface{}, msgAndArgs  // Equal asserts that two objects are equal.  // -//    assert.Equal(t, 123, 123) +//	assert.Equal(t, 123, 123)  //  // Pointer variable equality is determined based on the equality of the  // referenced values (as opposed to the memory addresses). Function equality @@ -367,7 +438,7 @@ func validateEqualArgs(expected, actual interface{}) error {  // Same asserts that two pointers reference the same object.  // -//    assert.Same(t, ptr1, ptr2) +//	assert.Same(t, ptr1, ptr2)  //  // Both arguments must be pointer variables. Pointer variable sameness is  // determined based on the equality of both type and value. @@ -387,7 +458,7 @@ func Same(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) b  // NotSame asserts that two pointers do not reference the same object.  // -//    assert.NotSame(t, ptr1, ptr2) +//	assert.NotSame(t, ptr1, ptr2)  //  // Both arguments must be pointer variables. Pointer variable sameness is  // determined based on the equality of both type and value. @@ -455,7 +526,7 @@ func truncatingFormat(data interface{}) string {  // EqualValues asserts that two objects are equal or convertable to the same types  // and equal.  // -//    assert.EqualValues(t, uint32(123), int32(123)) +//	assert.EqualValues(t, uint32(123), int32(123))  func EqualValues(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -473,9 +544,53 @@ func EqualValues(t TestingT, expected, actual interface{}, msgAndArgs ...interfa  } +// EqualExportedValues asserts that the types of two objects are equal and their public +// fields are also equal. This is useful for comparing structs that have private fields +// that could potentially differ. +// +//	 type S struct { +//		Exported     	int +//		notExported   	int +//	 } +//	 assert.EqualExportedValues(t, S{1, 2}, S{1, 3}) => true +//	 assert.EqualExportedValues(t, S{1, 2}, S{2, 3}) => false +func EqualExportedValues(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool { +	if h, ok := t.(tHelper); ok { +		h.Helper() +	} + +	aType := reflect.TypeOf(expected) +	bType := reflect.TypeOf(actual) + +	if aType != bType { +		return Fail(t, fmt.Sprintf("Types expected to match exactly\n\t%v != %v", aType, bType), msgAndArgs...) +	} + +	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...) +	} + +	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...) +	} + +	expected = copyExportedFields(expected) +	actual = copyExportedFields(actual) + +	if !ObjectsAreEqualValues(expected, actual) { +		diff := diff(expected, actual) +		expected, actual = formatUnequalValues(expected, actual) +		return Fail(t, fmt.Sprintf("Not equal (comparing only exported fields): \n"+ +			"expected: %s\n"+ +			"actual  : %s%s", expected, actual, diff), msgAndArgs...) +	} + +	return true +} +  // Exactly asserts that two objects are equal in value and type.  // -//    assert.Exactly(t, int32(123), int64(123)) +//	assert.Exactly(t, int32(123), int64(123))  func Exactly(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -494,7 +609,7 @@ func Exactly(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}  // NotNil asserts that the specified object is not nil.  // -//    assert.NotNil(t, err) +//	assert.NotNil(t, err)  func NotNil(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {  	if !isNil(object) {  		return true @@ -540,7 +655,7 @@ func isNil(object interface{}) bool {  // Nil asserts that the specified object is nil.  // -//    assert.Nil(t, err) +//	assert.Nil(t, err)  func Nil(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {  	if isNil(object) {  		return true @@ -583,7 +698,7 @@ func isEmpty(object interface{}) bool {  // Empty asserts that the specified object is empty.  I.e. nil, "", false, 0 or either  // a slice or a channel with len == 0.  // -//  assert.Empty(t, obj) +//	assert.Empty(t, obj)  func Empty(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {  	pass := isEmpty(object)  	if !pass { @@ -600,9 +715,9 @@ func Empty(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {  // NotEmpty asserts that the specified object is NOT empty.  I.e. not nil, "", false, 0 or either  // a slice or a channel with len == 0.  // -//  if assert.NotEmpty(t, obj) { -//    assert.Equal(t, "two", obj[1]) -//  } +//	if assert.NotEmpty(t, obj) { +//	  assert.Equal(t, "two", obj[1]) +//	}  func NotEmpty(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {  	pass := !isEmpty(object)  	if !pass { @@ -631,7 +746,7 @@ func getLen(x interface{}) (ok bool, length int) {  // Len asserts that the specified object has specific length.  // Len also fails if the object has a type that len() not accept.  // -//    assert.Len(t, mySlice, 3) +//	assert.Len(t, mySlice, 3)  func Len(t TestingT, object interface{}, length int, msgAndArgs ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -649,7 +764,7 @@ func Len(t TestingT, object interface{}, length int, msgAndArgs ...interface{})  // True asserts that the specified value is true.  // -//    assert.True(t, myBool) +//	assert.True(t, myBool)  func True(t TestingT, value bool, msgAndArgs ...interface{}) bool {  	if !value {  		if h, ok := t.(tHelper); ok { @@ -664,7 +779,7 @@ func True(t TestingT, value bool, msgAndArgs ...interface{}) bool {  // False asserts that the specified value is false.  // -//    assert.False(t, myBool) +//	assert.False(t, myBool)  func False(t TestingT, value bool, msgAndArgs ...interface{}) bool {  	if value {  		if h, ok := t.(tHelper); ok { @@ -679,7 +794,7 @@ func False(t TestingT, value bool, msgAndArgs ...interface{}) bool {  // NotEqual asserts that the specified values are NOT equal.  // -//    assert.NotEqual(t, obj1, obj2) +//	assert.NotEqual(t, obj1, obj2)  //  // Pointer variable equality is determined based on the equality of the  // referenced values (as opposed to the memory addresses). @@ -702,7 +817,7 @@ func NotEqual(t TestingT, expected, actual interface{}, msgAndArgs ...interface{  // NotEqualValues asserts that two objects are not equal even when converted to the same type  // -//    assert.NotEqualValues(t, obj1, obj2) +//	assert.NotEqualValues(t, obj1, obj2)  func NotEqualValues(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -761,9 +876,9 @@ func containsElement(list interface{}, element interface{}) (ok, found bool) {  // Contains asserts that the specified string, list(array, slice...) or map contains the  // specified substring or element.  // -//    assert.Contains(t, "Hello World", "World") -//    assert.Contains(t, ["Hello", "World"], "World") -//    assert.Contains(t, {"Hello": "World"}, "Hello") +//	assert.Contains(t, "Hello World", "World") +//	assert.Contains(t, ["Hello", "World"], "World") +//	assert.Contains(t, {"Hello": "World"}, "Hello")  func Contains(t TestingT, s, contains interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -784,9 +899,9 @@ func Contains(t TestingT, s, contains interface{}, msgAndArgs ...interface{}) bo  // NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the  // specified substring or element.  // -//    assert.NotContains(t, "Hello World", "Earth") -//    assert.NotContains(t, ["Hello", "World"], "Earth") -//    assert.NotContains(t, {"Hello": "World"}, "Earth") +//	assert.NotContains(t, "Hello World", "Earth") +//	assert.NotContains(t, ["Hello", "World"], "Earth") +//	assert.NotContains(t, {"Hello": "World"}, "Earth")  func NotContains(t TestingT, s, contains interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -794,10 +909,10 @@ func NotContains(t TestingT, s, contains interface{}, msgAndArgs ...interface{})  	ok, found := containsElement(s, contains)  	if !ok { -		return Fail(t, fmt.Sprintf("\"%s\" could not be applied builtin len()", s), msgAndArgs...) +		return Fail(t, fmt.Sprintf("%#v could not be applied builtin len()", s), msgAndArgs...)  	}  	if found { -		return Fail(t, fmt.Sprintf("\"%s\" should not contain \"%s\"", s, contains), msgAndArgs...) +		return Fail(t, fmt.Sprintf("%#v should not contain %#v", s, contains), msgAndArgs...)  	}  	return true @@ -807,7 +922,7 @@ 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...).  // -//    assert.Subset(t, [1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]") +//	assert.Subset(t, [1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]")  func Subset(t TestingT, list, subset interface{}, msgAndArgs ...interface{}) (ok bool) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -863,7 +978,7 @@ func Subset(t TestingT, list, subset interface{}, msgAndArgs ...interface{}) (ok  // NotSubset asserts that the specified list(array, slice...) contains not all  // elements given in the specified subset(array, slice...).  // -//    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], "But [1, 3, 4] does not contain [1, 2]")  func NotSubset(t TestingT, list, subset interface{}, msgAndArgs ...interface{}) (ok bool) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1048,7 +1163,7 @@ func didPanic(f PanicTestFunc) (didPanic bool, message interface{}, stack string  // Panics asserts that the code inside the specified PanicTestFunc panics.  // -//   assert.Panics(t, func(){ GoCrazy() }) +//	assert.Panics(t, func(){ GoCrazy() })  func Panics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1064,7 +1179,7 @@ func Panics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool {  // PanicsWithValue asserts that the code inside the specified PanicTestFunc panics, and that  // the recovered panic value equals the expected panic value.  // -//   assert.PanicsWithValue(t, "crazy error", func(){ GoCrazy() }) +//	assert.PanicsWithValue(t, "crazy error", func(){ GoCrazy() })  func PanicsWithValue(t TestingT, expected interface{}, f PanicTestFunc, msgAndArgs ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1085,7 +1200,7 @@ func PanicsWithValue(t TestingT, expected interface{}, f PanicTestFunc, msgAndAr  // panics, and that the recovered panic value is an error that satisfies the  // EqualError comparison.  // -//   assert.PanicsWithError(t, "crazy error", func(){ GoCrazy() }) +//	assert.PanicsWithError(t, "crazy error", func(){ GoCrazy() })  func PanicsWithError(t TestingT, errString string, f PanicTestFunc, msgAndArgs ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1105,7 +1220,7 @@ func PanicsWithError(t TestingT, errString string, f PanicTestFunc, msgAndArgs .  // NotPanics asserts that the code inside the specified PanicTestFunc does NOT panic.  // -//   assert.NotPanics(t, func(){ RemainCalm() }) +//	assert.NotPanics(t, func(){ RemainCalm() })  func NotPanics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1120,7 +1235,7 @@ func NotPanics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool {  // WithinDuration asserts that the two times are within duration delta of each other.  // -//   assert.WithinDuration(t, time.Now(), time.Now(), 10*time.Second) +//	assert.WithinDuration(t, time.Now(), time.Now(), 10*time.Second)  func WithinDuration(t TestingT, expected, actual time.Time, delta time.Duration, msgAndArgs ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1136,7 +1251,7 @@ func WithinDuration(t TestingT, expected, actual time.Time, delta time.Duration,  // WithinRange asserts that a time is within a time range (inclusive).  // -//   assert.WithinRange(t, time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second)) +//	assert.WithinRange(t, time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second))  func WithinRange(t TestingT, actual, start, end time.Time, msgAndArgs ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1195,7 +1310,7 @@ func toFloat(x interface{}) (float64, bool) {  // InDelta asserts that the two numerals are within delta of each other.  // -// 	 assert.InDelta(t, math.Pi, 22/7.0, 0.01) +//	assert.InDelta(t, math.Pi, 22/7.0, 0.01)  func InDelta(t TestingT, expected, actual interface{}, delta float64, msgAndArgs ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1368,10 +1483,10 @@ func InEpsilonSlice(t TestingT, expected, actual interface{}, epsilon float64, m  // NoError asserts that a function returned no error (i.e. `nil`).  // -//   actualObj, err := SomeFunction() -//   if assert.NoError(t, err) { -//	   assert.Equal(t, expectedObj, actualObj) -//   } +//	  actualObj, err := SomeFunction() +//	  if assert.NoError(t, err) { +//		   assert.Equal(t, expectedObj, actualObj) +//	  }  func NoError(t TestingT, err error, msgAndArgs ...interface{}) bool {  	if err != nil {  		if h, ok := t.(tHelper); ok { @@ -1385,10 +1500,10 @@ func NoError(t TestingT, err error, msgAndArgs ...interface{}) bool {  // Error asserts that a function returned an error (i.e. not `nil`).  // -//   actualObj, err := SomeFunction() -//   if assert.Error(t, err) { -//	   assert.Equal(t, expectedError, err) -//   } +//	  actualObj, err := SomeFunction() +//	  if assert.Error(t, err) { +//		   assert.Equal(t, expectedError, err) +//	  }  func Error(t TestingT, err error, msgAndArgs ...interface{}) bool {  	if err == nil {  		if h, ok := t.(tHelper); ok { @@ -1403,8 +1518,8 @@ func Error(t TestingT, err error, msgAndArgs ...interface{}) bool {  // EqualError asserts that a function returned an error (i.e. not `nil`)  // and that it is equal to the provided error.  // -//   actualObj, err := SomeFunction() -//   assert.EqualError(t, err,  expectedErrorString) +//	actualObj, err := SomeFunction() +//	assert.EqualError(t, err,  expectedErrorString)  func EqualError(t TestingT, theError error, errString string, msgAndArgs ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1426,8 +1541,8 @@ func EqualError(t TestingT, theError error, errString string, msgAndArgs ...inte  // ErrorContains asserts that a function returned an error (i.e. not `nil`)  // and that the error contains the specified substring.  // -//   actualObj, err := SomeFunction() -//   assert.ErrorContains(t, err,  expectedErrorSubString) +//	actualObj, err := SomeFunction() +//	assert.ErrorContains(t, err,  expectedErrorSubString)  func ErrorContains(t TestingT, theError error, contains string, msgAndArgs ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1460,8 +1575,8 @@ func matchRegexp(rx interface{}, str interface{}) bool {  // Regexp asserts that a specified regexp matches a string.  // -//  assert.Regexp(t, regexp.MustCompile("start"), "it's starting") -//  assert.Regexp(t, "start...$", "it's not starting") +//	assert.Regexp(t, regexp.MustCompile("start"), "it's starting") +//	assert.Regexp(t, "start...$", "it's not starting")  func Regexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1478,8 +1593,8 @@ func Regexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface  // NotRegexp asserts that a specified regexp does not match a string.  // -//  assert.NotRegexp(t, regexp.MustCompile("starts"), "it's starting") -//  assert.NotRegexp(t, "^start", "it's not starting") +//	assert.NotRegexp(t, regexp.MustCompile("starts"), "it's starting") +//	assert.NotRegexp(t, "^start", "it's not starting")  func NotRegexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1591,7 +1706,7 @@ func NoDirExists(t TestingT, path string, msgAndArgs ...interface{}) bool {  // JSONEq asserts that two JSON strings are equivalent.  // -//  assert.JSONEq(t, `{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`) +//	assert.JSONEq(t, `{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`)  func JSONEq(t TestingT, expected string, actual string, msgAndArgs ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1714,7 +1829,7 @@ type tHelper interface {  // Eventually asserts that given condition will be met in waitFor time,  // periodically checking target function each tick.  // -//    assert.Eventually(t, func() bool { return true; }, time.Second, 10*time.Millisecond) +//	assert.Eventually(t, func() bool { return true; }, time.Second, 10*time.Millisecond)  func Eventually(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1744,10 +1859,93 @@ func Eventually(t TestingT, condition func() bool, waitFor time.Duration, tick t  	}  } +// CollectT implements the TestingT interface and collects all errors. +type CollectT struct { +	errors []error +} + +// Errorf collects the error. +func (c *CollectT) Errorf(format string, args ...interface{}) { +	c.errors = append(c.errors, fmt.Errorf(format, args...)) +} + +// FailNow panics. +func (c *CollectT) FailNow() { +	panic("Assertion failed") +} + +// Reset clears the collected errors. +func (c *CollectT) Reset() { +	c.errors = nil +} + +// 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) +	} +} + +// EventuallyWithT asserts that given condition will be met in waitFor time, +// periodically checking target function each tick. In contrast to Eventually, +// it supplies a CollectT to the condition function, so that the condition +// function can use the CollectT to call other assertions. +// The condition is considered "met" if no errors are raised in a tick. +// The supplied CollectT collects all errors from one tick (if there are any). +// If the condition is not met before waitFor, the collected errors of +// the last tick are copied to t. +// +//	externalValue := false +//	go func() { +//		time.Sleep(8*time.Second) +//		externalValue = true +//	}() +//	assert.EventuallyWithT(t, func(c *assert.CollectT) { +//		// add assertions as needed; any assertion failure will fail the current tick +//		assert.True(c, externalValue, "expected 'externalValue' to be true") +//	}, 1*time.Second, 10*time.Second, "external state has not changed to 'true'; still false") +func EventuallyWithT(t TestingT, condition func(collect *CollectT), waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) bool { +	if h, ok := t.(tHelper); ok { +		h.Helper() +	} + +	collect := new(CollectT) +	ch := make(chan bool, 1) + +	timer := time.NewTimer(waitFor) +	defer timer.Stop() + +	ticker := time.NewTicker(tick) +	defer ticker.Stop() + +	for tick := ticker.C; ; { +		select { +		case <-timer.C: +			collect.Copy(t) +			return Fail(t, "Condition never satisfied", msgAndArgs...) +		case <-tick: +			tick = nil +			collect.Reset() +			go func() { +				condition(collect) +				ch <- len(collect.errors) == 0 +			}() +		case v := <-ch: +			if v { +				return true +			} +			tick = ticker.C +		} +	} +} +  // Never asserts that the given condition doesn't satisfy in waitFor time,  // periodically checking the target function each tick.  // -//    assert.Never(t, func() bool { return false; }, time.Second, 10*time.Millisecond) +//	assert.Never(t, func() bool { return false; }, time.Second, 10*time.Millisecond)  func Never(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) bool {  	if h, ok := t.(tHelper); ok {  		h.Helper() diff --git a/vendor/github.com/stretchr/testify/assert/doc.go b/vendor/github.com/stretchr/testify/assert/doc.go index c9dccc4d6..4953981d3 100644 --- a/vendor/github.com/stretchr/testify/assert/doc.go +++ b/vendor/github.com/stretchr/testify/assert/doc.go @@ -1,39 +1,40 @@  // Package assert provides a set of comprehensive testing tools for use with the normal Go testing system.  // -// Example Usage +// # Example Usage  //  // The following is a complete example using assert in a standard test function: -//    import ( -//      "testing" -//      "github.com/stretchr/testify/assert" -//    )  // -//    func TestSomething(t *testing.T) { +//	import ( +//	  "testing" +//	  "github.com/stretchr/testify/assert" +//	)  // -//      var a string = "Hello" -//      var b string = "Hello" +//	func TestSomething(t *testing.T) {  // -//      assert.Equal(t, a, b, "The two words should be the same.") +//	  var a string = "Hello" +//	  var b string = "Hello"  // -//    } +//	  assert.Equal(t, a, b, "The two words should be the same.") +// +//	}  //  // if you assert many times, use the format below:  // -//    import ( -//      "testing" -//      "github.com/stretchr/testify/assert" -//    ) +//	import ( +//	  "testing" +//	  "github.com/stretchr/testify/assert" +//	)  // -//    func TestSomething(t *testing.T) { -//      assert := assert.New(t) +//	func TestSomething(t *testing.T) { +//	  assert := assert.New(t)  // -//      var a string = "Hello" -//      var b string = "Hello" +//	  var a string = "Hello" +//	  var b string = "Hello"  // -//      assert.Equal(a, b, "The two words should be the same.") -//    } +//	  assert.Equal(a, b, "The two words should be the same.") +//	}  // -// Assertions +// # Assertions  //  // Assertions allow you to easily write test code, and are global funcs in the `assert` package.  // All assertion functions take, as the first argument, the `*testing.T` object provided by the diff --git a/vendor/github.com/stretchr/testify/assert/http_assertions.go b/vendor/github.com/stretchr/testify/assert/http_assertions.go index 4ed341dd2..d8038c28a 100644 --- a/vendor/github.com/stretchr/testify/assert/http_assertions.go +++ b/vendor/github.com/stretchr/testify/assert/http_assertions.go @@ -23,7 +23,7 @@ func httpCode(handler http.HandlerFunc, method, url string, values url.Values) (  // HTTPSuccess asserts that a specified handler returns a success status code.  // -//  assert.HTTPSuccess(t, myHandler, "POST", "http://www.google.com", nil) +//	assert.HTTPSuccess(t, myHandler, "POST", "http://www.google.com", nil)  //  // Returns whether the assertion was successful (true) or not (false).  func HTTPSuccess(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, msgAndArgs ...interface{}) bool { @@ -45,7 +45,7 @@ func HTTPSuccess(t TestingT, handler http.HandlerFunc, method, url string, value  // HTTPRedirect asserts that a specified handler returns a redirect status code.  // -//  assert.HTTPRedirect(t, myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}} +//	assert.HTTPRedirect(t, myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}}  //  // Returns whether the assertion was successful (true) or not (false).  func HTTPRedirect(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, msgAndArgs ...interface{}) bool { @@ -67,7 +67,7 @@ func HTTPRedirect(t TestingT, handler http.HandlerFunc, method, url string, valu  // HTTPError asserts that a specified handler returns an error status code.  // -//  assert.HTTPError(t, myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}} +//	assert.HTTPError(t, myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}}  //  // Returns whether the assertion was successful (true) or not (false).  func HTTPError(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, msgAndArgs ...interface{}) bool { @@ -89,7 +89,7 @@ func HTTPError(t TestingT, handler http.HandlerFunc, method, url string, values  // HTTPStatusCode asserts that a specified handler returns a specified status code.  // -//  assert.HTTPStatusCode(t, myHandler, "GET", "/notImplemented", nil, 501) +//	assert.HTTPStatusCode(t, myHandler, "GET", "/notImplemented", nil, 501)  //  // Returns whether the assertion was successful (true) or not (false).  func HTTPStatusCode(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, statuscode int, msgAndArgs ...interface{}) bool { @@ -124,7 +124,7 @@ func HTTPBody(handler http.HandlerFunc, method, url string, values url.Values) s  // HTTPBodyContains asserts that a specified handler returns a  // body that contains a string.  // -//  assert.HTTPBodyContains(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky") +//	assert.HTTPBodyContains(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky")  //  // Returns whether the assertion was successful (true) or not (false).  func HTTPBodyContains(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) bool { @@ -144,7 +144,7 @@ func HTTPBodyContains(t TestingT, handler http.HandlerFunc, method, url string,  // HTTPBodyNotContains asserts that a specified handler returns a  // body that does not contain a string.  // -//  assert.HTTPBodyNotContains(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky") +//	assert.HTTPBodyNotContains(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky")  //  // Returns whether the assertion was successful (true) or not (false).  func HTTPBodyNotContains(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) bool { diff --git a/vendor/github.com/stretchr/testify/require/doc.go b/vendor/github.com/stretchr/testify/require/doc.go index 169de3922..968434724 100644 --- a/vendor/github.com/stretchr/testify/require/doc.go +++ b/vendor/github.com/stretchr/testify/require/doc.go @@ -1,24 +1,25 @@  // Package require implements the same assertions as the `assert` package but  // stops test execution when a test fails.  // -// Example Usage +// # Example Usage  //  // The following is a complete example using require in a standard test function: -//    import ( -//      "testing" -//      "github.com/stretchr/testify/require" -//    )  // -//    func TestSomething(t *testing.T) { +//	import ( +//	  "testing" +//	  "github.com/stretchr/testify/require" +//	)  // -//      var a string = "Hello" -//      var b string = "Hello" +//	func TestSomething(t *testing.T) {  // -//      require.Equal(t, a, b, "The two words should be the same.") +//	  var a string = "Hello" +//	  var b string = "Hello"  // -//    } +//	  require.Equal(t, a, b, "The two words should be the same.")  // -// Assertions +//	} +// +// # Assertions  //  // The `require` package have same global functions as in the `assert` package,  // but instead of returning a boolean result they call `t.FailNow()`. diff --git a/vendor/github.com/stretchr/testify/require/require.go b/vendor/github.com/stretchr/testify/require/require.go index 880853f5a..63f852147 100644 --- a/vendor/github.com/stretchr/testify/require/require.go +++ b/vendor/github.com/stretchr/testify/require/require.go @@ -37,9 +37,9 @@ func Conditionf(t TestingT, comp assert.Comparison, msg string, args ...interfac  // Contains asserts that the specified string, list(array, slice...) or map contains the  // specified substring or element.  // -//    assert.Contains(t, "Hello World", "World") -//    assert.Contains(t, ["Hello", "World"], "World") -//    assert.Contains(t, {"Hello": "World"}, "Hello") +//	assert.Contains(t, "Hello World", "World") +//	assert.Contains(t, ["Hello", "World"], "World") +//	assert.Contains(t, {"Hello": "World"}, "Hello")  func Contains(t TestingT, s interface{}, contains interface{}, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -53,9 +53,9 @@ func Contains(t TestingT, s interface{}, contains interface{}, msgAndArgs ...int  // Containsf asserts that the specified string, list(array, slice...) or map contains the  // specified substring or element.  // -//    assert.Containsf(t, "Hello World", "World", "error message %s", "formatted") -//    assert.Containsf(t, ["Hello", "World"], "World", "error message %s", "formatted") -//    assert.Containsf(t, {"Hello": "World"}, "Hello", "error message %s", "formatted") +//	assert.Containsf(t, "Hello World", "World", "error message %s", "formatted") +//	assert.Containsf(t, ["Hello", "World"], "World", "error message %s", "formatted") +//	assert.Containsf(t, {"Hello": "World"}, "Hello", "error message %s", "formatted")  func Containsf(t TestingT, s interface{}, contains interface{}, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -123,7 +123,7 @@ func ElementsMatchf(t TestingT, listA interface{}, listB interface{}, msg string  // Empty asserts that the specified object is empty.  I.e. nil, "", false, 0 or either  // a slice or a channel with len == 0.  // -//  assert.Empty(t, obj) +//	assert.Empty(t, obj)  func Empty(t TestingT, object interface{}, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -137,7 +137,7 @@ func Empty(t TestingT, object interface{}, msgAndArgs ...interface{}) {  // Emptyf asserts that the specified object is empty.  I.e. nil, "", false, 0 or either  // a slice or a channel with len == 0.  // -//  assert.Emptyf(t, obj, "error message %s", "formatted") +//	assert.Emptyf(t, obj, "error message %s", "formatted")  func Emptyf(t TestingT, object interface{}, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -150,7 +150,7 @@ func Emptyf(t TestingT, object interface{}, msg string, args ...interface{}) {  // Equal asserts that two objects are equal.  // -//    assert.Equal(t, 123, 123) +//	assert.Equal(t, 123, 123)  //  // Pointer variable equality is determined based on the equality of the  // referenced values (as opposed to the memory addresses). Function equality @@ -168,8 +168,8 @@ func Equal(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...i  // EqualError asserts that a function returned an error (i.e. not `nil`)  // and that it is equal to the provided error.  // -//   actualObj, err := SomeFunction() -//   assert.EqualError(t, err,  expectedErrorString) +//	actualObj, err := SomeFunction() +//	assert.EqualError(t, err,  expectedErrorString)  func EqualError(t TestingT, theError error, errString string, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -183,8 +183,8 @@ func EqualError(t TestingT, theError error, errString string, msgAndArgs ...inte  // EqualErrorf asserts that a function returned an error (i.e. not `nil`)  // and that it is equal to the provided error.  // -//   actualObj, err := SomeFunction() -//   assert.EqualErrorf(t, err,  expectedErrorString, "error message %s", "formatted") +//	actualObj, err := SomeFunction() +//	assert.EqualErrorf(t, err,  expectedErrorString, "error message %s", "formatted")  func EqualErrorf(t TestingT, theError error, errString string, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -195,10 +195,50 @@ func EqualErrorf(t TestingT, theError error, errString string, msg string, args  	t.FailNow()  } +// EqualExportedValues asserts that the types of two objects are equal and their public +// fields are also equal. This is useful for comparing structs that have private fields +// that could potentially differ. +// +//	 type S struct { +//		Exported     	int +//		notExported   	int +//	 } +//	 assert.EqualExportedValues(t, S{1, 2}, S{1, 3}) => true +//	 assert.EqualExportedValues(t, S{1, 2}, S{2, 3}) => false +func EqualExportedValues(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) { +	if h, ok := t.(tHelper); ok { +		h.Helper() +	} +	if assert.EqualExportedValues(t, expected, actual, msgAndArgs...) { +		return +	} +	t.FailNow() +} + +// EqualExportedValuesf asserts that the types of two objects are equal and their public +// fields are also equal. This is useful for comparing structs that have private fields +// that could potentially differ. +// +//	 type S struct { +//		Exported     	int +//		notExported   	int +//	 } +//	 assert.EqualExportedValuesf(t, S{1, 2}, S{1, 3}, "error message %s", "formatted") => true +//	 assert.EqualExportedValuesf(t, S{1, 2}, S{2, 3}, "error message %s", "formatted") => false +func EqualExportedValuesf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) { +	if h, ok := t.(tHelper); ok { +		h.Helper() +	} +	if assert.EqualExportedValuesf(t, expected, actual, msg, args...) { +		return +	} +	t.FailNow() +} +  // EqualValues asserts that two objects are equal or convertable to the same types  // and equal.  // -//    assert.EqualValues(t, uint32(123), int32(123)) +//	assert.EqualValues(t, uint32(123), int32(123))  func EqualValues(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -212,7 +252,7 @@ func EqualValues(t TestingT, expected interface{}, actual interface{}, msgAndArg  // EqualValuesf asserts that two objects are equal or convertable to the same types  // and equal.  // -//    assert.EqualValuesf(t, uint32(123), int32(123), "error message %s", "formatted") +//	assert.EqualValuesf(t, uint32(123), int32(123), "error message %s", "formatted")  func EqualValuesf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -225,7 +265,7 @@ func EqualValuesf(t TestingT, expected interface{}, actual interface{}, msg stri  // Equalf asserts that two objects are equal.  // -//    assert.Equalf(t, 123, 123, "error message %s", "formatted") +//	assert.Equalf(t, 123, 123, "error message %s", "formatted")  //  // Pointer variable equality is determined based on the equality of the  // referenced values (as opposed to the memory addresses). Function equality @@ -242,10 +282,10 @@ func Equalf(t TestingT, expected interface{}, actual interface{}, msg string, ar  // Error asserts that a function returned an error (i.e. not `nil`).  // -//   actualObj, err := SomeFunction() -//   if assert.Error(t, err) { -// 	   assert.Equal(t, expectedError, err) -//   } +//	  actualObj, err := SomeFunction() +//	  if assert.Error(t, err) { +//		   assert.Equal(t, expectedError, err) +//	  }  func Error(t TestingT, err error, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -283,8 +323,8 @@ func ErrorAsf(t TestingT, err error, target interface{}, msg string, args ...int  // ErrorContains asserts that a function returned an error (i.e. not `nil`)  // and that the error contains the specified substring.  // -//   actualObj, err := SomeFunction() -//   assert.ErrorContains(t, err,  expectedErrorSubString) +//	actualObj, err := SomeFunction() +//	assert.ErrorContains(t, err,  expectedErrorSubString)  func ErrorContains(t TestingT, theError error, contains string, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -298,8 +338,8 @@ func ErrorContains(t TestingT, theError error, contains string, msgAndArgs ...in  // ErrorContainsf asserts that a function returned an error (i.e. not `nil`)  // and that the error contains the specified substring.  // -//   actualObj, err := SomeFunction() -//   assert.ErrorContainsf(t, err,  expectedErrorSubString, "error message %s", "formatted") +//	actualObj, err := SomeFunction() +//	assert.ErrorContainsf(t, err,  expectedErrorSubString, "error message %s", "formatted")  func ErrorContainsf(t TestingT, theError error, contains string, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -336,10 +376,10 @@ func ErrorIsf(t TestingT, err error, target error, msg string, args ...interface  // Errorf asserts that a function returned an error (i.e. not `nil`).  // -//   actualObj, err := SomeFunction() -//   if assert.Errorf(t, err, "error message %s", "formatted") { -// 	   assert.Equal(t, expectedErrorf, err) -//   } +//	  actualObj, err := SomeFunction() +//	  if assert.Errorf(t, err, "error message %s", "formatted") { +//		   assert.Equal(t, expectedErrorf, err) +//	  }  func Errorf(t TestingT, err error, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -353,7 +393,7 @@ func Errorf(t TestingT, err error, msg string, args ...interface{}) {  // Eventually asserts that given condition will be met in waitFor time,  // periodically checking target function each tick.  // -//    assert.Eventually(t, func() bool { return true; }, time.Second, 10*time.Millisecond) +//	assert.Eventually(t, func() bool { return true; }, time.Second, 10*time.Millisecond)  func Eventually(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -364,10 +404,66 @@ func Eventually(t TestingT, condition func() bool, waitFor time.Duration, tick t  	t.FailNow()  } +// EventuallyWithT asserts that given condition will be met in waitFor time, +// periodically checking target function each tick. In contrast to Eventually, +// it supplies a CollectT to the condition function, so that the condition +// function can use the CollectT to call other assertions. +// The condition is considered "met" if no errors are raised in a tick. +// The supplied CollectT collects all errors from one tick (if there are any). +// If the condition is not met before waitFor, the collected errors of +// the last tick are copied to t. +// +//	externalValue := false +//	go func() { +//		time.Sleep(8*time.Second) +//		externalValue = true +//	}() +//	assert.EventuallyWithT(t, func(c *assert.CollectT) { +//		// add assertions as needed; any assertion failure will fail the current tick +//		assert.True(c, externalValue, "expected 'externalValue' to be true") +//	}, 1*time.Second, 10*time.Second, "external state has not changed to 'true'; still false") +func EventuallyWithT(t TestingT, condition func(collect *assert.CollectT), waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) { +	if h, ok := t.(tHelper); ok { +		h.Helper() +	} +	if assert.EventuallyWithT(t, condition, waitFor, tick, msgAndArgs...) { +		return +	} +	t.FailNow() +} + +// EventuallyWithTf asserts that given condition will be met in waitFor time, +// periodically checking target function each tick. In contrast to Eventually, +// it supplies a CollectT to the condition function, so that the condition +// function can use the CollectT to call other assertions. +// The condition is considered "met" if no errors are raised in a tick. +// The supplied CollectT collects all errors from one tick (if there are any). +// If the condition is not met before waitFor, the collected errors of +// the last tick are copied to t. +// +//	externalValue := false +//	go func() { +//		time.Sleep(8*time.Second) +//		externalValue = true +//	}() +//	assert.EventuallyWithTf(t, func(c *assert.CollectT, "error message %s", "formatted") { +//		// add assertions as needed; any assertion failure will fail the current tick +//		assert.True(c, externalValue, "expected 'externalValue' to be true") +//	}, 1*time.Second, 10*time.Second, "external state has not changed to 'true'; still false") +func EventuallyWithTf(t TestingT, condition func(collect *assert.CollectT), waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) { +	if h, ok := t.(tHelper); ok { +		h.Helper() +	} +	if assert.EventuallyWithTf(t, condition, waitFor, tick, msg, args...) { +		return +	} +	t.FailNow() +} +  // Eventuallyf asserts that given condition will be met in waitFor time,  // periodically checking target function each tick.  // -//    assert.Eventuallyf(t, func() bool { return true; }, time.Second, 10*time.Millisecond, "error message %s", "formatted") +//	assert.Eventuallyf(t, func() bool { return true; }, time.Second, 10*time.Millisecond, "error message %s", "formatted")  func Eventuallyf(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -380,7 +476,7 @@ func Eventuallyf(t TestingT, condition func() bool, waitFor time.Duration, tick  // Exactly asserts that two objects are equal in value and type.  // -//    assert.Exactly(t, int32(123), int64(123)) +//	assert.Exactly(t, int32(123), int64(123))  func Exactly(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -393,7 +489,7 @@ func Exactly(t TestingT, expected interface{}, actual interface{}, msgAndArgs ..  // Exactlyf asserts that two objects are equal in value and type.  // -//    assert.Exactlyf(t, int32(123), int64(123), "error message %s", "formatted") +//	assert.Exactlyf(t, int32(123), int64(123), "error message %s", "formatted")  func Exactlyf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -450,7 +546,7 @@ func Failf(t TestingT, failureMessage string, msg string, args ...interface{}) {  // False asserts that the specified value is false.  // -//    assert.False(t, myBool) +//	assert.False(t, myBool)  func False(t TestingT, value bool, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -463,7 +559,7 @@ func False(t TestingT, value bool, msgAndArgs ...interface{}) {  // Falsef asserts that the specified value is false.  // -//    assert.Falsef(t, myBool, "error message %s", "formatted") +//	assert.Falsef(t, myBool, "error message %s", "formatted")  func Falsef(t TestingT, value bool, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -500,9 +596,9 @@ func FileExistsf(t TestingT, path string, msg string, args ...interface{}) {  // Greater asserts that the first element is greater than the second  // -//    assert.Greater(t, 2, 1) -//    assert.Greater(t, float64(2), float64(1)) -//    assert.Greater(t, "b", "a") +//	assert.Greater(t, 2, 1) +//	assert.Greater(t, float64(2), float64(1)) +//	assert.Greater(t, "b", "a")  func Greater(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -515,10 +611,10 @@ func Greater(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface  // GreaterOrEqual asserts that the first element is greater than or equal to the second  // -//    assert.GreaterOrEqual(t, 2, 1) -//    assert.GreaterOrEqual(t, 2, 2) -//    assert.GreaterOrEqual(t, "b", "a") -//    assert.GreaterOrEqual(t, "b", "b") +//	assert.GreaterOrEqual(t, 2, 1) +//	assert.GreaterOrEqual(t, 2, 2) +//	assert.GreaterOrEqual(t, "b", "a") +//	assert.GreaterOrEqual(t, "b", "b")  func GreaterOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -531,10 +627,10 @@ func GreaterOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...in  // GreaterOrEqualf asserts that the first element is greater than or equal to the second  // -//    assert.GreaterOrEqualf(t, 2, 1, "error message %s", "formatted") -//    assert.GreaterOrEqualf(t, 2, 2, "error message %s", "formatted") -//    assert.GreaterOrEqualf(t, "b", "a", "error message %s", "formatted") -//    assert.GreaterOrEqualf(t, "b", "b", "error message %s", "formatted") +//	assert.GreaterOrEqualf(t, 2, 1, "error message %s", "formatted") +//	assert.GreaterOrEqualf(t, 2, 2, "error message %s", "formatted") +//	assert.GreaterOrEqualf(t, "b", "a", "error message %s", "formatted") +//	assert.GreaterOrEqualf(t, "b", "b", "error message %s", "formatted")  func GreaterOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -547,9 +643,9 @@ func GreaterOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string, arg  // Greaterf asserts that the first element is greater than the second  // -//    assert.Greaterf(t, 2, 1, "error message %s", "formatted") -//    assert.Greaterf(t, float64(2), float64(1), "error message %s", "formatted") -//    assert.Greaterf(t, "b", "a", "error message %s", "formatted") +//	assert.Greaterf(t, 2, 1, "error message %s", "formatted") +//	assert.Greaterf(t, float64(2), float64(1), "error message %s", "formatted") +//	assert.Greaterf(t, "b", "a", "error message %s", "formatted")  func Greaterf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -563,7 +659,7 @@ func Greaterf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...in  // HTTPBodyContains asserts that a specified handler returns a  // body that contains a string.  // -//  assert.HTTPBodyContains(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky") +//	assert.HTTPBodyContains(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky")  //  // Returns whether the assertion was successful (true) or not (false).  func HTTPBodyContains(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) { @@ -579,7 +675,7 @@ func HTTPBodyContains(t TestingT, handler http.HandlerFunc, method string, url s  // HTTPBodyContainsf asserts that a specified handler returns a  // body that contains a string.  // -//  assert.HTTPBodyContainsf(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted") +//	assert.HTTPBodyContainsf(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted")  //  // Returns whether the assertion was successful (true) or not (false).  func HTTPBodyContainsf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) { @@ -595,7 +691,7 @@ func HTTPBodyContainsf(t TestingT, handler http.HandlerFunc, method string, url  // HTTPBodyNotContains asserts that a specified handler returns a  // body that does not contain a string.  // -//  assert.HTTPBodyNotContains(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky") +//	assert.HTTPBodyNotContains(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky")  //  // Returns whether the assertion was successful (true) or not (false).  func HTTPBodyNotContains(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) { @@ -611,7 +707,7 @@ func HTTPBodyNotContains(t TestingT, handler http.HandlerFunc, method string, ur  // HTTPBodyNotContainsf asserts that a specified handler returns a  // body that does not contain a string.  // -//  assert.HTTPBodyNotContainsf(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted") +//	assert.HTTPBodyNotContainsf(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted")  //  // Returns whether the assertion was successful (true) or not (false).  func HTTPBodyNotContainsf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) { @@ -626,7 +722,7 @@ func HTTPBodyNotContainsf(t TestingT, handler http.HandlerFunc, method string, u  // HTTPError asserts that a specified handler returns an error status code.  // -//  assert.HTTPError(t, myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}} +//	assert.HTTPError(t, myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}}  //  // Returns whether the assertion was successful (true) or not (false).  func HTTPError(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) { @@ -641,7 +737,7 @@ func HTTPError(t TestingT, handler http.HandlerFunc, method string, url string,  // HTTPErrorf asserts that a specified handler returns an error status code.  // -//  assert.HTTPErrorf(t, myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}} +//	assert.HTTPErrorf(t, myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}}  //  // Returns whether the assertion was successful (true) or not (false).  func HTTPErrorf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) { @@ -656,7 +752,7 @@ func HTTPErrorf(t TestingT, handler http.HandlerFunc, method string, url string,  // HTTPRedirect asserts that a specified handler returns a redirect status code.  // -//  assert.HTTPRedirect(t, myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}} +//	assert.HTTPRedirect(t, myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}}  //  // Returns whether the assertion was successful (true) or not (false).  func HTTPRedirect(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) { @@ -671,7 +767,7 @@ func HTTPRedirect(t TestingT, handler http.HandlerFunc, method string, url strin  // HTTPRedirectf asserts that a specified handler returns a redirect status code.  // -//  assert.HTTPRedirectf(t, myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}} +//	assert.HTTPRedirectf(t, myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}}  //  // Returns whether the assertion was successful (true) or not (false).  func HTTPRedirectf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) { @@ -686,7 +782,7 @@ func HTTPRedirectf(t TestingT, handler http.HandlerFunc, method string, url stri  // HTTPStatusCode asserts that a specified handler returns a specified status code.  // -//  assert.HTTPStatusCode(t, myHandler, "GET", "/notImplemented", nil, 501) +//	assert.HTTPStatusCode(t, myHandler, "GET", "/notImplemented", nil, 501)  //  // Returns whether the assertion was successful (true) or not (false).  func HTTPStatusCode(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, statuscode int, msgAndArgs ...interface{}) { @@ -701,7 +797,7 @@ func HTTPStatusCode(t TestingT, handler http.HandlerFunc, method string, url str  // HTTPStatusCodef asserts that a specified handler returns a specified status code.  // -//  assert.HTTPStatusCodef(t, myHandler, "GET", "/notImplemented", nil, 501, "error message %s", "formatted") +//	assert.HTTPStatusCodef(t, myHandler, "GET", "/notImplemented", nil, 501, "error message %s", "formatted")  //  // Returns whether the assertion was successful (true) or not (false).  func HTTPStatusCodef(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, statuscode int, msg string, args ...interface{}) { @@ -716,7 +812,7 @@ func HTTPStatusCodef(t TestingT, handler http.HandlerFunc, method string, url st  // HTTPSuccess asserts that a specified handler returns a success status code.  // -//  assert.HTTPSuccess(t, myHandler, "POST", "http://www.google.com", nil) +//	assert.HTTPSuccess(t, myHandler, "POST", "http://www.google.com", nil)  //  // Returns whether the assertion was successful (true) or not (false).  func HTTPSuccess(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) { @@ -731,7 +827,7 @@ func HTTPSuccess(t TestingT, handler http.HandlerFunc, method string, url string  // HTTPSuccessf asserts that a specified handler returns a success status code.  // -//  assert.HTTPSuccessf(t, myHandler, "POST", "http://www.google.com", nil, "error message %s", "formatted") +//	assert.HTTPSuccessf(t, myHandler, "POST", "http://www.google.com", nil, "error message %s", "formatted")  //  // Returns whether the assertion was successful (true) or not (false).  func HTTPSuccessf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) { @@ -746,7 +842,7 @@ func HTTPSuccessf(t TestingT, handler http.HandlerFunc, method string, url strin  // Implements asserts that an object is implemented by the specified interface.  // -//    assert.Implements(t, (*MyInterface)(nil), new(MyObject)) +//	assert.Implements(t, (*MyInterface)(nil), new(MyObject))  func Implements(t TestingT, interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -759,7 +855,7 @@ func Implements(t TestingT, interfaceObject interface{}, object interface{}, msg  // Implementsf asserts that an object is implemented by the specified interface.  // -//    assert.Implementsf(t, (*MyInterface)(nil), new(MyObject), "error message %s", "formatted") +//	assert.Implementsf(t, (*MyInterface)(nil), new(MyObject), "error message %s", "formatted")  func Implementsf(t TestingT, interfaceObject interface{}, object interface{}, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -772,7 +868,7 @@ func Implementsf(t TestingT, interfaceObject interface{}, object interface{}, ms  // InDelta asserts that the two numerals are within delta of each other.  // -// 	 assert.InDelta(t, math.Pi, 22/7.0, 0.01) +//	assert.InDelta(t, math.Pi, 22/7.0, 0.01)  func InDelta(t TestingT, expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -829,7 +925,7 @@ func InDeltaSlicef(t TestingT, expected interface{}, actual interface{}, delta f  // InDeltaf asserts that the two numerals are within delta of each other.  // -// 	 assert.InDeltaf(t, math.Pi, 22/7.0, 0.01, "error message %s", "formatted") +//	assert.InDeltaf(t, math.Pi, 22/7.0, 0.01, "error message %s", "formatted")  func InDeltaf(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -886,9 +982,9 @@ func InEpsilonf(t TestingT, expected interface{}, actual interface{}, epsilon fl  // IsDecreasing asserts that the collection is decreasing  // -//    assert.IsDecreasing(t, []int{2, 1, 0}) -//    assert.IsDecreasing(t, []float{2, 1}) -//    assert.IsDecreasing(t, []string{"b", "a"}) +//	assert.IsDecreasing(t, []int{2, 1, 0}) +//	assert.IsDecreasing(t, []float{2, 1}) +//	assert.IsDecreasing(t, []string{"b", "a"})  func IsDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -901,9 +997,9 @@ func IsDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) {  // IsDecreasingf asserts that the collection is decreasing  // -//    assert.IsDecreasingf(t, []int{2, 1, 0}, "error message %s", "formatted") -//    assert.IsDecreasingf(t, []float{2, 1}, "error message %s", "formatted") -//    assert.IsDecreasingf(t, []string{"b", "a"}, "error message %s", "formatted") +//	assert.IsDecreasingf(t, []int{2, 1, 0}, "error message %s", "formatted") +//	assert.IsDecreasingf(t, []float{2, 1}, "error message %s", "formatted") +//	assert.IsDecreasingf(t, []string{"b", "a"}, "error message %s", "formatted")  func IsDecreasingf(t TestingT, object interface{}, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -916,9 +1012,9 @@ func IsDecreasingf(t TestingT, object interface{}, msg string, args ...interface  // IsIncreasing asserts that the collection is increasing  // -//    assert.IsIncreasing(t, []int{1, 2, 3}) -//    assert.IsIncreasing(t, []float{1, 2}) -//    assert.IsIncreasing(t, []string{"a", "b"}) +//	assert.IsIncreasing(t, []int{1, 2, 3}) +//	assert.IsIncreasing(t, []float{1, 2}) +//	assert.IsIncreasing(t, []string{"a", "b"})  func IsIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -931,9 +1027,9 @@ func IsIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) {  // IsIncreasingf asserts that the collection is increasing  // -//    assert.IsIncreasingf(t, []int{1, 2, 3}, "error message %s", "formatted") -//    assert.IsIncreasingf(t, []float{1, 2}, "error message %s", "formatted") -//    assert.IsIncreasingf(t, []string{"a", "b"}, "error message %s", "formatted") +//	assert.IsIncreasingf(t, []int{1, 2, 3}, "error message %s", "formatted") +//	assert.IsIncreasingf(t, []float{1, 2}, "error message %s", "formatted") +//	assert.IsIncreasingf(t, []string{"a", "b"}, "error message %s", "formatted")  func IsIncreasingf(t TestingT, object interface{}, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -946,9 +1042,9 @@ func IsIncreasingf(t TestingT, object interface{}, msg string, args ...interface  // IsNonDecreasing asserts that the collection is not decreasing  // -//    assert.IsNonDecreasing(t, []int{1, 1, 2}) -//    assert.IsNonDecreasing(t, []float{1, 2}) -//    assert.IsNonDecreasing(t, []string{"a", "b"}) +//	assert.IsNonDecreasing(t, []int{1, 1, 2}) +//	assert.IsNonDecreasing(t, []float{1, 2}) +//	assert.IsNonDecreasing(t, []string{"a", "b"})  func IsNonDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -961,9 +1057,9 @@ func IsNonDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{})  // IsNonDecreasingf asserts that the collection is not decreasing  // -//    assert.IsNonDecreasingf(t, []int{1, 1, 2}, "error message %s", "formatted") -//    assert.IsNonDecreasingf(t, []float{1, 2}, "error message %s", "formatted") -//    assert.IsNonDecreasingf(t, []string{"a", "b"}, "error message %s", "formatted") +//	assert.IsNonDecreasingf(t, []int{1, 1, 2}, "error message %s", "formatted") +//	assert.IsNonDecreasingf(t, []float{1, 2}, "error message %s", "formatted") +//	assert.IsNonDecreasingf(t, []string{"a", "b"}, "error message %s", "formatted")  func IsNonDecreasingf(t TestingT, object interface{}, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -976,9 +1072,9 @@ func IsNonDecreasingf(t TestingT, object interface{}, msg string, args ...interf  // IsNonIncreasing asserts that the collection is not increasing  // -//    assert.IsNonIncreasing(t, []int{2, 1, 1}) -//    assert.IsNonIncreasing(t, []float{2, 1}) -//    assert.IsNonIncreasing(t, []string{"b", "a"}) +//	assert.IsNonIncreasing(t, []int{2, 1, 1}) +//	assert.IsNonIncreasing(t, []float{2, 1}) +//	assert.IsNonIncreasing(t, []string{"b", "a"})  func IsNonIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -991,9 +1087,9 @@ func IsNonIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{})  // IsNonIncreasingf asserts that the collection is not increasing  // -//    assert.IsNonIncreasingf(t, []int{2, 1, 1}, "error message %s", "formatted") -//    assert.IsNonIncreasingf(t, []float{2, 1}, "error message %s", "formatted") -//    assert.IsNonIncreasingf(t, []string{"b", "a"}, "error message %s", "formatted") +//	assert.IsNonIncreasingf(t, []int{2, 1, 1}, "error message %s", "formatted") +//	assert.IsNonIncreasingf(t, []float{2, 1}, "error message %s", "formatted") +//	assert.IsNonIncreasingf(t, []string{"b", "a"}, "error message %s", "formatted")  func IsNonIncreasingf(t TestingT, object interface{}, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1028,7 +1124,7 @@ func IsTypef(t TestingT, expectedType interface{}, object interface{}, msg strin  // JSONEq asserts that two JSON strings are equivalent.  // -//  assert.JSONEq(t, `{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`) +//	assert.JSONEq(t, `{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`)  func JSONEq(t TestingT, expected string, actual string, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1041,7 +1137,7 @@ func JSONEq(t TestingT, expected string, actual string, msgAndArgs ...interface{  // JSONEqf asserts that two JSON strings are equivalent.  // -//  assert.JSONEqf(t, `{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`, "error message %s", "formatted") +//	assert.JSONEqf(t, `{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`, "error message %s", "formatted")  func JSONEqf(t TestingT, expected string, actual string, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1055,7 +1151,7 @@ func JSONEqf(t TestingT, expected string, actual string, msg string, args ...int  // Len asserts that the specified object has specific length.  // Len also fails if the object has a type that len() not accept.  // -//    assert.Len(t, mySlice, 3) +//	assert.Len(t, mySlice, 3)  func Len(t TestingT, object interface{}, length int, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1069,7 +1165,7 @@ func Len(t TestingT, object interface{}, length int, msgAndArgs ...interface{})  // Lenf asserts that the specified object has specific length.  // Lenf also fails if the object has a type that len() not accept.  // -//    assert.Lenf(t, mySlice, 3, "error message %s", "formatted") +//	assert.Lenf(t, mySlice, 3, "error message %s", "formatted")  func Lenf(t TestingT, object interface{}, length int, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1082,9 +1178,9 @@ func Lenf(t TestingT, object interface{}, length int, msg string, args ...interf  // Less asserts that the first element is less than the second  // -//    assert.Less(t, 1, 2) -//    assert.Less(t, float64(1), float64(2)) -//    assert.Less(t, "a", "b") +//	assert.Less(t, 1, 2) +//	assert.Less(t, float64(1), float64(2)) +//	assert.Less(t, "a", "b")  func Less(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1097,10 +1193,10 @@ func Less(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{})  // LessOrEqual asserts that the first element is less than or equal to the second  // -//    assert.LessOrEqual(t, 1, 2) -//    assert.LessOrEqual(t, 2, 2) -//    assert.LessOrEqual(t, "a", "b") -//    assert.LessOrEqual(t, "b", "b") +//	assert.LessOrEqual(t, 1, 2) +//	assert.LessOrEqual(t, 2, 2) +//	assert.LessOrEqual(t, "a", "b") +//	assert.LessOrEqual(t, "b", "b")  func LessOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1113,10 +1209,10 @@ func LessOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...inter  // LessOrEqualf asserts that the first element is less than or equal to the second  // -//    assert.LessOrEqualf(t, 1, 2, "error message %s", "formatted") -//    assert.LessOrEqualf(t, 2, 2, "error message %s", "formatted") -//    assert.LessOrEqualf(t, "a", "b", "error message %s", "formatted") -//    assert.LessOrEqualf(t, "b", "b", "error message %s", "formatted") +//	assert.LessOrEqualf(t, 1, 2, "error message %s", "formatted") +//	assert.LessOrEqualf(t, 2, 2, "error message %s", "formatted") +//	assert.LessOrEqualf(t, "a", "b", "error message %s", "formatted") +//	assert.LessOrEqualf(t, "b", "b", "error message %s", "formatted")  func LessOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1129,9 +1225,9 @@ func LessOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string, args .  // Lessf asserts that the first element is less than the second  // -//    assert.Lessf(t, 1, 2, "error message %s", "formatted") -//    assert.Lessf(t, float64(1), float64(2), "error message %s", "formatted") -//    assert.Lessf(t, "a", "b", "error message %s", "formatted") +//	assert.Lessf(t, 1, 2, "error message %s", "formatted") +//	assert.Lessf(t, float64(1), float64(2), "error message %s", "formatted") +//	assert.Lessf(t, "a", "b", "error message %s", "formatted")  func Lessf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1144,8 +1240,8 @@ func Lessf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...inter  // Negative asserts that the specified element is negative  // -//    assert.Negative(t, -1) -//    assert.Negative(t, -1.23) +//	assert.Negative(t, -1) +//	assert.Negative(t, -1.23)  func Negative(t TestingT, e interface{}, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1158,8 +1254,8 @@ func Negative(t TestingT, e interface{}, msgAndArgs ...interface{}) {  // Negativef asserts that the specified element is negative  // -//    assert.Negativef(t, -1, "error message %s", "formatted") -//    assert.Negativef(t, -1.23, "error message %s", "formatted") +//	assert.Negativef(t, -1, "error message %s", "formatted") +//	assert.Negativef(t, -1.23, "error message %s", "formatted")  func Negativef(t TestingT, e interface{}, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1173,7 +1269,7 @@ func Negativef(t TestingT, e interface{}, msg string, args ...interface{}) {  // Never asserts that the given condition doesn't satisfy in waitFor time,  // periodically checking the target function each tick.  // -//    assert.Never(t, func() bool { return false; }, time.Second, 10*time.Millisecond) +//	assert.Never(t, func() bool { return false; }, time.Second, 10*time.Millisecond)  func Never(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1187,7 +1283,7 @@ func Never(t TestingT, condition func() bool, waitFor time.Duration, tick time.D  // Neverf asserts that the given condition doesn't satisfy in waitFor time,  // periodically checking the target function each tick.  // -//    assert.Neverf(t, func() bool { return false; }, time.Second, 10*time.Millisecond, "error message %s", "formatted") +//	assert.Neverf(t, func() bool { return false; }, time.Second, 10*time.Millisecond, "error message %s", "formatted")  func Neverf(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1200,7 +1296,7 @@ func Neverf(t TestingT, condition func() bool, waitFor time.Duration, tick time.  // Nil asserts that the specified object is nil.  // -//    assert.Nil(t, err) +//	assert.Nil(t, err)  func Nil(t TestingT, object interface{}, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1213,7 +1309,7 @@ func Nil(t TestingT, object interface{}, msgAndArgs ...interface{}) {  // Nilf asserts that the specified object is nil.  // -//    assert.Nilf(t, err, "error message %s", "formatted") +//	assert.Nilf(t, err, "error message %s", "formatted")  func Nilf(t TestingT, object interface{}, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1250,10 +1346,10 @@ func NoDirExistsf(t TestingT, path string, msg string, args ...interface{}) {  // NoError asserts that a function returned no error (i.e. `nil`).  // -//   actualObj, err := SomeFunction() -//   if assert.NoError(t, err) { -// 	   assert.Equal(t, expectedObj, actualObj) -//   } +//	  actualObj, err := SomeFunction() +//	  if assert.NoError(t, err) { +//		   assert.Equal(t, expectedObj, actualObj) +//	  }  func NoError(t TestingT, err error, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1266,10 +1362,10 @@ func NoError(t TestingT, err error, msgAndArgs ...interface{}) {  // NoErrorf asserts that a function returned no error (i.e. `nil`).  // -//   actualObj, err := SomeFunction() -//   if assert.NoErrorf(t, err, "error message %s", "formatted") { -// 	   assert.Equal(t, expectedObj, actualObj) -//   } +//	  actualObj, err := SomeFunction() +//	  if assert.NoErrorf(t, err, "error message %s", "formatted") { +//		   assert.Equal(t, expectedObj, actualObj) +//	  }  func NoErrorf(t TestingT, err error, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1307,9 +1403,9 @@ func NoFileExistsf(t TestingT, path string, msg string, args ...interface{}) {  // NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the  // specified substring or element.  // -//    assert.NotContains(t, "Hello World", "Earth") -//    assert.NotContains(t, ["Hello", "World"], "Earth") -//    assert.NotContains(t, {"Hello": "World"}, "Earth") +//	assert.NotContains(t, "Hello World", "Earth") +//	assert.NotContains(t, ["Hello", "World"], "Earth") +//	assert.NotContains(t, {"Hello": "World"}, "Earth")  func NotContains(t TestingT, s interface{}, contains interface{}, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1323,9 +1419,9 @@ func NotContains(t TestingT, s interface{}, contains interface{}, msgAndArgs ...  // NotContainsf asserts that the specified string, list(array, slice...) or map does NOT contain the  // specified substring or element.  // -//    assert.NotContainsf(t, "Hello World", "Earth", "error message %s", "formatted") -//    assert.NotContainsf(t, ["Hello", "World"], "Earth", "error message %s", "formatted") -//    assert.NotContainsf(t, {"Hello": "World"}, "Earth", "error message %s", "formatted") +//	assert.NotContainsf(t, "Hello World", "Earth", "error message %s", "formatted") +//	assert.NotContainsf(t, ["Hello", "World"], "Earth", "error message %s", "formatted") +//	assert.NotContainsf(t, {"Hello": "World"}, "Earth", "error message %s", "formatted")  func NotContainsf(t TestingT, s interface{}, contains interface{}, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1339,9 +1435,9 @@ func NotContainsf(t TestingT, s interface{}, contains interface{}, msg string, a  // NotEmpty asserts that the specified object is NOT empty.  I.e. not nil, "", false, 0 or either  // a slice or a channel with len == 0.  // -//  if assert.NotEmpty(t, obj) { -//    assert.Equal(t, "two", obj[1]) -//  } +//	if assert.NotEmpty(t, obj) { +//	  assert.Equal(t, "two", obj[1]) +//	}  func NotEmpty(t TestingT, object interface{}, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1355,9 +1451,9 @@ func NotEmpty(t TestingT, object interface{}, msgAndArgs ...interface{}) {  // NotEmptyf asserts that the specified object is NOT empty.  I.e. not nil, "", false, 0 or either  // a slice or a channel with len == 0.  // -//  if assert.NotEmptyf(t, obj, "error message %s", "formatted") { -//    assert.Equal(t, "two", obj[1]) -//  } +//	if assert.NotEmptyf(t, obj, "error message %s", "formatted") { +//	  assert.Equal(t, "two", obj[1]) +//	}  func NotEmptyf(t TestingT, object interface{}, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1370,7 +1466,7 @@ func NotEmptyf(t TestingT, object interface{}, msg string, args ...interface{})  // NotEqual asserts that the specified values are NOT equal.  // -//    assert.NotEqual(t, obj1, obj2) +//	assert.NotEqual(t, obj1, obj2)  //  // Pointer variable equality is determined based on the equality of the  // referenced values (as opposed to the memory addresses). @@ -1386,7 +1482,7 @@ func NotEqual(t TestingT, expected interface{}, actual interface{}, msgAndArgs .  // NotEqualValues asserts that two objects are not equal even when converted to the same type  // -//    assert.NotEqualValues(t, obj1, obj2) +//	assert.NotEqualValues(t, obj1, obj2)  func NotEqualValues(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1399,7 +1495,7 @@ func NotEqualValues(t TestingT, expected interface{}, actual interface{}, msgAnd  // NotEqualValuesf asserts that two objects are not equal even when converted to the same type  // -//    assert.NotEqualValuesf(t, obj1, obj2, "error message %s", "formatted") +//	assert.NotEqualValuesf(t, obj1, obj2, "error message %s", "formatted")  func NotEqualValuesf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1412,7 +1508,7 @@ func NotEqualValuesf(t TestingT, expected interface{}, actual interface{}, msg s  // NotEqualf asserts that the specified values are NOT equal.  // -//    assert.NotEqualf(t, obj1, obj2, "error message %s", "formatted") +//	assert.NotEqualf(t, obj1, obj2, "error message %s", "formatted")  //  // Pointer variable equality is determined based on the equality of the  // referenced values (as opposed to the memory addresses). @@ -1452,7 +1548,7 @@ func NotErrorIsf(t TestingT, err error, target error, msg string, args ...interf  // NotNil asserts that the specified object is not nil.  // -//    assert.NotNil(t, err) +//	assert.NotNil(t, err)  func NotNil(t TestingT, object interface{}, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1465,7 +1561,7 @@ func NotNil(t TestingT, object interface{}, msgAndArgs ...interface{}) {  // NotNilf asserts that the specified object is not nil.  // -//    assert.NotNilf(t, err, "error message %s", "formatted") +//	assert.NotNilf(t, err, "error message %s", "formatted")  func NotNilf(t TestingT, object interface{}, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1478,7 +1574,7 @@ func NotNilf(t TestingT, object interface{}, msg string, args ...interface{}) {  // NotPanics asserts that the code inside the specified PanicTestFunc does NOT panic.  // -//   assert.NotPanics(t, func(){ RemainCalm() }) +//	assert.NotPanics(t, func(){ RemainCalm() })  func NotPanics(t TestingT, f assert.PanicTestFunc, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1491,7 +1587,7 @@ func NotPanics(t TestingT, f assert.PanicTestFunc, msgAndArgs ...interface{}) {  // NotPanicsf asserts that the code inside the specified PanicTestFunc does NOT panic.  // -//   assert.NotPanicsf(t, func(){ RemainCalm() }, "error message %s", "formatted") +//	assert.NotPanicsf(t, func(){ RemainCalm() }, "error message %s", "formatted")  func NotPanicsf(t TestingT, f assert.PanicTestFunc, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1504,8 +1600,8 @@ func NotPanicsf(t TestingT, f assert.PanicTestFunc, msg string, args ...interfac  // NotRegexp asserts that a specified regexp does not match a string.  // -//  assert.NotRegexp(t, regexp.MustCompile("starts"), "it's starting") -//  assert.NotRegexp(t, "^start", "it's not starting") +//	assert.NotRegexp(t, regexp.MustCompile("starts"), "it's starting") +//	assert.NotRegexp(t, "^start", "it's not starting")  func NotRegexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1518,8 +1614,8 @@ func NotRegexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interf  // NotRegexpf asserts that a specified regexp does not match a string.  // -//  assert.NotRegexpf(t, regexp.MustCompile("starts"), "it's starting", "error message %s", "formatted") -//  assert.NotRegexpf(t, "^start", "it's not starting", "error message %s", "formatted") +//	assert.NotRegexpf(t, regexp.MustCompile("starts"), "it's starting", "error message %s", "formatted") +//	assert.NotRegexpf(t, "^start", "it's not starting", "error message %s", "formatted")  func NotRegexpf(t TestingT, rx interface{}, str interface{}, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1532,7 +1628,7 @@ func NotRegexpf(t TestingT, rx interface{}, str interface{}, msg string, args ..  // NotSame asserts that two pointers do not reference the same object.  // -//    assert.NotSame(t, ptr1, ptr2) +//	assert.NotSame(t, ptr1, ptr2)  //  // Both arguments must be pointer variables. Pointer variable sameness is  // determined based on the equality of both type and value. @@ -1548,7 +1644,7 @@ func NotSame(t TestingT, expected interface{}, actual interface{}, msgAndArgs ..  // NotSamef asserts that two pointers do not reference the same object.  // -//    assert.NotSamef(t, ptr1, ptr2, "error message %s", "formatted") +//	assert.NotSamef(t, ptr1, ptr2, "error message %s", "formatted")  //  // Both arguments must be pointer variables. Pointer variable sameness is  // determined based on the equality of both type and value. @@ -1565,7 +1661,7 @@ func NotSamef(t TestingT, expected interface{}, actual interface{}, msg string,  // NotSubset asserts that the specified list(array, slice...) contains not all  // elements given in the specified subset(array, slice...).  // -//    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], "But [1, 3, 4] does not contain [1, 2]")  func NotSubset(t TestingT, list interface{}, subset interface{}, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1579,7 +1675,7 @@ func NotSubset(t TestingT, list interface{}, subset interface{}, msgAndArgs ...i  // NotSubsetf asserts that the specified list(array, slice...) contains not all  // elements given in the specified subset(array, slice...).  // -//    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], "But [1, 3, 4] does not contain [1, 2]", "error message %s", "formatted")  func NotSubsetf(t TestingT, list interface{}, subset interface{}, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1614,7 +1710,7 @@ func NotZerof(t TestingT, i interface{}, msg string, args ...interface{}) {  // Panics asserts that the code inside the specified PanicTestFunc panics.  // -//   assert.Panics(t, func(){ GoCrazy() }) +//	assert.Panics(t, func(){ GoCrazy() })  func Panics(t TestingT, f assert.PanicTestFunc, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1629,7 +1725,7 @@ func Panics(t TestingT, f assert.PanicTestFunc, msgAndArgs ...interface{}) {  // panics, and that the recovered panic value is an error that satisfies the  // EqualError comparison.  // -//   assert.PanicsWithError(t, "crazy error", func(){ GoCrazy() }) +//	assert.PanicsWithError(t, "crazy error", func(){ GoCrazy() })  func PanicsWithError(t TestingT, errString string, f assert.PanicTestFunc, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1644,7 +1740,7 @@ func PanicsWithError(t TestingT, errString string, f assert.PanicTestFunc, msgAn  // panics, and that the recovered panic value is an error that satisfies the  // EqualError comparison.  // -//   assert.PanicsWithErrorf(t, "crazy error", func(){ GoCrazy() }, "error message %s", "formatted") +//	assert.PanicsWithErrorf(t, "crazy error", func(){ GoCrazy() }, "error message %s", "formatted")  func PanicsWithErrorf(t TestingT, errString string, f assert.PanicTestFunc, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1658,7 +1754,7 @@ func PanicsWithErrorf(t TestingT, errString string, f assert.PanicTestFunc, msg  // PanicsWithValue asserts that the code inside the specified PanicTestFunc panics, and that  // the recovered panic value equals the expected panic value.  // -//   assert.PanicsWithValue(t, "crazy error", func(){ GoCrazy() }) +//	assert.PanicsWithValue(t, "crazy error", func(){ GoCrazy() })  func PanicsWithValue(t TestingT, expected interface{}, f assert.PanicTestFunc, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1672,7 +1768,7 @@ func PanicsWithValue(t TestingT, expected interface{}, f assert.PanicTestFunc, m  // PanicsWithValuef asserts that the code inside the specified PanicTestFunc panics, and that  // the recovered panic value equals the expected panic value.  // -//   assert.PanicsWithValuef(t, "crazy error", func(){ GoCrazy() }, "error message %s", "formatted") +//	assert.PanicsWithValuef(t, "crazy error", func(){ GoCrazy() }, "error message %s", "formatted")  func PanicsWithValuef(t TestingT, expected interface{}, f assert.PanicTestFunc, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1685,7 +1781,7 @@ func PanicsWithValuef(t TestingT, expected interface{}, f assert.PanicTestFunc,  // Panicsf asserts that the code inside the specified PanicTestFunc panics.  // -//   assert.Panicsf(t, func(){ GoCrazy() }, "error message %s", "formatted") +//	assert.Panicsf(t, func(){ GoCrazy() }, "error message %s", "formatted")  func Panicsf(t TestingT, f assert.PanicTestFunc, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1698,8 +1794,8 @@ func Panicsf(t TestingT, f assert.PanicTestFunc, msg string, args ...interface{}  // Positive asserts that the specified element is positive  // -//    assert.Positive(t, 1) -//    assert.Positive(t, 1.23) +//	assert.Positive(t, 1) +//	assert.Positive(t, 1.23)  func Positive(t TestingT, e interface{}, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1712,8 +1808,8 @@ func Positive(t TestingT, e interface{}, msgAndArgs ...interface{}) {  // Positivef asserts that the specified element is positive  // -//    assert.Positivef(t, 1, "error message %s", "formatted") -//    assert.Positivef(t, 1.23, "error message %s", "formatted") +//	assert.Positivef(t, 1, "error message %s", "formatted") +//	assert.Positivef(t, 1.23, "error message %s", "formatted")  func Positivef(t TestingT, e interface{}, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1726,8 +1822,8 @@ func Positivef(t TestingT, e interface{}, msg string, args ...interface{}) {  // Regexp asserts that a specified regexp matches a string.  // -//  assert.Regexp(t, regexp.MustCompile("start"), "it's starting") -//  assert.Regexp(t, "start...$", "it's not starting") +//	assert.Regexp(t, regexp.MustCompile("start"), "it's starting") +//	assert.Regexp(t, "start...$", "it's not starting")  func Regexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1740,8 +1836,8 @@ func Regexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface  // Regexpf asserts that a specified regexp matches a string.  // -//  assert.Regexpf(t, regexp.MustCompile("start"), "it's starting", "error message %s", "formatted") -//  assert.Regexpf(t, "start...$", "it's not starting", "error message %s", "formatted") +//	assert.Regexpf(t, regexp.MustCompile("start"), "it's starting", "error message %s", "formatted") +//	assert.Regexpf(t, "start...$", "it's not starting", "error message %s", "formatted")  func Regexpf(t TestingT, rx interface{}, str interface{}, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1754,7 +1850,7 @@ func Regexpf(t TestingT, rx interface{}, str interface{}, msg string, args ...in  // Same asserts that two pointers reference the same object.  // -//    assert.Same(t, ptr1, ptr2) +//	assert.Same(t, ptr1, ptr2)  //  // Both arguments must be pointer variables. Pointer variable sameness is  // determined based on the equality of both type and value. @@ -1770,7 +1866,7 @@ func Same(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...in  // Samef asserts that two pointers reference the same object.  // -//    assert.Samef(t, ptr1, ptr2, "error message %s", "formatted") +//	assert.Samef(t, ptr1, ptr2, "error message %s", "formatted")  //  // Both arguments must be pointer variables. Pointer variable sameness is  // determined based on the equality of both type and value. @@ -1787,7 +1883,7 @@ func Samef(t TestingT, expected interface{}, actual interface{}, msg string, arg  // Subset asserts that the specified list(array, slice...) contains all  // elements given in the specified subset(array, slice...).  // -//    assert.Subset(t, [1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]") +//	assert.Subset(t, [1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]")  func Subset(t TestingT, list interface{}, subset interface{}, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1801,7 +1897,7 @@ func Subset(t TestingT, list interface{}, subset interface{}, msgAndArgs ...inte  // Subsetf asserts that the specified list(array, slice...) contains all  // elements given in the specified subset(array, slice...).  // -//    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], "But [1, 2, 3] does contain [1, 2]", "error message %s", "formatted")  func Subsetf(t TestingT, list interface{}, subset interface{}, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1814,7 +1910,7 @@ func Subsetf(t TestingT, list interface{}, subset interface{}, msg string, args  // True asserts that the specified value is true.  // -//    assert.True(t, myBool) +//	assert.True(t, myBool)  func True(t TestingT, value bool, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1827,7 +1923,7 @@ func True(t TestingT, value bool, msgAndArgs ...interface{}) {  // Truef asserts that the specified value is true.  // -//    assert.Truef(t, myBool, "error message %s", "formatted") +//	assert.Truef(t, myBool, "error message %s", "formatted")  func Truef(t TestingT, value bool, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1840,7 +1936,7 @@ func Truef(t TestingT, value bool, msg string, args ...interface{}) {  // WithinDuration asserts that the two times are within duration delta of each other.  // -//   assert.WithinDuration(t, time.Now(), time.Now(), 10*time.Second) +//	assert.WithinDuration(t, time.Now(), time.Now(), 10*time.Second)  func WithinDuration(t TestingT, expected time.Time, actual time.Time, delta time.Duration, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1853,7 +1949,7 @@ func WithinDuration(t TestingT, expected time.Time, actual time.Time, delta time  // WithinDurationf asserts that the two times are within duration delta of each other.  // -//   assert.WithinDurationf(t, time.Now(), time.Now(), 10*time.Second, "error message %s", "formatted") +//	assert.WithinDurationf(t, time.Now(), time.Now(), 10*time.Second, "error message %s", "formatted")  func WithinDurationf(t TestingT, expected time.Time, actual time.Time, delta time.Duration, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1866,7 +1962,7 @@ func WithinDurationf(t TestingT, expected time.Time, actual time.Time, delta tim  // WithinRange asserts that a time is within a time range (inclusive).  // -//   assert.WithinRange(t, time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second)) +//	assert.WithinRange(t, time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second))  func WithinRange(t TestingT, actual time.Time, start time.Time, end time.Time, msgAndArgs ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() @@ -1879,7 +1975,7 @@ func WithinRange(t TestingT, actual time.Time, start time.Time, end time.Time, m  // WithinRangef asserts that a time is within a time range (inclusive).  // -//   assert.WithinRangef(t, time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second), "error message %s", "formatted") +//	assert.WithinRangef(t, time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second), "error message %s", "formatted")  func WithinRangef(t TestingT, actual time.Time, start time.Time, end time.Time, msg string, args ...interface{}) {  	if h, ok := t.(tHelper); ok {  		h.Helper() diff --git a/vendor/github.com/stretchr/testify/require/require_forward.go b/vendor/github.com/stretchr/testify/require/require_forward.go index 960bf6f2c..3b5b09330 100644 --- a/vendor/github.com/stretchr/testify/require/require_forward.go +++ b/vendor/github.com/stretchr/testify/require/require_forward.go @@ -31,9 +31,9 @@ func (a *Assertions) Conditionf(comp assert.Comparison, msg string, args ...inte  // Contains asserts that the specified string, list(array, slice...) or map contains the  // specified substring or element.  // -//    a.Contains("Hello World", "World") -//    a.Contains(["Hello", "World"], "World") -//    a.Contains({"Hello": "World"}, "Hello") +//	a.Contains("Hello World", "World") +//	a.Contains(["Hello", "World"], "World") +//	a.Contains({"Hello": "World"}, "Hello")  func (a *Assertions) Contains(s interface{}, contains interface{}, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -44,9 +44,9 @@ func (a *Assertions) Contains(s interface{}, contains interface{}, msgAndArgs ..  // Containsf asserts that the specified string, list(array, slice...) or map contains the  // specified substring or element.  // -//    a.Containsf("Hello World", "World", "error message %s", "formatted") -//    a.Containsf(["Hello", "World"], "World", "error message %s", "formatted") -//    a.Containsf({"Hello": "World"}, "Hello", "error message %s", "formatted") +//	a.Containsf("Hello World", "World", "error message %s", "formatted") +//	a.Containsf(["Hello", "World"], "World", "error message %s", "formatted") +//	a.Containsf({"Hello": "World"}, "Hello", "error message %s", "formatted")  func (a *Assertions) Containsf(s interface{}, contains interface{}, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -99,7 +99,7 @@ func (a *Assertions) ElementsMatchf(listA interface{}, listB interface{}, msg st  // Empty asserts that the specified object is empty.  I.e. nil, "", false, 0 or either  // a slice or a channel with len == 0.  // -//  a.Empty(obj) +//	a.Empty(obj)  func (a *Assertions) Empty(object interface{}, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -110,7 +110,7 @@ func (a *Assertions) Empty(object interface{}, msgAndArgs ...interface{}) {  // Emptyf asserts that the specified object is empty.  I.e. nil, "", false, 0 or either  // a slice or a channel with len == 0.  // -//  a.Emptyf(obj, "error message %s", "formatted") +//	a.Emptyf(obj, "error message %s", "formatted")  func (a *Assertions) Emptyf(object interface{}, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -120,7 +120,7 @@ func (a *Assertions) Emptyf(object interface{}, msg string, args ...interface{})  // Equal asserts that two objects are equal.  // -//    a.Equal(123, 123) +//	a.Equal(123, 123)  //  // Pointer variable equality is determined based on the equality of the  // referenced values (as opposed to the memory addresses). Function equality @@ -135,8 +135,8 @@ func (a *Assertions) Equal(expected interface{}, actual interface{}, msgAndArgs  // EqualError asserts that a function returned an error (i.e. not `nil`)  // and that it is equal to the provided error.  // -//   actualObj, err := SomeFunction() -//   a.EqualError(err,  expectedErrorString) +//	actualObj, err := SomeFunction() +//	a.EqualError(err,  expectedErrorString)  func (a *Assertions) EqualError(theError error, errString string, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -147,8 +147,8 @@ func (a *Assertions) EqualError(theError error, errString string, msgAndArgs ...  // EqualErrorf asserts that a function returned an error (i.e. not `nil`)  // and that it is equal to the provided error.  // -//   actualObj, err := SomeFunction() -//   a.EqualErrorf(err,  expectedErrorString, "error message %s", "formatted") +//	actualObj, err := SomeFunction() +//	a.EqualErrorf(err,  expectedErrorString, "error message %s", "formatted")  func (a *Assertions) EqualErrorf(theError error, errString string, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -156,10 +156,44 @@ func (a *Assertions) EqualErrorf(theError error, errString string, msg string, a  	EqualErrorf(a.t, theError, errString, msg, args...)  } +// EqualExportedValues asserts that the types of two objects are equal and their public +// fields are also equal. This is useful for comparing structs that have private fields +// that could potentially differ. +// +//	 type S struct { +//		Exported     	int +//		notExported   	int +//	 } +//	 a.EqualExportedValues(S{1, 2}, S{1, 3}) => true +//	 a.EqualExportedValues(S{1, 2}, S{2, 3}) => false +func (a *Assertions) EqualExportedValues(expected interface{}, actual interface{}, msgAndArgs ...interface{}) { +	if h, ok := a.t.(tHelper); ok { +		h.Helper() +	} +	EqualExportedValues(a.t, expected, actual, msgAndArgs...) +} + +// EqualExportedValuesf asserts that the types of two objects are equal and their public +// fields are also equal. This is useful for comparing structs that have private fields +// that could potentially differ. +// +//	 type S struct { +//		Exported     	int +//		notExported   	int +//	 } +//	 a.EqualExportedValuesf(S{1, 2}, S{1, 3}, "error message %s", "formatted") => true +//	 a.EqualExportedValuesf(S{1, 2}, S{2, 3}, "error message %s", "formatted") => false +func (a *Assertions) EqualExportedValuesf(expected interface{}, actual interface{}, msg string, args ...interface{}) { +	if h, ok := a.t.(tHelper); ok { +		h.Helper() +	} +	EqualExportedValuesf(a.t, expected, actual, msg, args...) +} +  // EqualValues asserts that two objects are equal or convertable to the same types  // and equal.  // -//    a.EqualValues(uint32(123), int32(123)) +//	a.EqualValues(uint32(123), int32(123))  func (a *Assertions) EqualValues(expected interface{}, actual interface{}, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -170,7 +204,7 @@ func (a *Assertions) EqualValues(expected interface{}, actual interface{}, msgAn  // EqualValuesf asserts that two objects are equal or convertable to the same types  // and equal.  // -//    a.EqualValuesf(uint32(123), int32(123), "error message %s", "formatted") +//	a.EqualValuesf(uint32(123), int32(123), "error message %s", "formatted")  func (a *Assertions) EqualValuesf(expected interface{}, actual interface{}, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -180,7 +214,7 @@ func (a *Assertions) EqualValuesf(expected interface{}, actual interface{}, msg  // Equalf asserts that two objects are equal.  // -//    a.Equalf(123, 123, "error message %s", "formatted") +//	a.Equalf(123, 123, "error message %s", "formatted")  //  // Pointer variable equality is determined based on the equality of the  // referenced values (as opposed to the memory addresses). Function equality @@ -194,10 +228,10 @@ func (a *Assertions) Equalf(expected interface{}, actual interface{}, msg string  // Error asserts that a function returned an error (i.e. not `nil`).  // -//   actualObj, err := SomeFunction() -//   if a.Error(err) { -// 	   assert.Equal(t, expectedError, err) -//   } +//	  actualObj, err := SomeFunction() +//	  if a.Error(err) { +//		   assert.Equal(t, expectedError, err) +//	  }  func (a *Assertions) Error(err error, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -226,8 +260,8 @@ func (a *Assertions) ErrorAsf(err error, target interface{}, msg string, args ..  // ErrorContains asserts that a function returned an error (i.e. not `nil`)  // and that the error contains the specified substring.  // -//   actualObj, err := SomeFunction() -//   a.ErrorContains(err,  expectedErrorSubString) +//	actualObj, err := SomeFunction() +//	a.ErrorContains(err,  expectedErrorSubString)  func (a *Assertions) ErrorContains(theError error, contains string, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -238,8 +272,8 @@ func (a *Assertions) ErrorContains(theError error, contains string, msgAndArgs .  // ErrorContainsf asserts that a function returned an error (i.e. not `nil`)  // and that the error contains the specified substring.  // -//   actualObj, err := SomeFunction() -//   a.ErrorContainsf(err,  expectedErrorSubString, "error message %s", "formatted") +//	actualObj, err := SomeFunction() +//	a.ErrorContainsf(err,  expectedErrorSubString, "error message %s", "formatted")  func (a *Assertions) ErrorContainsf(theError error, contains string, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -267,10 +301,10 @@ func (a *Assertions) ErrorIsf(err error, target error, msg string, args ...inter  // Errorf asserts that a function returned an error (i.e. not `nil`).  // -//   actualObj, err := SomeFunction() -//   if a.Errorf(err, "error message %s", "formatted") { -// 	   assert.Equal(t, expectedErrorf, err) -//   } +//	  actualObj, err := SomeFunction() +//	  if a.Errorf(err, "error message %s", "formatted") { +//		   assert.Equal(t, expectedErrorf, err) +//	  }  func (a *Assertions) Errorf(err error, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -281,7 +315,7 @@ func (a *Assertions) Errorf(err error, msg string, args ...interface{}) {  // Eventually asserts that given condition will be met in waitFor time,  // periodically checking target function each tick.  // -//    a.Eventually(func() bool { return true; }, time.Second, 10*time.Millisecond) +//	a.Eventually(func() bool { return true; }, time.Second, 10*time.Millisecond)  func (a *Assertions) Eventually(condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -289,10 +323,60 @@ func (a *Assertions) Eventually(condition func() bool, waitFor time.Duration, ti  	Eventually(a.t, condition, waitFor, tick, msgAndArgs...)  } +// EventuallyWithT asserts that given condition will be met in waitFor time, +// periodically checking target function each tick. In contrast to Eventually, +// it supplies a CollectT to the condition function, so that the condition +// function can use the CollectT to call other assertions. +// The condition is considered "met" if no errors are raised in a tick. +// The supplied CollectT collects all errors from one tick (if there are any). +// If the condition is not met before waitFor, the collected errors of +// the last tick are copied to t. +// +//	externalValue := false +//	go func() { +//		time.Sleep(8*time.Second) +//		externalValue = true +//	}() +//	a.EventuallyWithT(func(c *assert.CollectT) { +//		// add assertions as needed; any assertion failure will fail the current tick +//		assert.True(c, externalValue, "expected 'externalValue' to be true") +//	}, 1*time.Second, 10*time.Second, "external state has not changed to 'true'; still false") +func (a *Assertions) EventuallyWithT(condition func(collect *assert.CollectT), waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) { +	if h, ok := a.t.(tHelper); ok { +		h.Helper() +	} +	EventuallyWithT(a.t, condition, waitFor, tick, msgAndArgs...) +} + +// EventuallyWithTf asserts that given condition will be met in waitFor time, +// periodically checking target function each tick. In contrast to Eventually, +// it supplies a CollectT to the condition function, so that the condition +// function can use the CollectT to call other assertions. +// The condition is considered "met" if no errors are raised in a tick. +// The supplied CollectT collects all errors from one tick (if there are any). +// If the condition is not met before waitFor, the collected errors of +// the last tick are copied to t. +// +//	externalValue := false +//	go func() { +//		time.Sleep(8*time.Second) +//		externalValue = true +//	}() +//	a.EventuallyWithTf(func(c *assert.CollectT, "error message %s", "formatted") { +//		// add assertions as needed; any assertion failure will fail the current tick +//		assert.True(c, externalValue, "expected 'externalValue' to be true") +//	}, 1*time.Second, 10*time.Second, "external state has not changed to 'true'; still false") +func (a *Assertions) EventuallyWithTf(condition func(collect *assert.CollectT), waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) { +	if h, ok := a.t.(tHelper); ok { +		h.Helper() +	} +	EventuallyWithTf(a.t, condition, waitFor, tick, msg, args...) +} +  // Eventuallyf asserts that given condition will be met in waitFor time,  // periodically checking target function each tick.  // -//    a.Eventuallyf(func() bool { return true; }, time.Second, 10*time.Millisecond, "error message %s", "formatted") +//	a.Eventuallyf(func() bool { return true; }, time.Second, 10*time.Millisecond, "error message %s", "formatted")  func (a *Assertions) Eventuallyf(condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -302,7 +386,7 @@ func (a *Assertions) Eventuallyf(condition func() bool, waitFor time.Duration, t  // Exactly asserts that two objects are equal in value and type.  // -//    a.Exactly(int32(123), int64(123)) +//	a.Exactly(int32(123), int64(123))  func (a *Assertions) Exactly(expected interface{}, actual interface{}, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -312,7 +396,7 @@ func (a *Assertions) Exactly(expected interface{}, actual interface{}, msgAndArg  // Exactlyf asserts that two objects are equal in value and type.  // -//    a.Exactlyf(int32(123), int64(123), "error message %s", "formatted") +//	a.Exactlyf(int32(123), int64(123), "error message %s", "formatted")  func (a *Assertions) Exactlyf(expected interface{}, actual interface{}, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -354,7 +438,7 @@ func (a *Assertions) Failf(failureMessage string, msg string, args ...interface{  // False asserts that the specified value is false.  // -//    a.False(myBool) +//	a.False(myBool)  func (a *Assertions) False(value bool, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -364,7 +448,7 @@ func (a *Assertions) False(value bool, msgAndArgs ...interface{}) {  // Falsef asserts that the specified value is false.  // -//    a.Falsef(myBool, "error message %s", "formatted") +//	a.Falsef(myBool, "error message %s", "formatted")  func (a *Assertions) Falsef(value bool, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -392,9 +476,9 @@ func (a *Assertions) FileExistsf(path string, msg string, args ...interface{}) {  // Greater asserts that the first element is greater than the second  // -//    a.Greater(2, 1) -//    a.Greater(float64(2), float64(1)) -//    a.Greater("b", "a") +//	a.Greater(2, 1) +//	a.Greater(float64(2), float64(1)) +//	a.Greater("b", "a")  func (a *Assertions) Greater(e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -404,10 +488,10 @@ func (a *Assertions) Greater(e1 interface{}, e2 interface{}, msgAndArgs ...inter  // GreaterOrEqual asserts that the first element is greater than or equal to the second  // -//    a.GreaterOrEqual(2, 1) -//    a.GreaterOrEqual(2, 2) -//    a.GreaterOrEqual("b", "a") -//    a.GreaterOrEqual("b", "b") +//	a.GreaterOrEqual(2, 1) +//	a.GreaterOrEqual(2, 2) +//	a.GreaterOrEqual("b", "a") +//	a.GreaterOrEqual("b", "b")  func (a *Assertions) GreaterOrEqual(e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -417,10 +501,10 @@ func (a *Assertions) GreaterOrEqual(e1 interface{}, e2 interface{}, msgAndArgs .  // GreaterOrEqualf asserts that the first element is greater than or equal to the second  // -//    a.GreaterOrEqualf(2, 1, "error message %s", "formatted") -//    a.GreaterOrEqualf(2, 2, "error message %s", "formatted") -//    a.GreaterOrEqualf("b", "a", "error message %s", "formatted") -//    a.GreaterOrEqualf("b", "b", "error message %s", "formatted") +//	a.GreaterOrEqualf(2, 1, "error message %s", "formatted") +//	a.GreaterOrEqualf(2, 2, "error message %s", "formatted") +//	a.GreaterOrEqualf("b", "a", "error message %s", "formatted") +//	a.GreaterOrEqualf("b", "b", "error message %s", "formatted")  func (a *Assertions) GreaterOrEqualf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -430,9 +514,9 @@ func (a *Assertions) GreaterOrEqualf(e1 interface{}, e2 interface{}, msg string,  // Greaterf asserts that the first element is greater than the second  // -//    a.Greaterf(2, 1, "error message %s", "formatted") -//    a.Greaterf(float64(2), float64(1), "error message %s", "formatted") -//    a.Greaterf("b", "a", "error message %s", "formatted") +//	a.Greaterf(2, 1, "error message %s", "formatted") +//	a.Greaterf(float64(2), float64(1), "error message %s", "formatted") +//	a.Greaterf("b", "a", "error message %s", "formatted")  func (a *Assertions) Greaterf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -443,7 +527,7 @@ func (a *Assertions) Greaterf(e1 interface{}, e2 interface{}, msg string, args .  // HTTPBodyContains asserts that a specified handler returns a  // body that contains a string.  // -//  a.HTTPBodyContains(myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky") +//	a.HTTPBodyContains(myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky")  //  // Returns whether the assertion was successful (true) or not (false).  func (a *Assertions) HTTPBodyContains(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) { @@ -456,7 +540,7 @@ func (a *Assertions) HTTPBodyContains(handler http.HandlerFunc, method string, u  // HTTPBodyContainsf asserts that a specified handler returns a  // body that contains a string.  // -//  a.HTTPBodyContainsf(myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted") +//	a.HTTPBodyContainsf(myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted")  //  // Returns whether the assertion was successful (true) or not (false).  func (a *Assertions) HTTPBodyContainsf(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) { @@ -469,7 +553,7 @@ func (a *Assertions) HTTPBodyContainsf(handler http.HandlerFunc, method string,  // HTTPBodyNotContains asserts that a specified handler returns a  // body that does not contain a string.  // -//  a.HTTPBodyNotContains(myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky") +//	a.HTTPBodyNotContains(myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky")  //  // Returns whether the assertion was successful (true) or not (false).  func (a *Assertions) HTTPBodyNotContains(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) { @@ -482,7 +566,7 @@ func (a *Assertions) HTTPBodyNotContains(handler http.HandlerFunc, method string  // HTTPBodyNotContainsf asserts that a specified handler returns a  // body that does not contain a string.  // -//  a.HTTPBodyNotContainsf(myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted") +//	a.HTTPBodyNotContainsf(myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted")  //  // Returns whether the assertion was successful (true) or not (false).  func (a *Assertions) HTTPBodyNotContainsf(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) { @@ -494,7 +578,7 @@ func (a *Assertions) HTTPBodyNotContainsf(handler http.HandlerFunc, method strin  // HTTPError asserts that a specified handler returns an error status code.  // -//  a.HTTPError(myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}} +//	a.HTTPError(myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}}  //  // Returns whether the assertion was successful (true) or not (false).  func (a *Assertions) HTTPError(handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) { @@ -506,7 +590,7 @@ func (a *Assertions) HTTPError(handler http.HandlerFunc, method string, url stri  // HTTPErrorf asserts that a specified handler returns an error status code.  // -//  a.HTTPErrorf(myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}} +//	a.HTTPErrorf(myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}}  //  // Returns whether the assertion was successful (true) or not (false).  func (a *Assertions) HTTPErrorf(handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) { @@ -518,7 +602,7 @@ func (a *Assertions) HTTPErrorf(handler http.HandlerFunc, method string, url str  // HTTPRedirect asserts that a specified handler returns a redirect status code.  // -//  a.HTTPRedirect(myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}} +//	a.HTTPRedirect(myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}}  //  // Returns whether the assertion was successful (true) or not (false).  func (a *Assertions) HTTPRedirect(handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) { @@ -530,7 +614,7 @@ func (a *Assertions) HTTPRedirect(handler http.HandlerFunc, method string, url s  // HTTPRedirectf asserts that a specified handler returns a redirect status code.  // -//  a.HTTPRedirectf(myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}} +//	a.HTTPRedirectf(myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}}  //  // Returns whether the assertion was successful (true) or not (false).  func (a *Assertions) HTTPRedirectf(handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) { @@ -542,7 +626,7 @@ func (a *Assertions) HTTPRedirectf(handler http.HandlerFunc, method string, url  // HTTPStatusCode asserts that a specified handler returns a specified status code.  // -//  a.HTTPStatusCode(myHandler, "GET", "/notImplemented", nil, 501) +//	a.HTTPStatusCode(myHandler, "GET", "/notImplemented", nil, 501)  //  // Returns whether the assertion was successful (true) or not (false).  func (a *Assertions) HTTPStatusCode(handler http.HandlerFunc, method string, url string, values url.Values, statuscode int, msgAndArgs ...interface{}) { @@ -554,7 +638,7 @@ func (a *Assertions) HTTPStatusCode(handler http.HandlerFunc, method string, url  // HTTPStatusCodef asserts that a specified handler returns a specified status code.  // -//  a.HTTPStatusCodef(myHandler, "GET", "/notImplemented", nil, 501, "error message %s", "formatted") +//	a.HTTPStatusCodef(myHandler, "GET", "/notImplemented", nil, 501, "error message %s", "formatted")  //  // Returns whether the assertion was successful (true) or not (false).  func (a *Assertions) HTTPStatusCodef(handler http.HandlerFunc, method string, url string, values url.Values, statuscode int, msg string, args ...interface{}) { @@ -566,7 +650,7 @@ func (a *Assertions) HTTPStatusCodef(handler http.HandlerFunc, method string, ur  // HTTPSuccess asserts that a specified handler returns a success status code.  // -//  a.HTTPSuccess(myHandler, "POST", "http://www.google.com", nil) +//	a.HTTPSuccess(myHandler, "POST", "http://www.google.com", nil)  //  // Returns whether the assertion was successful (true) or not (false).  func (a *Assertions) HTTPSuccess(handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) { @@ -578,7 +662,7 @@ func (a *Assertions) HTTPSuccess(handler http.HandlerFunc, method string, url st  // HTTPSuccessf asserts that a specified handler returns a success status code.  // -//  a.HTTPSuccessf(myHandler, "POST", "http://www.google.com", nil, "error message %s", "formatted") +//	a.HTTPSuccessf(myHandler, "POST", "http://www.google.com", nil, "error message %s", "formatted")  //  // Returns whether the assertion was successful (true) or not (false).  func (a *Assertions) HTTPSuccessf(handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) { @@ -590,7 +674,7 @@ func (a *Assertions) HTTPSuccessf(handler http.HandlerFunc, method string, url s  // Implements asserts that an object is implemented by the specified interface.  // -//    a.Implements((*MyInterface)(nil), new(MyObject)) +//	a.Implements((*MyInterface)(nil), new(MyObject))  func (a *Assertions) Implements(interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -600,7 +684,7 @@ func (a *Assertions) Implements(interfaceObject interface{}, object interface{},  // Implementsf asserts that an object is implemented by the specified interface.  // -//    a.Implementsf((*MyInterface)(nil), new(MyObject), "error message %s", "formatted") +//	a.Implementsf((*MyInterface)(nil), new(MyObject), "error message %s", "formatted")  func (a *Assertions) Implementsf(interfaceObject interface{}, object interface{}, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -610,7 +694,7 @@ func (a *Assertions) Implementsf(interfaceObject interface{}, object interface{}  // InDelta asserts that the two numerals are within delta of each other.  // -// 	 a.InDelta(math.Pi, 22/7.0, 0.01) +//	a.InDelta(math.Pi, 22/7.0, 0.01)  func (a *Assertions) InDelta(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -652,7 +736,7 @@ func (a *Assertions) InDeltaSlicef(expected interface{}, actual interface{}, del  // InDeltaf asserts that the two numerals are within delta of each other.  // -// 	 a.InDeltaf(math.Pi, 22/7.0, 0.01, "error message %s", "formatted") +//	a.InDeltaf(math.Pi, 22/7.0, 0.01, "error message %s", "formatted")  func (a *Assertions) InDeltaf(expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -694,9 +778,9 @@ func (a *Assertions) InEpsilonf(expected interface{}, actual interface{}, epsilo  // IsDecreasing asserts that the collection is decreasing  // -//    a.IsDecreasing([]int{2, 1, 0}) -//    a.IsDecreasing([]float{2, 1}) -//    a.IsDecreasing([]string{"b", "a"}) +//	a.IsDecreasing([]int{2, 1, 0}) +//	a.IsDecreasing([]float{2, 1}) +//	a.IsDecreasing([]string{"b", "a"})  func (a *Assertions) IsDecreasing(object interface{}, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -706,9 +790,9 @@ func (a *Assertions) IsDecreasing(object interface{}, msgAndArgs ...interface{})  // IsDecreasingf asserts that the collection is decreasing  // -//    a.IsDecreasingf([]int{2, 1, 0}, "error message %s", "formatted") -//    a.IsDecreasingf([]float{2, 1}, "error message %s", "formatted") -//    a.IsDecreasingf([]string{"b", "a"}, "error message %s", "formatted") +//	a.IsDecreasingf([]int{2, 1, 0}, "error message %s", "formatted") +//	a.IsDecreasingf([]float{2, 1}, "error message %s", "formatted") +//	a.IsDecreasingf([]string{"b", "a"}, "error message %s", "formatted")  func (a *Assertions) IsDecreasingf(object interface{}, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -718,9 +802,9 @@ func (a *Assertions) IsDecreasingf(object interface{}, msg string, args ...inter  // IsIncreasing asserts that the collection is increasing  // -//    a.IsIncreasing([]int{1, 2, 3}) -//    a.IsIncreasing([]float{1, 2}) -//    a.IsIncreasing([]string{"a", "b"}) +//	a.IsIncreasing([]int{1, 2, 3}) +//	a.IsIncreasing([]float{1, 2}) +//	a.IsIncreasing([]string{"a", "b"})  func (a *Assertions) IsIncreasing(object interface{}, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -730,9 +814,9 @@ func (a *Assertions) IsIncreasing(object interface{}, msgAndArgs ...interface{})  // IsIncreasingf asserts that the collection is increasing  // -//    a.IsIncreasingf([]int{1, 2, 3}, "error message %s", "formatted") -//    a.IsIncreasingf([]float{1, 2}, "error message %s", "formatted") -//    a.IsIncreasingf([]string{"a", "b"}, "error message %s", "formatted") +//	a.IsIncreasingf([]int{1, 2, 3}, "error message %s", "formatted") +//	a.IsIncreasingf([]float{1, 2}, "error message %s", "formatted") +//	a.IsIncreasingf([]string{"a", "b"}, "error message %s", "formatted")  func (a *Assertions) IsIncreasingf(object interface{}, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -742,9 +826,9 @@ func (a *Assertions) IsIncreasingf(object interface{}, msg string, args ...inter  // IsNonDecreasing asserts that the collection is not decreasing  // -//    a.IsNonDecreasing([]int{1, 1, 2}) -//    a.IsNonDecreasing([]float{1, 2}) -//    a.IsNonDecreasing([]string{"a", "b"}) +//	a.IsNonDecreasing([]int{1, 1, 2}) +//	a.IsNonDecreasing([]float{1, 2}) +//	a.IsNonDecreasing([]string{"a", "b"})  func (a *Assertions) IsNonDecreasing(object interface{}, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -754,9 +838,9 @@ func (a *Assertions) IsNonDecreasing(object interface{}, msgAndArgs ...interface  // IsNonDecreasingf asserts that the collection is not decreasing  // -//    a.IsNonDecreasingf([]int{1, 1, 2}, "error message %s", "formatted") -//    a.IsNonDecreasingf([]float{1, 2}, "error message %s", "formatted") -//    a.IsNonDecreasingf([]string{"a", "b"}, "error message %s", "formatted") +//	a.IsNonDecreasingf([]int{1, 1, 2}, "error message %s", "formatted") +//	a.IsNonDecreasingf([]float{1, 2}, "error message %s", "formatted") +//	a.IsNonDecreasingf([]string{"a", "b"}, "error message %s", "formatted")  func (a *Assertions) IsNonDecreasingf(object interface{}, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -766,9 +850,9 @@ func (a *Assertions) IsNonDecreasingf(object interface{}, msg string, args ...in  // IsNonIncreasing asserts that the collection is not increasing  // -//    a.IsNonIncreasing([]int{2, 1, 1}) -//    a.IsNonIncreasing([]float{2, 1}) -//    a.IsNonIncreasing([]string{"b", "a"}) +//	a.IsNonIncreasing([]int{2, 1, 1}) +//	a.IsNonIncreasing([]float{2, 1}) +//	a.IsNonIncreasing([]string{"b", "a"})  func (a *Assertions) IsNonIncreasing(object interface{}, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -778,9 +862,9 @@ func (a *Assertions) IsNonIncreasing(object interface{}, msgAndArgs ...interface  // IsNonIncreasingf asserts that the collection is not increasing  // -//    a.IsNonIncreasingf([]int{2, 1, 1}, "error message %s", "formatted") -//    a.IsNonIncreasingf([]float{2, 1}, "error message %s", "formatted") -//    a.IsNonIncreasingf([]string{"b", "a"}, "error message %s", "formatted") +//	a.IsNonIncreasingf([]int{2, 1, 1}, "error message %s", "formatted") +//	a.IsNonIncreasingf([]float{2, 1}, "error message %s", "formatted") +//	a.IsNonIncreasingf([]string{"b", "a"}, "error message %s", "formatted")  func (a *Assertions) IsNonIncreasingf(object interface{}, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -806,7 +890,7 @@ func (a *Assertions) IsTypef(expectedType interface{}, object interface{}, msg s  // JSONEq asserts that two JSON strings are equivalent.  // -//  a.JSONEq(`{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`) +//	a.JSONEq(`{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`)  func (a *Assertions) JSONEq(expected string, actual string, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -816,7 +900,7 @@ func (a *Assertions) JSONEq(expected string, actual string, msgAndArgs ...interf  // JSONEqf asserts that two JSON strings are equivalent.  // -//  a.JSONEqf(`{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`, "error message %s", "formatted") +//	a.JSONEqf(`{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`, "error message %s", "formatted")  func (a *Assertions) JSONEqf(expected string, actual string, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -827,7 +911,7 @@ func (a *Assertions) JSONEqf(expected string, actual string, msg string, args ..  // Len asserts that the specified object has specific length.  // Len also fails if the object has a type that len() not accept.  // -//    a.Len(mySlice, 3) +//	a.Len(mySlice, 3)  func (a *Assertions) Len(object interface{}, length int, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -838,7 +922,7 @@ func (a *Assertions) Len(object interface{}, length int, msgAndArgs ...interface  // Lenf asserts that the specified object has specific length.  // Lenf also fails if the object has a type that len() not accept.  // -//    a.Lenf(mySlice, 3, "error message %s", "formatted") +//	a.Lenf(mySlice, 3, "error message %s", "formatted")  func (a *Assertions) Lenf(object interface{}, length int, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -848,9 +932,9 @@ func (a *Assertions) Lenf(object interface{}, length int, msg string, args ...in  // Less asserts that the first element is less than the second  // -//    a.Less(1, 2) -//    a.Less(float64(1), float64(2)) -//    a.Less("a", "b") +//	a.Less(1, 2) +//	a.Less(float64(1), float64(2)) +//	a.Less("a", "b")  func (a *Assertions) Less(e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -860,10 +944,10 @@ func (a *Assertions) Less(e1 interface{}, e2 interface{}, msgAndArgs ...interfac  // LessOrEqual asserts that the first element is less than or equal to the second  // -//    a.LessOrEqual(1, 2) -//    a.LessOrEqual(2, 2) -//    a.LessOrEqual("a", "b") -//    a.LessOrEqual("b", "b") +//	a.LessOrEqual(1, 2) +//	a.LessOrEqual(2, 2) +//	a.LessOrEqual("a", "b") +//	a.LessOrEqual("b", "b")  func (a *Assertions) LessOrEqual(e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -873,10 +957,10 @@ func (a *Assertions) LessOrEqual(e1 interface{}, e2 interface{}, msgAndArgs ...i  // LessOrEqualf asserts that the first element is less than or equal to the second  // -//    a.LessOrEqualf(1, 2, "error message %s", "formatted") -//    a.LessOrEqualf(2, 2, "error message %s", "formatted") -//    a.LessOrEqualf("a", "b", "error message %s", "formatted") -//    a.LessOrEqualf("b", "b", "error message %s", "formatted") +//	a.LessOrEqualf(1, 2, "error message %s", "formatted") +//	a.LessOrEqualf(2, 2, "error message %s", "formatted") +//	a.LessOrEqualf("a", "b", "error message %s", "formatted") +//	a.LessOrEqualf("b", "b", "error message %s", "formatted")  func (a *Assertions) LessOrEqualf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -886,9 +970,9 @@ func (a *Assertions) LessOrEqualf(e1 interface{}, e2 interface{}, msg string, ar  // Lessf asserts that the first element is less than the second  // -//    a.Lessf(1, 2, "error message %s", "formatted") -//    a.Lessf(float64(1), float64(2), "error message %s", "formatted") -//    a.Lessf("a", "b", "error message %s", "formatted") +//	a.Lessf(1, 2, "error message %s", "formatted") +//	a.Lessf(float64(1), float64(2), "error message %s", "formatted") +//	a.Lessf("a", "b", "error message %s", "formatted")  func (a *Assertions) Lessf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -898,8 +982,8 @@ func (a *Assertions) Lessf(e1 interface{}, e2 interface{}, msg string, args ...i  // Negative asserts that the specified element is negative  // -//    a.Negative(-1) -//    a.Negative(-1.23) +//	a.Negative(-1) +//	a.Negative(-1.23)  func (a *Assertions) Negative(e interface{}, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -909,8 +993,8 @@ func (a *Assertions) Negative(e interface{}, msgAndArgs ...interface{}) {  // Negativef asserts that the specified element is negative  // -//    a.Negativef(-1, "error message %s", "formatted") -//    a.Negativef(-1.23, "error message %s", "formatted") +//	a.Negativef(-1, "error message %s", "formatted") +//	a.Negativef(-1.23, "error message %s", "formatted")  func (a *Assertions) Negativef(e interface{}, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -921,7 +1005,7 @@ func (a *Assertions) Negativef(e interface{}, msg string, args ...interface{}) {  // Never asserts that the given condition doesn't satisfy in waitFor time,  // periodically checking the target function each tick.  // -//    a.Never(func() bool { return false; }, time.Second, 10*time.Millisecond) +//	a.Never(func() bool { return false; }, time.Second, 10*time.Millisecond)  func (a *Assertions) Never(condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -932,7 +1016,7 @@ func (a *Assertions) Never(condition func() bool, waitFor time.Duration, tick ti  // Neverf asserts that the given condition doesn't satisfy in waitFor time,  // periodically checking the target function each tick.  // -//    a.Neverf(func() bool { return false; }, time.Second, 10*time.Millisecond, "error message %s", "formatted") +//	a.Neverf(func() bool { return false; }, time.Second, 10*time.Millisecond, "error message %s", "formatted")  func (a *Assertions) Neverf(condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -942,7 +1026,7 @@ func (a *Assertions) Neverf(condition func() bool, waitFor time.Duration, tick t  // Nil asserts that the specified object is nil.  // -//    a.Nil(err) +//	a.Nil(err)  func (a *Assertions) Nil(object interface{}, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -952,7 +1036,7 @@ func (a *Assertions) Nil(object interface{}, msgAndArgs ...interface{}) {  // Nilf asserts that the specified object is nil.  // -//    a.Nilf(err, "error message %s", "formatted") +//	a.Nilf(err, "error message %s", "formatted")  func (a *Assertions) Nilf(object interface{}, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -980,10 +1064,10 @@ func (a *Assertions) NoDirExistsf(path string, msg string, args ...interface{})  // NoError asserts that a function returned no error (i.e. `nil`).  // -//   actualObj, err := SomeFunction() -//   if a.NoError(err) { -// 	   assert.Equal(t, expectedObj, actualObj) -//   } +//	  actualObj, err := SomeFunction() +//	  if a.NoError(err) { +//		   assert.Equal(t, expectedObj, actualObj) +//	  }  func (a *Assertions) NoError(err error, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -993,10 +1077,10 @@ func (a *Assertions) NoError(err error, msgAndArgs ...interface{}) {  // NoErrorf asserts that a function returned no error (i.e. `nil`).  // -//   actualObj, err := SomeFunction() -//   if a.NoErrorf(err, "error message %s", "formatted") { -// 	   assert.Equal(t, expectedObj, actualObj) -//   } +//	  actualObj, err := SomeFunction() +//	  if a.NoErrorf(err, "error message %s", "formatted") { +//		   assert.Equal(t, expectedObj, actualObj) +//	  }  func (a *Assertions) NoErrorf(err error, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1025,9 +1109,9 @@ func (a *Assertions) NoFileExistsf(path string, msg string, args ...interface{})  // NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the  // specified substring or element.  // -//    a.NotContains("Hello World", "Earth") -//    a.NotContains(["Hello", "World"], "Earth") -//    a.NotContains({"Hello": "World"}, "Earth") +//	a.NotContains("Hello World", "Earth") +//	a.NotContains(["Hello", "World"], "Earth") +//	a.NotContains({"Hello": "World"}, "Earth")  func (a *Assertions) NotContains(s interface{}, contains interface{}, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1038,9 +1122,9 @@ func (a *Assertions) NotContains(s interface{}, contains interface{}, msgAndArgs  // NotContainsf asserts that the specified string, list(array, slice...) or map does NOT contain the  // specified substring or element.  // -//    a.NotContainsf("Hello World", "Earth", "error message %s", "formatted") -//    a.NotContainsf(["Hello", "World"], "Earth", "error message %s", "formatted") -//    a.NotContainsf({"Hello": "World"}, "Earth", "error message %s", "formatted") +//	a.NotContainsf("Hello World", "Earth", "error message %s", "formatted") +//	a.NotContainsf(["Hello", "World"], "Earth", "error message %s", "formatted") +//	a.NotContainsf({"Hello": "World"}, "Earth", "error message %s", "formatted")  func (a *Assertions) NotContainsf(s interface{}, contains interface{}, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1051,9 +1135,9 @@ func (a *Assertions) NotContainsf(s interface{}, contains interface{}, msg strin  // NotEmpty asserts that the specified object is NOT empty.  I.e. not nil, "", false, 0 or either  // a slice or a channel with len == 0.  // -//  if a.NotEmpty(obj) { -//    assert.Equal(t, "two", obj[1]) -//  } +//	if a.NotEmpty(obj) { +//	  assert.Equal(t, "two", obj[1]) +//	}  func (a *Assertions) NotEmpty(object interface{}, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1064,9 +1148,9 @@ func (a *Assertions) NotEmpty(object interface{}, msgAndArgs ...interface{}) {  // NotEmptyf asserts that the specified object is NOT empty.  I.e. not nil, "", false, 0 or either  // a slice or a channel with len == 0.  // -//  if a.NotEmptyf(obj, "error message %s", "formatted") { -//    assert.Equal(t, "two", obj[1]) -//  } +//	if a.NotEmptyf(obj, "error message %s", "formatted") { +//	  assert.Equal(t, "two", obj[1]) +//	}  func (a *Assertions) NotEmptyf(object interface{}, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1076,7 +1160,7 @@ func (a *Assertions) NotEmptyf(object interface{}, msg string, args ...interface  // NotEqual asserts that the specified values are NOT equal.  // -//    a.NotEqual(obj1, obj2) +//	a.NotEqual(obj1, obj2)  //  // Pointer variable equality is determined based on the equality of the  // referenced values (as opposed to the memory addresses). @@ -1089,7 +1173,7 @@ func (a *Assertions) NotEqual(expected interface{}, actual interface{}, msgAndAr  // NotEqualValues asserts that two objects are not equal even when converted to the same type  // -//    a.NotEqualValues(obj1, obj2) +//	a.NotEqualValues(obj1, obj2)  func (a *Assertions) NotEqualValues(expected interface{}, actual interface{}, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1099,7 +1183,7 @@ func (a *Assertions) NotEqualValues(expected interface{}, actual interface{}, ms  // NotEqualValuesf asserts that two objects are not equal even when converted to the same type  // -//    a.NotEqualValuesf(obj1, obj2, "error message %s", "formatted") +//	a.NotEqualValuesf(obj1, obj2, "error message %s", "formatted")  func (a *Assertions) NotEqualValuesf(expected interface{}, actual interface{}, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1109,7 +1193,7 @@ func (a *Assertions) NotEqualValuesf(expected interface{}, actual interface{}, m  // NotEqualf asserts that the specified values are NOT equal.  // -//    a.NotEqualf(obj1, obj2, "error message %s", "formatted") +//	a.NotEqualf(obj1, obj2, "error message %s", "formatted")  //  // Pointer variable equality is determined based on the equality of the  // referenced values (as opposed to the memory addresses). @@ -1140,7 +1224,7 @@ func (a *Assertions) NotErrorIsf(err error, target error, msg string, args ...in  // NotNil asserts that the specified object is not nil.  // -//    a.NotNil(err) +//	a.NotNil(err)  func (a *Assertions) NotNil(object interface{}, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1150,7 +1234,7 @@ func (a *Assertions) NotNil(object interface{}, msgAndArgs ...interface{}) {  // NotNilf asserts that the specified object is not nil.  // -//    a.NotNilf(err, "error message %s", "formatted") +//	a.NotNilf(err, "error message %s", "formatted")  func (a *Assertions) NotNilf(object interface{}, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1160,7 +1244,7 @@ func (a *Assertions) NotNilf(object interface{}, msg string, args ...interface{}  // NotPanics asserts that the code inside the specified PanicTestFunc does NOT panic.  // -//   a.NotPanics(func(){ RemainCalm() }) +//	a.NotPanics(func(){ RemainCalm() })  func (a *Assertions) NotPanics(f assert.PanicTestFunc, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1170,7 +1254,7 @@ func (a *Assertions) NotPanics(f assert.PanicTestFunc, msgAndArgs ...interface{}  // NotPanicsf asserts that the code inside the specified PanicTestFunc does NOT panic.  // -//   a.NotPanicsf(func(){ RemainCalm() }, "error message %s", "formatted") +//	a.NotPanicsf(func(){ RemainCalm() }, "error message %s", "formatted")  func (a *Assertions) NotPanicsf(f assert.PanicTestFunc, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1180,8 +1264,8 @@ func (a *Assertions) NotPanicsf(f assert.PanicTestFunc, msg string, args ...inte  // NotRegexp asserts that a specified regexp does not match a string.  // -//  a.NotRegexp(regexp.MustCompile("starts"), "it's starting") -//  a.NotRegexp("^start", "it's not starting") +//	a.NotRegexp(regexp.MustCompile("starts"), "it's starting") +//	a.NotRegexp("^start", "it's not starting")  func (a *Assertions) NotRegexp(rx interface{}, str interface{}, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1191,8 +1275,8 @@ func (a *Assertions) NotRegexp(rx interface{}, str interface{}, msgAndArgs ...in  // NotRegexpf asserts that a specified regexp does not match a string.  // -//  a.NotRegexpf(regexp.MustCompile("starts"), "it's starting", "error message %s", "formatted") -//  a.NotRegexpf("^start", "it's not starting", "error message %s", "formatted") +//	a.NotRegexpf(regexp.MustCompile("starts"), "it's starting", "error message %s", "formatted") +//	a.NotRegexpf("^start", "it's not starting", "error message %s", "formatted")  func (a *Assertions) NotRegexpf(rx interface{}, str interface{}, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1202,7 +1286,7 @@ func (a *Assertions) NotRegexpf(rx interface{}, str interface{}, msg string, arg  // NotSame asserts that two pointers do not reference the same object.  // -//    a.NotSame(ptr1, ptr2) +//	a.NotSame(ptr1, ptr2)  //  // Both arguments must be pointer variables. Pointer variable sameness is  // determined based on the equality of both type and value. @@ -1215,7 +1299,7 @@ func (a *Assertions) NotSame(expected interface{}, actual interface{}, msgAndArg  // NotSamef asserts that two pointers do not reference the same object.  // -//    a.NotSamef(ptr1, ptr2, "error message %s", "formatted") +//	a.NotSamef(ptr1, ptr2, "error message %s", "formatted")  //  // Both arguments must be pointer variables. Pointer variable sameness is  // determined based on the equality of both type and value. @@ -1229,7 +1313,7 @@ func (a *Assertions) NotSamef(expected interface{}, actual interface{}, msg stri  // NotSubset asserts that the specified list(array, slice...) contains not all  // elements given in the specified subset(array, slice...).  // -//    a.NotSubset([1, 3, 4], [1, 2], "But [1, 3, 4] does not contain [1, 2]") +//	a.NotSubset([1, 3, 4], [1, 2], "But [1, 3, 4] does not contain [1, 2]")  func (a *Assertions) NotSubset(list interface{}, subset interface{}, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1240,7 +1324,7 @@ func (a *Assertions) NotSubset(list interface{}, subset interface{}, msgAndArgs  // NotSubsetf asserts that the specified list(array, slice...) contains not all  // elements given in the specified subset(array, slice...).  // -//    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], "But [1, 3, 4] does not contain [1, 2]", "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() @@ -1266,7 +1350,7 @@ func (a *Assertions) NotZerof(i interface{}, msg string, args ...interface{}) {  // Panics asserts that the code inside the specified PanicTestFunc panics.  // -//   a.Panics(func(){ GoCrazy() }) +//	a.Panics(func(){ GoCrazy() })  func (a *Assertions) Panics(f assert.PanicTestFunc, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1278,7 +1362,7 @@ func (a *Assertions) Panics(f assert.PanicTestFunc, msgAndArgs ...interface{}) {  // panics, and that the recovered panic value is an error that satisfies the  // EqualError comparison.  // -//   a.PanicsWithError("crazy error", func(){ GoCrazy() }) +//	a.PanicsWithError("crazy error", func(){ GoCrazy() })  func (a *Assertions) PanicsWithError(errString string, f assert.PanicTestFunc, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1290,7 +1374,7 @@ func (a *Assertions) PanicsWithError(errString string, f assert.PanicTestFunc, m  // panics, and that the recovered panic value is an error that satisfies the  // EqualError comparison.  // -//   a.PanicsWithErrorf("crazy error", func(){ GoCrazy() }, "error message %s", "formatted") +//	a.PanicsWithErrorf("crazy error", func(){ GoCrazy() }, "error message %s", "formatted")  func (a *Assertions) PanicsWithErrorf(errString string, f assert.PanicTestFunc, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1301,7 +1385,7 @@ func (a *Assertions) PanicsWithErrorf(errString string, f assert.PanicTestFunc,  // PanicsWithValue asserts that the code inside the specified PanicTestFunc panics, and that  // the recovered panic value equals the expected panic value.  // -//   a.PanicsWithValue("crazy error", func(){ GoCrazy() }) +//	a.PanicsWithValue("crazy error", func(){ GoCrazy() })  func (a *Assertions) PanicsWithValue(expected interface{}, f assert.PanicTestFunc, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1312,7 +1396,7 @@ func (a *Assertions) PanicsWithValue(expected interface{}, f assert.PanicTestFun  // PanicsWithValuef asserts that the code inside the specified PanicTestFunc panics, and that  // the recovered panic value equals the expected panic value.  // -//   a.PanicsWithValuef("crazy error", func(){ GoCrazy() }, "error message %s", "formatted") +//	a.PanicsWithValuef("crazy error", func(){ GoCrazy() }, "error message %s", "formatted")  func (a *Assertions) PanicsWithValuef(expected interface{}, f assert.PanicTestFunc, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1322,7 +1406,7 @@ func (a *Assertions) PanicsWithValuef(expected interface{}, f assert.PanicTestFu  // Panicsf asserts that the code inside the specified PanicTestFunc panics.  // -//   a.Panicsf(func(){ GoCrazy() }, "error message %s", "formatted") +//	a.Panicsf(func(){ GoCrazy() }, "error message %s", "formatted")  func (a *Assertions) Panicsf(f assert.PanicTestFunc, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1332,8 +1416,8 @@ func (a *Assertions) Panicsf(f assert.PanicTestFunc, msg string, args ...interfa  // Positive asserts that the specified element is positive  // -//    a.Positive(1) -//    a.Positive(1.23) +//	a.Positive(1) +//	a.Positive(1.23)  func (a *Assertions) Positive(e interface{}, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1343,8 +1427,8 @@ func (a *Assertions) Positive(e interface{}, msgAndArgs ...interface{}) {  // Positivef asserts that the specified element is positive  // -//    a.Positivef(1, "error message %s", "formatted") -//    a.Positivef(1.23, "error message %s", "formatted") +//	a.Positivef(1, "error message %s", "formatted") +//	a.Positivef(1.23, "error message %s", "formatted")  func (a *Assertions) Positivef(e interface{}, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1354,8 +1438,8 @@ func (a *Assertions) Positivef(e interface{}, msg string, args ...interface{}) {  // Regexp asserts that a specified regexp matches a string.  // -//  a.Regexp(regexp.MustCompile("start"), "it's starting") -//  a.Regexp("start...$", "it's not starting") +//	a.Regexp(regexp.MustCompile("start"), "it's starting") +//	a.Regexp("start...$", "it's not starting")  func (a *Assertions) Regexp(rx interface{}, str interface{}, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1365,8 +1449,8 @@ func (a *Assertions) Regexp(rx interface{}, str interface{}, msgAndArgs ...inter  // Regexpf asserts that a specified regexp matches a string.  // -//  a.Regexpf(regexp.MustCompile("start"), "it's starting", "error message %s", "formatted") -//  a.Regexpf("start...$", "it's not starting", "error message %s", "formatted") +//	a.Regexpf(regexp.MustCompile("start"), "it's starting", "error message %s", "formatted") +//	a.Regexpf("start...$", "it's not starting", "error message %s", "formatted")  func (a *Assertions) Regexpf(rx interface{}, str interface{}, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1376,7 +1460,7 @@ func (a *Assertions) Regexpf(rx interface{}, str interface{}, msg string, args .  // Same asserts that two pointers reference the same object.  // -//    a.Same(ptr1, ptr2) +//	a.Same(ptr1, ptr2)  //  // Both arguments must be pointer variables. Pointer variable sameness is  // determined based on the equality of both type and value. @@ -1389,7 +1473,7 @@ func (a *Assertions) Same(expected interface{}, actual interface{}, msgAndArgs .  // Samef asserts that two pointers reference the same object.  // -//    a.Samef(ptr1, ptr2, "error message %s", "formatted") +//	a.Samef(ptr1, ptr2, "error message %s", "formatted")  //  // Both arguments must be pointer variables. Pointer variable sameness is  // determined based on the equality of both type and value. @@ -1403,7 +1487,7 @@ func (a *Assertions) Samef(expected interface{}, actual interface{}, msg string,  // Subset asserts that the specified list(array, slice...) contains all  // elements given in the specified subset(array, slice...).  // -//    a.Subset([1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]") +//	a.Subset([1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]")  func (a *Assertions) Subset(list interface{}, subset interface{}, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1414,7 +1498,7 @@ func (a *Assertions) Subset(list interface{}, subset interface{}, msgAndArgs ...  // Subsetf asserts that the specified list(array, slice...) contains all  // elements given in the specified subset(array, slice...).  // -//    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], "But [1, 2, 3] does contain [1, 2]", "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() @@ -1424,7 +1508,7 @@ func (a *Assertions) Subsetf(list interface{}, subset interface{}, msg string, a  // True asserts that the specified value is true.  // -//    a.True(myBool) +//	a.True(myBool)  func (a *Assertions) True(value bool, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1434,7 +1518,7 @@ func (a *Assertions) True(value bool, msgAndArgs ...interface{}) {  // Truef asserts that the specified value is true.  // -//    a.Truef(myBool, "error message %s", "formatted") +//	a.Truef(myBool, "error message %s", "formatted")  func (a *Assertions) Truef(value bool, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1444,7 +1528,7 @@ func (a *Assertions) Truef(value bool, msg string, args ...interface{}) {  // WithinDuration asserts that the two times are within duration delta of each other.  // -//   a.WithinDuration(time.Now(), time.Now(), 10*time.Second) +//	a.WithinDuration(time.Now(), time.Now(), 10*time.Second)  func (a *Assertions) WithinDuration(expected time.Time, actual time.Time, delta time.Duration, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1454,7 +1538,7 @@ func (a *Assertions) WithinDuration(expected time.Time, actual time.Time, delta  // WithinDurationf asserts that the two times are within duration delta of each other.  // -//   a.WithinDurationf(time.Now(), time.Now(), 10*time.Second, "error message %s", "formatted") +//	a.WithinDurationf(time.Now(), time.Now(), 10*time.Second, "error message %s", "formatted")  func (a *Assertions) WithinDurationf(expected time.Time, actual time.Time, delta time.Duration, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1464,7 +1548,7 @@ func (a *Assertions) WithinDurationf(expected time.Time, actual time.Time, delta  // WithinRange asserts that a time is within a time range (inclusive).  // -//   a.WithinRange(time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second)) +//	a.WithinRange(time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second))  func (a *Assertions) WithinRange(actual time.Time, start time.Time, end time.Time, msgAndArgs ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() @@ -1474,7 +1558,7 @@ func (a *Assertions) WithinRange(actual time.Time, start time.Time, end time.Tim  // WithinRangef asserts that a time is within a time range (inclusive).  // -//   a.WithinRangef(time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second), "error message %s", "formatted") +//	a.WithinRangef(time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second), "error message %s", "formatted")  func (a *Assertions) WithinRangef(actual time.Time, start time.Time, end time.Time, msg string, args ...interface{}) {  	if h, ok := a.t.(tHelper); ok {  		h.Helper() diff --git a/vendor/github.com/stretchr/testify/suite/doc.go b/vendor/github.com/stretchr/testify/suite/doc.go index f91a245d3..8d55a3aa8 100644 --- a/vendor/github.com/stretchr/testify/suite/doc.go +++ b/vendor/github.com/stretchr/testify/suite/doc.go @@ -29,37 +29,38 @@  // Suite object has assertion methods.  //  // A crude example: -//     // Basic imports -//     import ( -//         "testing" -//         "github.com/stretchr/testify/assert" -//         "github.com/stretchr/testify/suite" -//     )  // -//     // Define the suite, and absorb the built-in basic suite -//     // functionality from testify - including a T() method which -//     // returns the current testing context -//     type ExampleTestSuite struct { -//         suite.Suite -//         VariableThatShouldStartAtFive int -//     } +//	// Basic imports +//	import ( +//	    "testing" +//	    "github.com/stretchr/testify/assert" +//	    "github.com/stretchr/testify/suite" +//	)  // -//     // Make sure that VariableThatShouldStartAtFive is set to five -//     // before each test -//     func (suite *ExampleTestSuite) SetupTest() { -//         suite.VariableThatShouldStartAtFive = 5 -//     } +//	// Define the suite, and absorb the built-in basic suite +//	// functionality from testify - including a T() method which +//	// returns the current testing context +//	type ExampleTestSuite struct { +//	    suite.Suite +//	    VariableThatShouldStartAtFive int +//	}  // -//     // All methods that begin with "Test" are run as tests within a -//     // suite. -//     func (suite *ExampleTestSuite) TestExample() { -//         assert.Equal(suite.T(), 5, suite.VariableThatShouldStartAtFive) -//         suite.Equal(5, suite.VariableThatShouldStartAtFive) -//     } +//	// Make sure that VariableThatShouldStartAtFive is set to five +//	// before each test +//	func (suite *ExampleTestSuite) SetupTest() { +//	    suite.VariableThatShouldStartAtFive = 5 +//	}  // -//     // In order for 'go test' to run this suite, we need to create -//     // a normal test function and pass our suite to suite.Run -//     func TestExampleTestSuite(t *testing.T) { -//         suite.Run(t, new(ExampleTestSuite)) -//     } +//	// All methods that begin with "Test" are run as tests within a +//	// suite. +//	func (suite *ExampleTestSuite) TestExample() { +//	    assert.Equal(suite.T(), 5, suite.VariableThatShouldStartAtFive) +//	    suite.Equal(5, suite.VariableThatShouldStartAtFive) +//	} +// +//	// In order for 'go test' to run this suite, we need to create +//	// a normal test function and pass our suite to suite.Run +//	func TestExampleTestSuite(t *testing.T) { +//	    suite.Run(t, new(ExampleTestSuite)) +//	}  package suite | 
