mirror of
https://git.mirrors.martin98.com/https://github.com/ceph/ceph-csi.git
synced 2025-04-18 11:49:57 +08:00
![dependabot[bot]](/assets/img/avatar_default.png)
Bumps the github-dependencies group in /e2e with 2 updates: [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo) and [github.com/onsi/gomega](https://github.com/onsi/gomega). Updates `github.com/onsi/ginkgo/v2` from 2.23.0 to 2.23.3 - [Release notes](https://github.com/onsi/ginkgo/releases) - [Changelog](https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/ginkgo/compare/v2.23.0...v2.23.3) Updates `github.com/onsi/gomega` from 1.36.2 to 1.36.3 - [Release notes](https://github.com/onsi/gomega/releases) - [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/gomega/compare/v1.36.2...v1.36.3) --- updated-dependencies: - dependency-name: github.com/onsi/ginkgo/v2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-dependencies - dependency-name: github.com/onsi/gomega dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-dependencies ... Signed-off-by: dependabot[bot] <support@github.com>
55 lines
1.6 KiB
Go
55 lines
1.6 KiB
Go
package matchers
|
|
|
|
import (
|
|
"errors"
|
|
"reflect"
|
|
|
|
"github.com/onsi/gomega/format"
|
|
"github.com/onsi/gomega/types"
|
|
)
|
|
|
|
const maxIndirections = 31
|
|
|
|
type HaveValueMatcher struct {
|
|
Matcher types.GomegaMatcher // the matcher to apply to the "resolved" actual value.
|
|
resolvedActual any // the ("resolved") value.
|
|
}
|
|
|
|
func (m *HaveValueMatcher) Match(actual any) (bool, error) {
|
|
val := reflect.ValueOf(actual)
|
|
for allowedIndirs := maxIndirections; allowedIndirs > 0; allowedIndirs-- {
|
|
// return an error if value isn't valid. Please note that we cannot
|
|
// check for nil here, as we might not deal with a pointer or interface
|
|
// at this point.
|
|
if !val.IsValid() {
|
|
return false, errors.New(format.Message(
|
|
actual, "not to be <nil>"))
|
|
}
|
|
switch val.Kind() {
|
|
case reflect.Ptr, reflect.Interface:
|
|
// resolve pointers and interfaces to their values, then rinse and
|
|
// repeat.
|
|
if val.IsNil() {
|
|
return false, errors.New(format.Message(
|
|
actual, "not to be <nil>"))
|
|
}
|
|
val = val.Elem()
|
|
continue
|
|
default:
|
|
// forward the final value to the specified matcher.
|
|
m.resolvedActual = val.Interface()
|
|
return m.Matcher.Match(m.resolvedActual)
|
|
}
|
|
}
|
|
// too many indirections: extreme star gazing, indeed...?
|
|
return false, errors.New(format.Message(actual, "too many indirections"))
|
|
}
|
|
|
|
func (m *HaveValueMatcher) FailureMessage(_ any) (message string) {
|
|
return m.Matcher.FailureMessage(m.resolvedActual)
|
|
}
|
|
|
|
func (m *HaveValueMatcher) NegatedFailureMessage(_ any) (message string) {
|
|
return m.Matcher.NegatedFailureMessage(m.resolvedActual)
|
|
}
|