| 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 <matchers_test.AnyType>: {}")) |
| }) |
| |
| 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()) |
| }) |
| |
| }) |