Releases: onsi/ginkgo
v2.25.3
v2.25.2
v2.25.1
v2.25.0
2.25.0
AroundNode
This release introduces a new decorator to support more complex spec setup usecases.
AroundNode
registers a function that runs before each individual node. This is considered a more advanced decorator.
Please read the docs for more information and some examples.
Allowed signatures:
AroundNode(func())
-func
will be called before the node is run.AroundNode(func(ctx context.Context) context.Context)
-func
can wrap the passed in context and return a new one which will be passed on to the node.AroundNode(func(ctx context.Context, body func(ctx context.Context)))
-ctx
is the context for the node andbody
is a function that must be called to run the node. This gives you complete control over what runs before and after the node.
Multiple AroundNode
decorators can be applied to a single node and they will run in the order they are applied.
Unlike setup nodes like BeforeEach
and DeferCleanup
, AroundNode
is guaranteed to run in the same goroutine as the decorated node. This is necessary when working with lower-level libraries that must run on a single thread (you can call runtime.LockOSThread()
in the AroundNode
to ensure that the node runs on a single thread).
Since AroundNode
allows you to modify the context you can also use AroundNode
to implement shared setup that attaches values to the context.
If applied to a container, AroundNode
will run before every node in the container. Including setup nodes like BeforeEach
and DeferCleanup
.
AroundNode
can also be applied to RunSpecs
to run before every node in the suite. This opens up new mechanisms for instrumenting individual nodes across an entire suite.
v2.24.0
2.24.0
Features
Specs can now be decorated with (e.g.) SemVerConstraint("2.1.0")
and ginkgo --sem-ver-filter="2.1.1"
will only run constrained specs that match the requested version. Learn more in the docs here! Thanks to @Icarus9913 for the PR.
Fixes
Maintenance
Numerous dependency bumps and documentation fixes
v2.23.4
2.23.4
Prior to this release Ginkgo would compute the incorrect number of available CPUs when running with -p
in a linux container. Thanks to @emirot for the fix!
Features
- Add automaxprocs for using CPUQuota [2b9c428]
Fixes
- clarify gotchas about -vet flag [1f59d07]
Maintenance
- bump dependencies [2d134d5]
v2.23.3
v2.23.2
2.23.2
πππ
At long last, some long-standing performance gaps between ginkgo
and go test
have been resolved!
Ginkgo operates by running go test -c
to generate test binaries, and then running those binaries. It turns out that the compilation step of go test -c
is slower than go test
's compilation step because go test
strips out debug symbols (ldflags=-w
) whereas go test -c
does not.
Ginkgo now passes the appropriate ldflags
to go test -c
when running specs to strip out symbols. This is only done when it is safe to do so and symbols are preferred when profiling is enabled and when ginkgo build
is called explicitly.
This, coupled, with the instructions for disabling XProtect on MacOS yields a much better performance experience with Ginkgo.
v2.23.1
2.23.1
π¨ For users on MacOS π¨
A long-standing Ginkgo performance issue on MacOS seems to be due to mac's antimalware XProtect. You can follow the instructions here to disable it in your terminal. Doing so sped up Ginkgo's own test suite from 1m8s to 47s.
Fixes
Ginkgo's CLI is now a bit clearer if you pass flags in incorrectly:
- make it clearer that you need to pass a filename to the various profile flags, not an absolute directory [a0e52ff]
- emit an error and exit if the ginkgo invocation includes flags after positional arguments [b799d8d]
This might cause existing CI builds to fail. If so then it's likely that your CI build was misconfigured and should be corrected. Open an issue if you need help.
v2.23.0
2.23.0
Ginkgo 2.23.0 adds a handful of methods to GinkgoT()
to make it compatible with the testing.TB
interface in Go 1.24. GinkgoT().Context()
, in particular, is a useful shorthand for generating a new context that will clean itself up in a DeferCleanup()
. This has subtle behavior differences from the golang implementation but should make sense in a Ginkgo... um... context.
Features
- bump to go 1.24.0 - support new testing.TB methods and add a test to cover testing.TB regressions [37a511b]
Fixes
- fix edge case where build -o is pointing at an explicit file, not a directory [7556a86]
- Fix binary paths when precompiling multiple suites. [4df06c6]
Maintenance
- Fix: Correct Markdown list rendering in MIGRATING_TO_V2.md [cbcf39a]
- docs: fix test workflow badge (#1512) [9b261ff]
- Bump golang.org/x/net in /integration/_fixtures/version_mismatch_fixture (#1516) [00f19c8]
- Bump golang.org/x/tools from 0.28.0 to 0.30.0 (#1515) [e98a4df]
- Bump activesupport from 6.0.6.1 to 6.1.7.5 in /docs (#1504) [60cc4e2]
- Bump github-pages from 231 to 232 in /docs (#1447) [fea6f2d]
- Bump rexml from 3.2.8 to 3.3.9 in /docs (#1497) [31d7813]
- Bump webrick from 1.8.1 to 1.9.1 in /docs (#1501) [fc3bbd6]
- Code linting (#1500) [aee0d56]
- change interface{} to any (#1502) [809a710]