|  | package matchers_test | 
|  |  | 
|  | import ( | 
|  | "errors" | 
|  | . "github.com/onsi/ginkgo" | 
|  | . "github.com/onsi/gomega" | 
|  | . "github.com/onsi/gomega/matchers" | 
|  | ) | 
|  |  | 
|  | type CustomErr struct { | 
|  | msg string | 
|  | } | 
|  |  | 
|  | func (e *CustomErr) Error() string { | 
|  | return e.msg | 
|  | } | 
|  |  | 
|  | var _ = Describe("HaveOccurred", func() { | 
|  | It("should succeed if matching an error", func() { | 
|  | Ω(errors.New("Foo")).Should(HaveOccurred()) | 
|  | }) | 
|  |  | 
|  | It("should not succeed with nil", func() { | 
|  | Ω(nil).ShouldNot(HaveOccurred()) | 
|  | }) | 
|  |  | 
|  | It("should only support errors and nil", func() { | 
|  | success, err := (&HaveOccurredMatcher{}).Match("foo") | 
|  | Ω(success).Should(BeFalse()) | 
|  | Ω(err).Should(HaveOccurred()) | 
|  |  | 
|  | success, err = (&HaveOccurredMatcher{}).Match("") | 
|  | Ω(success).Should(BeFalse()) | 
|  | Ω(err).Should(HaveOccurred()) | 
|  | }) | 
|  |  | 
|  | It("doesn't support non-error type", func() { | 
|  | success, err := (&HaveOccurredMatcher{}).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 := (&HaveOccurredMatcher{}).Match(&AnyType{}) | 
|  | Ω(success).Should(BeFalse()) | 
|  | Ω(err).Should(MatchError(MatchRegexp(`Expected an error-type.  Got:\n    <*matchers_test.AnyType | 0x[[:xdigit:]]+>: {}`))) | 
|  | }) | 
|  |  | 
|  | It("should succeed with pointer types that conform to error interface", func() { | 
|  | err := &CustomErr{"ohai"} | 
|  | Ω(err).Should(HaveOccurred()) | 
|  | }) | 
|  |  | 
|  | It("should not succeed with nil pointers to types that conform to error interface", func() { | 
|  | var err *CustomErr = nil | 
|  | Ω(err).ShouldNot(HaveOccurred()) | 
|  | }) | 
|  | }) |