diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2021-09-16 15:05:28 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-16 15:05:28 -0400 |
commit | 2a30b60666001b7039aaf5318ffeaa0374433f27 (patch) | |
tree | 421afa18f2bdb6c03d2be3872b6135efdf8282da /vendor/github.com/onsi/gomega/gstruct/pointer.go | |
parent | fcb22e82b518bd8de31bc152b78d2cbc6ab09964 (diff) | |
parent | 29edeaa892df2f533f997adb0736f09a6f8e0965 (diff) | |
download | podman-2a30b60666001b7039aaf5318ffeaa0374433f27.tar.gz podman-2a30b60666001b7039aaf5318ffeaa0374433f27.tar.bz2 podman-2a30b60666001b7039aaf5318ffeaa0374433f27.zip |
Merge pull request #11598 from mheon/34_backportsreleasenotes
Backports and release notes for v3.4.0-RC1
Diffstat (limited to 'vendor/github.com/onsi/gomega/gstruct/pointer.go')
-rw-r--r-- | vendor/github.com/onsi/gomega/gstruct/pointer.go | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/vendor/github.com/onsi/gomega/gstruct/pointer.go b/vendor/github.com/onsi/gomega/gstruct/pointer.go new file mode 100644 index 000000000..cc828a325 --- /dev/null +++ b/vendor/github.com/onsi/gomega/gstruct/pointer.go @@ -0,0 +1,58 @@ +// untested sections: 3 + +package gstruct + +import ( + "fmt" + "reflect" + + "github.com/onsi/gomega/format" + "github.com/onsi/gomega/types" +) + +//PointTo applies the given matcher to the value pointed to by actual. It fails if the pointer is +//nil. +// actual := 5 +// Expect(&actual).To(PointTo(Equal(5))) +func PointTo(matcher types.GomegaMatcher) types.GomegaMatcher { + return &PointerMatcher{ + Matcher: matcher, + } +} + +type PointerMatcher struct { + Matcher types.GomegaMatcher + + // Failure message. + failure string +} + +func (m *PointerMatcher) Match(actual interface{}) (bool, error) { + val := reflect.ValueOf(actual) + + // return error if actual type is not a pointer + if val.Kind() != reflect.Ptr { + return false, fmt.Errorf("PointerMatcher expects a pointer but we have '%s'", val.Kind()) + } + + if !val.IsValid() || val.IsNil() { + m.failure = format.Message(actual, "not to be <nil>") + return false, nil + } + + // Forward the value. + elem := val.Elem().Interface() + match, err := m.Matcher.Match(elem) + if !match { + m.failure = m.Matcher.FailureMessage(elem) + } + return match, err +} + +func (m *PointerMatcher) FailureMessage(_ interface{}) (message string) { + return m.failure +} + +func (m *PointerMatcher) NegatedFailureMessage(actual interface{}) (message string) { + return m.Matcher.NegatedFailureMessage(actual) +} |