package matchers_test import ( "errors" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" . "github.com/onsi/gomega/matchers" ) func Erroring() error { return errors.New("bam") } func NotErroring() error { return nil } type AnyType struct{} func Invalid() *AnyType { return nil } var _ = Describe("Succeed", func() { It("should succeed if the function succeeds", func() { Ω(NotErroring()).Should(Succeed()) }) It("should succeed (in the negated) if the function errored", func() { Ω(Erroring()).ShouldNot(Succeed()) }) It("should not if passed a non-error", func() { success, err := (&SucceedMatcher{}).Match(Invalid()) Ω(success).Should(BeFalse()) Ω(err).Should(MatchError("Expected an error-type. Got:\n <*matchers_test.AnyType | 0x0>: nil")) }) It("doesn't support non-error type", func() { success, err := (&SucceedMatcher{}).Match(AnyType{}) Ω(success).Should(BeFalse()) Ω(err).Should(MatchError("Expected an error-type. Got:\n : {}")) }) It("doesn't support non-error pointer type", func() { success, err := (&SucceedMatcher{}).Match(&AnyType{}) Ω(success).Should(BeFalse()) Ω(err).Should(MatchError(MatchRegexp(`Expected an error-type. Got:\n <*matchers_test.AnyType | 0x[[:xdigit:]]+>: {}`))) }) It("should not succeed with pointer types that conform to error interface", func() { err := &CustomErr{"ohai"} Ω(err).ShouldNot(Succeed()) }) It("should succeed with nil pointers to types that conform to error interface", func() { var err *CustomErr = nil Ω(err).Should(Succeed()) }) })