Releases: Roblox/testez
v0.4.2
v0.4.1
afterEachblocks now run their code afteritblocks fail or error
v0.4.0
- Added
expect.extendwhich allows projects to register their own, opinionated expectations that integrates intoexpect. (#142)- Modeled after jest's implementation.
- Matchers are functions that should return an object with with two keys, boolean
passand a stringmessage - Like
context, matchers introduced viaexpect.extendwill be present on all nodes below the node that introduces the matchers. - Limitations:
expect.extendcannot be called from withindescribeblocks- Custom matcher names cannot overwrite pre-existing matchers, including default matchers and matchers introduces from previous
expect.extendcalls.
- Change the way errors are collected to call tostring on them before further processing.
- Luau allows non-string errors, but not concatenating non-strings or passing non-strings to
debug.tracebackas a message, so TestRunner needs to do that step. This is a temporary fix as the better solution would be to retain the error in object form for as long as possible to give the reporter more to work with. - This also makes a slight change to what's in the traceback to eliminate the unnecessary line mentioning the error collection function.
- Luau allows non-string errors, but not concatenating non-strings or passing non-strings to
- Fix debugging of tests in Studio
v0.3.3
Fixed a bug where passing lifecycle hooks would show up as [?] in the quiet output.
v0.3.2
- Some cleanup of the TestEZ CLI internals
- Added the ability to pass in a string to expect.to.throw. This will search the error message for a matching substring and report a failure if it's not there.
v0.3.1
This release includes changes to the internals of lifecycle hooks and the release of the context API.
A context object is now passed along to all lifecycle hooks and to it blocks. This is a write-one store for any information or helper functions you need to pass between these parts of tests.
Changes since 0.3.0
- Further simplify
beforeAllhandling.beforeAllnow runs on entering the block, rather than on the firstitencountered after entering the block. The major difference for the moment is that abeforeAllwill now run even if there are noitblocks under it, which is now consistent with howafterAllworked.beforeAllandafterAllnow report errors by creating a dummy node in the results to contain the error. Previously, errors inafterAllwere not reported.- A failure in a
beforeAllblock will now halt all further test execution within its enclosingdescribeblock except for any remainingbeforeAllblocks and anyafterAllblocks. MultiplebeforeAllorafterAllblocks within onedescribeblock should not count on running in any specific order.afterAllblocks should account for the possibility of a partially setup state when cleaning up.
- Add a context object visible from lifecycle hooks and
itblocks. This is a write-once store for whatever you need to communicate between hooks and tests. It can be ignored until you need it.- In particular, you can usually just use upvalues to comminucate between hooks and tests, but that won't work if your hooks are in a separate file (e.g.
init.spec.lua). - Also, this provides a cleaner alternative to extraEnvironment for passing along helper functions to large numbers of tests as the context can be scoped to particular directories as needed.
- In particular, you can usually just use upvalues to comminucate between hooks and tests, but that won't work if your hooks are in a separate file (e.g.
v0.3.0
This release includes foundational changes to TestEZ's test planning implementation, as well as a slew of bugfixes and consistency improvements across the board.
We have additionally removed some unused, deprecated API members.
Changes since 0.2.0
- Remove the
trynode type.- Remove the
stepalias foritsince that's meant for use withtry.
- Remove the
- Remove the
includeglobal function. - Remove
HACK_NO_XPCALL. With recent changes to the definition of xpcall, this is no longer necessary. Since people are still using it, it will now print out a warning asking them to delete that call instead. - Major changes to the internals of test planning.
- The major visible change is that
describeanditblocks with duplicate descriptions will now not overwrite the earlier copies of those nodes. - Duplicate
itnodes within onedescribewill raise an error. - TestPlanBuilder was removed from the API.
- The major visible change is that
- Fixed a bug with how
beforeAllandafterAllhandled nested nodes. - Implemented alphabetical sorting of the entire test tree which provides deterministic tests execution order regardless of platform, architecture or tool used to load tests.
- Fixed interactions with roblox-cli in TestEZ CLI.
v0.2.0
This change is the first release that includes the TestEZ CLI, which is a new way to run TestEZ without needing to install some of its dependencies. It also includes a new lifecycle feature.
To install the CLI, download the correct attached zip here or use a tool like Foreman:
[tools]
testez = { source = "Roblox/testez", version = "0.2.0" }Changes since 0.1.1
- Added support for
init.spec.lua. Code in this file is treated as belonging to the directory's node in the test tree. This allows for lifecycle hooks to be attached to all files in a directory. - Added TestEZ CLI, a Rust tool that bundles TestEZ and Lemur, and can run tests via Lemur or Roblox-CLI (#61)