| 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()) | 
 | 	}) | 
 | }) |