forked from mystiq/dex
25 lines
812 B
Go
25 lines
812 B
Go
package oraclematcher
|
|
|
|
import "github.com/onsi/gomega/types"
|
|
|
|
/*
|
|
GomegaMatchers that also match the OracleMatcher interface can convey information about
|
|
whether or not their result will change upon future attempts.
|
|
|
|
This allows `Eventually` and `Consistently` to short circuit if success becomes impossible.
|
|
|
|
For example, a process' exit code can never change. So, gexec's Exit matcher returns `true`
|
|
for `MatchMayChangeInTheFuture` until the process exits, at which point it returns `false` forevermore.
|
|
*/
|
|
type OracleMatcher interface {
|
|
MatchMayChangeInTheFuture(actual interface{}) bool
|
|
}
|
|
|
|
func MatchMayChangeInTheFuture(matcher types.GomegaMatcher, value interface{}) bool {
|
|
oracleMatcher, ok := matcher.(OracleMatcher)
|
|
if !ok {
|
|
return true
|
|
}
|
|
|
|
return oracleMatcher.MatchMayChangeInTheFuture(value)
|
|
}
|