63 lines
1.6 KiB
Go
63 lines
1.6 KiB
Go
|
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())
|
||
|
})
|
||
|
|
||
|
})
|