diff --git a/vendor/github.com/onsi/gomega/CHANGELOG.md b/vendor/github.com/onsi/gomega/CHANGELOG.md index f2181a8cc..4783c0d43 100644 --- a/vendor/github.com/onsi/gomega/CHANGELOG.md +++ b/vendor/github.com/onsi/gomega/CHANGELOG.md @@ -1,20 +1,3 @@ -## 1.14.0 - -### Features -- gmeasure.SamplingConfig now suppers a MinSamplingInterval [e94dbca] -- Eventually and Consistently support functions that make assertions [2f04e6e] - - Eventually and Consistently now allow their passed-in functions to make assertions. - These assertions must pass or the function is considered to have failed and is retried. - - Eventually and Consistently can now take functions with no return values. These implicitly return nil - if they contain no failed assertion. Otherwise they return an error wrapping the first assertion failure. This allows - these functions to be used with the Succeed() matcher. - - Introduce InterceptGomegaFailure - an analogue to InterceptGomegaFailures - that captures the first assertion failure - and halts execution in its passed-in callback. - -### Fixes -- Call Verify GHTTPWithGomega receiver funcs (#454) [496e6fd] -- Build a binary with an expected name (#446) [7356360] - ## 1.13.0 ### Features diff --git a/vendor/github.com/onsi/gomega/README.md b/vendor/github.com/onsi/gomega/README.md index d45a8c4e5..76aa6b558 100644 --- a/vendor/github.com/onsi/gomega/README.md +++ b/vendor/github.com/onsi/gomega/README.md @@ -1,6 +1,6 @@ ![Gomega: Ginkgo's Preferred Matcher Library](http://onsi.github.io/gomega/images/gomega.png) -[![test](https://github.com/onsi/gomega/actions/workflows/test.yml/badge.svg)](https://github.com/onsi/gomega/actions/workflows/test.yml) +[![Build Status](https://travis-ci.org/onsi/gomega.svg?branch=master)](https://travis-ci.org/onsi/gomega) Jump straight to the [docs](http://onsi.github.io/gomega/) to learn about Gomega, including a list of [all available matchers](http://onsi.github.io/gomega/#provided-matchers). diff --git a/vendor/github.com/onsi/gomega/gexec/build.go b/vendor/github.com/onsi/gomega/gexec/build.go index 576fc8ee4..c7aba62b7 100644 --- a/vendor/github.com/onsi/gomega/gexec/build.go +++ b/vendor/github.com/onsi/gomega/gexec/build.go @@ -3,6 +3,8 @@ package gexec import ( + "crypto/md5" + "encoding/hex" "errors" "fmt" "go/build" @@ -195,7 +197,9 @@ func newExecutablePath(gopath, packagePath string, suffixes ...string) (string, return "", errors.New("$GOPATH not provided when building " + packagePath) } - executable := filepath.Join(tmpDir, path.Base(packagePath)) + hash := md5.Sum([]byte(packagePath)) + filename := fmt.Sprintf("%s-%x%s", path.Base(packagePath), hex.EncodeToString(hash[:]), strings.Join(suffixes, "")) + executable := filepath.Join(tmpDir, filename) if runtime.GOOS == "windows" { executable += ".exe" diff --git a/vendor/github.com/onsi/gomega/ghttp/handlers.go b/vendor/github.com/onsi/gomega/ghttp/handlers.go index 99a25bf5d..efb96a25e 100644 --- a/vendor/github.com/onsi/gomega/ghttp/handlers.go +++ b/vendor/github.com/onsi/gomega/ghttp/handlers.go @@ -109,7 +109,7 @@ func (g GHTTPWithGomega) VerifyHeader(header http.Header) http.HandlerFunc { //(recall that a `http.Header` is a mapping from string (key) to []string (values)) //It is a convenience wrapper around `VerifyHeader` that allows you to avoid having to create an `http.Header` object. func (g GHTTPWithGomega) VerifyHeaderKV(key string, values ...string) http.HandlerFunc { - return g.VerifyHeader(http.Header{key: values}) + return VerifyHeader(http.Header{key: values}) } //VerifyBody returns a handler that verifies that the body of the request matches the passed in byte array. @@ -131,7 +131,7 @@ func (g GHTTPWithGomega) VerifyBody(expectedBody []byte) http.HandlerFunc { //VerifyJSON also verifies that the request's content type is application/json func (g GHTTPWithGomega) VerifyJSON(expectedJSON string) http.HandlerFunc { return CombineHandlers( - g.VerifyMimeType("application/json"), + VerifyMimeType("application/json"), func(w http.ResponseWriter, req *http.Request) { body, err := ioutil.ReadAll(req.Body) req.Body.Close() @@ -148,8 +148,8 @@ func (g GHTTPWithGomega) VerifyJSONRepresenting(object interface{}) http.Handler data, err := json.Marshal(object) g.gomega.Expect(err).ShouldNot(HaveOccurred()) return CombineHandlers( - g.VerifyMimeType("application/json"), - g.VerifyJSON(string(data)), + VerifyMimeType("application/json"), + VerifyJSON(string(data)), ) } @@ -171,7 +171,7 @@ func (g GHTTPWithGomega) VerifyForm(values url.Values) http.HandlerFunc { // //It is a convenience wrapper around `VerifyForm` that lets you avoid having to create a `url.Values` object. func (g GHTTPWithGomega) VerifyFormKV(key string, values ...string) http.HandlerFunc { - return g.VerifyForm(url.Values{key: values}) + return VerifyForm(url.Values{key: values}) } //VerifyProtoRepresenting returns a handler that verifies that the body of the request is a valid protobuf @@ -180,7 +180,7 @@ func (g GHTTPWithGomega) VerifyFormKV(key string, values ...string) http.Handler //VerifyProtoRepresenting also verifies that the request's content type is application/x-protobuf func (g GHTTPWithGomega) VerifyProtoRepresenting(expected proto.Message) http.HandlerFunc { return CombineHandlers( - g.VerifyContentType("application/x-protobuf"), + VerifyContentType("application/x-protobuf"), func(w http.ResponseWriter, req *http.Request) { body, err := ioutil.ReadAll(req.Body) g.gomega.Expect(err).ShouldNot(HaveOccurred()) diff --git a/vendor/github.com/onsi/gomega/go.mod b/vendor/github.com/onsi/gomega/go.mod index 62b8f396c..f74d9ea10 100644 --- a/vendor/github.com/onsi/gomega/go.mod +++ b/vendor/github.com/onsi/gomega/go.mod @@ -4,7 +4,7 @@ go 1.14 require ( github.com/golang/protobuf v1.5.2 - github.com/onsi/ginkgo v1.16.4 + github.com/onsi/ginkgo v1.16.2 golang.org/x/net v0.0.0-20210428140749-89ef3d95e781 gopkg.in/yaml.v2 v2.4.0 ) diff --git a/vendor/github.com/onsi/gomega/go.sum b/vendor/github.com/onsi/gomega/go.sum index 177d5e876..1ae731a5c 100644 --- a/vendor/github.com/onsi/gomega/go.sum +++ b/vendor/github.com/onsi/gomega/go.sum @@ -3,7 +3,6 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= @@ -26,8 +25,8 @@ github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= -github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +github.com/onsi/ginkgo v1.16.2 h1:HFB2fbVIlhIfCfOW81bZFbiC/RvnpXSdhbF2/DJr134= +github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvwxz1E= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -67,7 +66,6 @@ golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e h1:4nW4NLDYnU28ojHaHO8OVxFHk/aQ33U01a9cjED+pzE= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/vendor/github.com/onsi/gomega/gomega_dsl.go b/vendor/github.com/onsi/gomega/gomega_dsl.go index 67f6e45c1..a05b34b27 100644 --- a/vendor/github.com/onsi/gomega/gomega_dsl.go +++ b/vendor/github.com/onsi/gomega/gomega_dsl.go @@ -14,7 +14,6 @@ Gomega is MIT-Licensed package gomega import ( - "errors" "fmt" "reflect" "time" @@ -25,7 +24,7 @@ import ( "github.com/onsi/gomega/types" ) -const GOMEGA_VERSION = "1.14.0" +const GOMEGA_VERSION = "1.13.0" const nilFailHandlerPanic = `You are trying to make an assertion, but Gomega's fail handler is nil. If you're using Ginkgo then you probably forgot to put your assertion in an It(). @@ -92,8 +91,10 @@ func RegisterTestingT(t types.GomegaTestingT) { // InterceptGomegaFailures runs a given callback and returns an array of // failure messages generated by any Gomega assertions within the callback. -// Exeuction continues after the first failure allowing users to collect all failures -// in the callback. +// +// This is accomplished by temporarily replacing the *global* fail handler +// with a fail handler that simply annotates failures. The original fail handler +// is reset when InterceptGomegaFailures returns. // // This is most useful when testing custom matchers, but can also be used to check // on a value using a Gomega assertion without causing a test failure. @@ -103,39 +104,11 @@ func InterceptGomegaFailures(f func()) []string { RegisterFailHandler(func(message string, callerSkip ...int) { failures = append(failures, message) }) - defer func() { - RegisterFailHandler(originalHandler) - }() f() + RegisterFailHandler(originalHandler) return failures } -// InterceptGomegaFailure runs a given callback and returns the first -// failure message generated by any Gomega assertions within the callback, wrapped in an error. -// -// The callback ceases execution as soon as the first failed assertion occurs, however Gomega -// does not register a failure with the FailHandler registered via RegisterFailHandler - it is up -// to the user to decide what to do with the returned error -func InterceptGomegaFailure(f func()) (err error) { - originalHandler := globalFailWrapper.Fail - RegisterFailHandler(func(message string, callerSkip ...int) { - err = errors.New(message) - panic("stop execution") - }) - - defer func() { - RegisterFailHandler(originalHandler) - if e := recover(); e != nil { - if err == nil { - panic(e) - } - } - }() - - f() - return err -} - // Ω wraps an actual value allowing assertions to be made on it: // Ω("foo").Should(Equal("foo")) // @@ -204,7 +177,7 @@ func ExpectWithOffset(offset int, actual interface{}, extra ...interface{}) Asse // Both intervals can either be specified as time.Duration, parsable duration strings or as floats/integers. In the // last case they are interpreted as seconds. // -// If Eventually is passed an actual that is a function taking no arguments, +// If Eventually is passed an actual that is a function taking no arguments and returning at least one value, // then Eventually will call the function periodically and try the matcher against the function's first return value. // // Example: @@ -229,34 +202,6 @@ func ExpectWithOffset(offset int, actual interface{}, extra ...interface{}) Asse // // Will pass only if the the returned error is nil and the returned string passes the matcher. // -// Eventually allows you to make assertions in the pased-in function. The function is assumed to have failed and will be retried if any assertion in the function fails. -// For example: -// -// Eventually(func() Widget { -// resp, err := http.Get(url) -// Expect(err).NotTo(HaveOccurred()) -// defer resp.Body.Close() -// Expect(resp.SatusCode).To(Equal(http.StatusOK)) -// var widget Widget -// Expect(json.NewDecoder(resp.Body).Decode(&widget)).To(Succeed()) -// return widget -// }).Should(Equal(expectedWidget)) -// -// will keep trying the passed-in function until all its assertsions pass (i.e. the http request succeeds) _and_ the returned object satisfies the passed-in matcher. -// -// Functions passed to Eventually typically have a return value. However you are allowed to pass in a function with no return value. Eventually assumes such a function -// is making assertions and will turn it into a function that returns an error if any assertion fails, or nil if no assertion fails. This allows you to use the Succeed() matcher -// to express that a complex operation should eventually succeed. For example: -// -// Eventually(func() { -// model, err := db.Find("foo") -// Expect(err).NotTo(HaveOccurred()) -// Expect(model.Reticulated()).To(BeTrue()) -// Expect(model.Save()).To(Succeed()) -// }).Should(Succeed()) -// -// will rerun the function until all its assertions pass. -// // Eventually's default timeout is 1 second, and its default polling interval is 10ms func Eventually(actual interface{}, intervals ...interface{}) AsyncAssertion { return EventuallyWithOffset(0, actual, intervals...) @@ -290,18 +235,13 @@ func EventuallyWithOffset(offset int, actual interface{}, intervals ...interface // Both intervals can either be specified as time.Duration, parsable duration strings or as floats/integers. In the // last case they are interpreted as seconds. // -// If Consistently is passed an actual that is a function taking no arguments. -// -// If the function returns one value, then Consistently will call the function periodically and try the matcher against the function's first return value. +// If Consistently is passed an actual that is a function taking no arguments and returning at least one value, +// then Consistently will call the function periodically and try the matcher against the function's first return value. // // If the function returns more than one value, then Consistently will pass the first value to the matcher and // assert that all other values are nil/zero. // This allows you to pass Consistently a function that returns a value and an error - a common pattern in Go. // -// Like Eventually, Consistently allows you to make assertions in the function. If any assertion fails Consistently will fail. In addition, -// Consistently also allows you to pass in a function with no return value. In this case Consistently can be paired with the Succeed() matcher to assert -// that no assertions in the function fail. -// // Consistently is useful in cases where you want to assert that something *does not happen* over a period of time. // For example, you want to assert that a goroutine does *not* send data down a channel. In this case, you could: // @@ -410,7 +350,7 @@ type OmegaMatcher types.GomegaMatcher // // Use `NewWithT` to instantiate a `WithT` type WithT struct { - failWrapper *types.GomegaFailWrapper + t types.GomegaTestingT } // GomegaWithT is deprecated in favor of gomega.WithT, which does not stutter. @@ -427,7 +367,7 @@ type GomegaWithT = WithT // } func NewWithT(t types.GomegaTestingT) *WithT { return &WithT{ - failWrapper: testingtsupport.BuildTestingTGomegaFailWrapper(t), + t: t, } } @@ -438,7 +378,7 @@ func NewGomegaWithT(t types.GomegaTestingT) *GomegaWithT { // ExpectWithOffset is used to make assertions. See documentation for ExpectWithOffset. func (g *WithT) ExpectWithOffset(offset int, actual interface{}, extra ...interface{}) Assertion { - return assertion.New(actual, g.failWrapper, offset, extra...) + return assertion.New(actual, testingtsupport.BuildTestingTGomegaFailWrapper(g.t), offset, extra...) } // EventuallyWithOffset is used to make asynchronous assertions. See documentation for EventuallyWithOffset. @@ -451,7 +391,7 @@ func (g *WithT) EventuallyWithOffset(offset int, actual interface{}, intervals . if len(intervals) > 1 { pollingInterval = toDuration(intervals[1]) } - return asyncassertion.New(asyncassertion.AsyncAssertionTypeEventually, actual, g.failWrapper, timeoutInterval, pollingInterval, offset) + return asyncassertion.New(asyncassertion.AsyncAssertionTypeEventually, actual, testingtsupport.BuildTestingTGomegaFailWrapper(g.t), timeoutInterval, pollingInterval, offset) } // ConsistentlyWithOffset is used to make asynchronous assertions. See documentation for ConsistentlyWithOffset. @@ -464,7 +404,7 @@ func (g *WithT) ConsistentlyWithOffset(offset int, actual interface{}, intervals if len(intervals) > 1 { pollingInterval = toDuration(intervals[1]) } - return asyncassertion.New(asyncassertion.AsyncAssertionTypeConsistently, actual, g.failWrapper, timeoutInterval, pollingInterval, offset) + return asyncassertion.New(asyncassertion.AsyncAssertionTypeConsistently, actual, testingtsupport.BuildTestingTGomegaFailWrapper(g.t), timeoutInterval, pollingInterval, offset) } // Expect is used to make assertions. See documentation for Expect. diff --git a/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion.go b/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion.go index 6aa02bc5d..5204836bf 100644 --- a/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion.go +++ b/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion.go @@ -6,7 +6,6 @@ import ( "errors" "fmt" "reflect" - "runtime" "time" "github.com/onsi/gomega/internal/oraclematcher" @@ -32,8 +31,8 @@ type AsyncAssertion struct { func New(asyncType AsyncAssertionType, actualInput interface{}, failWrapper *types.GomegaFailWrapper, timeoutInterval time.Duration, pollingInterval time.Duration, offset int) *AsyncAssertion { actualType := reflect.TypeOf(actualInput) if actualType.Kind() == reflect.Func { - if actualType.NumIn() != 0 { - panic("Expected a function with no arguments and zero or more return values.") + if actualType.NumIn() != 0 || actualType.NumOut() == 0 { + panic("Expected a function with no arguments and one or more return values.") } } @@ -71,49 +70,13 @@ func (assertion *AsyncAssertion) buildDescription(optionalDescription ...interfa func (assertion *AsyncAssertion) actualInputIsAFunction() bool { actualType := reflect.TypeOf(assertion.actualInput) - return actualType.Kind() == reflect.Func && actualType.NumIn() == 0 + return actualType.Kind() == reflect.Func && actualType.NumIn() == 0 && actualType.NumOut() > 0 } func (assertion *AsyncAssertion) pollActual() (interface{}, error) { - if !assertion.actualInputIsAFunction() { - return assertion.actualInput, nil - } - var capturedAssertionFailure string - var values []reflect.Value - - numOut := reflect.TypeOf(assertion.actualInput).NumOut() - - func() { - originalHandler := assertion.failWrapper.Fail - assertion.failWrapper.Fail = func(message string, callerSkip ...int) { - skip := 0 - if len(callerSkip) > 0 { - skip = callerSkip[0] - } - _, file, line, _ := runtime.Caller(skip + 1) - capturedAssertionFailure = fmt.Sprintf("Assertion in callback at %s:%d failed:\n%s", file, line, message) - panic("stop execution") - } - - defer func() { - assertion.failWrapper.Fail = originalHandler - if e := recover(); e != nil && capturedAssertionFailure == "" { - panic(e) - } - }() - - values = reflect.ValueOf(assertion.actualInput).Call([]reflect.Value{}) - }() - - if capturedAssertionFailure != "" { - if numOut == 0 { - return errors.New(capturedAssertionFailure), nil - } else { - return nil, errors.New(capturedAssertionFailure) - } - } + if assertion.actualInputIsAFunction() { + values := reflect.ValueOf(assertion.actualInput).Call([]reflect.Value{}) - if numOut > 0 { extras := []interface{}{} for _, value := range values[1:] { extras = append(extras, value.Interface()) @@ -128,7 +91,7 @@ func (assertion *AsyncAssertion) pollActual() (interface{}, error) { return values[0].Interface(), nil } - return nil, nil + return assertion.actualInput, nil } func (assertion *AsyncAssertion) matcherMayChange(matcher types.GomegaMatcher, value interface{}) bool { diff --git a/vendor/modules.txt b/vendor/modules.txt index f16d6c062..741cd8ba3 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -142,7 +142,7 @@ github.com/onsi/ginkgo/reporters/stenographer github.com/onsi/ginkgo/reporters/stenographer/support/go-colorable github.com/onsi/ginkgo/reporters/stenographer/support/go-isatty github.com/onsi/ginkgo/types -# github.com/onsi/gomega v1.14.0 +# github.com/onsi/gomega v1.13.0 ## explicit github.com/onsi/gomega github.com/onsi/gomega/format