Improvements:
BeSent
which attempts to send a value down a channel and fails if the attempt blocks. Can be paired with Eventually
to safely send a value down a channel with a timeout.Ω
, Expect
, Eventually
, and Consistently
now immediately panic
if there is no registered fail handler. This is always a mistake that can hide failing tests.Receive()
no longer errors when passed a closed channel, it's perfectly fine to attempt to read from a closed channel so Ω(c).Should(Receive()) always fails and Ω(c).ShoudlNot(Receive()) always passes with a closed channel.HavePrefix
and HaveSuffix
matchers.ghttp
can now handle concurrent requests.Succeed
which allows one to write Ω(MyFunction()).Should(Succeed())
.Bug Fixes:
session.Wait
now uses EventuallyWithOffset
to get the right line number in the failure.ContainElement
no longer bails if a passed-in matcher errors.No changes. Dropping “beta” from the version number.
Breaking Changes:
Match
return failure messages, two new methods FailureMessage
and NegatedFailureMessage
are called instead.New Test-Support Features:
ghttp
: supports testing http clientsgbytes
: supports making ordered assertions against streams of datagbytes.Buffer
Say
matcher to perform ordered assertions against output datagexec
: supports testing external processesexec.Cmd
commandsExit
matcher to assert against exit code.DSL Changes:
Eventually
and Consistently
can accept time.Duration
interval and polling inputs.Eventually
and Consistently
are now configurable.New Matchers:
ConsistOf
: order-independent assertion against the elements of an array/slice or keys of a map.BeTemporally
: like BeNumerically
but for time.Time
HaveKeyWithValue
: asserts a map has a given key with the given value.Updated Matchers:
Receive
matcher can take a matcher as an argument and passes only if the channel under test receives an objet that satisfies the passed-in matcher.MatchMayChangeInTheFuture(actual interface{}) bool
can inform Eventually
and/or Consistently
when a match has no chance of changing status in the future. For example, Receive
returns false
when a channel is closed.Misc:
Major refactor:
internal