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()).ghttp's behavior around failing assertions and panics:ghttp will return 500.ghttp will return 500 and fail the test. This is new behavior that may cause existing code to break. This code is almost certainly incorrect and creating a false positive.ghttp servers can take an io.Writer. ghttp will write a line to the writer when each request arrives.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.BufferSay 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.TimeHaveKeyWithValue: 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