Releases: chaijs/chai
1.10.0 / 2014-11-10
The following changes are required if you are upgrading from the previous version:
- Users:
- No changes required
- Plugin Developers:
- Review
addChainableNoopnotes below.
- Review
- Core Contributors:
- Refresh
node_modulesfolder for updated dependencies.
- Refresh
Noop Function for Terminating Assertion Properties
The following assertions can now also be used in the function-call form:
- ok
- true
- false
- null
- undefined
- exist
- empty
- arguments
- Arguments
The above list of assertions are property getters that assert immediately on access. Because of that, they were written to be used by terminating the assertion chain with a property access.
expect(true).to.be.true;
foo.should.be.ok;This syntax is definitely aesthetically pleasing but, if you are linting your test code, your linter will complain with an error something like "Expected an assignment or function call and instead saw an expression." Since the linter doesn't know about the property getter it assumes this line has no side-effects, and throws a warning in case you made a mistake.
Squelching these errors is not a good solution as test code is getting to be just as important as, if not more than, production code. Catching syntactical errors in tests using static analysis is a great tool to help make sure that your tests are well-defined and free of typos.
A better option was to provide a function-call form for these assertions so that the code's intent is more clear and the linters stop complaining about something looking off. This form is added in addition to the existing property access form and does not impact existing test code.
expect(true).to.be.true();
foo.should.be.ok();These forms can also be mixed in any way, these are all functionally identical:
expect(true).to.be.true.and.not.false();
expect(true).to.be.true().and.not.false;
expect(true).to.be.true.and.not.false;Plugin Authors
If you would like to provide this function-call form for your terminating assertion properties, there is a new function to register these types of asserts. Instead of using addProperty to register terminating assertions, simply use addChainableNoop instead; the arguments to both are identical. The latter will make the assertion available in both the attribute and function-call forms and should have no impact on existing users of your plugin.
Community Contributions
- #297 Allow writing lint-friendly tests. @joshperry
- #298 Add check for logging
-0. @dasilvacontin - #300 Fix #299: the test is defining global variables @julienw
Thank you to all who took time to contribute!
1.9.2 / 2014-09-29
The following changes are required if you are upgrading from the previous version:
- Users:
- No changes required
- Plugin Developers:
- No changes required
- Core Contributors:
- Refresh
node_modulesfolder for updated dependencies.
- Refresh
Community Contributions
- #264 Show diff for keys assertions @cjthompson
- #267 Use SVG badges @shinnn
- #268 Allow messages to be functions (sinon-compat) @charlierudolph
- #269 Remove unused argument for #lengthOf @charlierudolph
- #275 Rewrite pretty-printing HTML elements to prevent throwing internal errors @DrRataplan
- #277 Fix assert documentation for #sameMembers @charlierudolph
- #279 closeTo should check value's type before assertion @mohayonao
- #289 satisfy is called twice @charlierudolph
- #292 resolve conflicts with node-webkit and global usage @boneskull
Thank you to all who took time to contribute!
1.9.1 / 2014-03-19
The following changes are required if you are upgrading from the previous version:
- Users:
- Migrate configuration options to new interface. (see notes)
- Plugin Developers:
- No changes required
- Core Contributors:
- Refresh
node_modulesfolder for updated dependencies.
- Refresh
Configuration
There have been requests for changes and additions to the configuration mechanisms
and their impact in the Chai architecture. As such, we have decoupled the
configuration from the Assertion constructor. This not only allows for centralized
configuration, but will allow us to shift the responsibility from the Assertion
constructor to the assert interface in future releases.
These changes have been implemented in a non-breaking way, but a depretiation
warning will be presented to users until they migrate. The old config method will
be removed in either v1.11.0 or v2.0.0, whichever comes first.
Quick Migration
// change this:
chai.Assertion.includeStack = true;
chai.Assertion.showDiff = false;
// ... to this:
chai.config.includeStack = true;
chai.config.showDiff = false;All Config Options
config.includeStack
User configurable property, influences whether stack trace is included in
Assertion error message. Default of false suppresses stack trace in the error
message.
config.showDiff
User configurable property, influences whether or not the showDiff flag
should be included in the thrown AssertionErrors. false will always be false;
true will be true when the assertion has requested a diff be shown.
config.truncateThreshold (NEW)
User configurable property, sets length threshold for actual and expected values
in assertion errors. If this threshold is exceeded, the value is truncated.
Set it to zero if you want to disable truncating altogether.
chai.config.truncateThreshold = 0; // disable truncatingCommunity Contributions
- #228 Deep equality check for memebers. @duncanbeevers
- #247 Proofreading. @didorellano
- #244 Fix
contain/include1.9.0 regression. @leider - #233 Improvements to
ssfiforassertinterface. @refack - #251 New config option: object display threshold. @romario333
Thank you to all who took time to contribute!
Other Bug Fixes
- #183 Allow
undefinedfor actual. (internal api) - Update Karam(+plugins)/Istanbul to most recent versions.
1.9.0 / 2014-01-29
The following changes are required if you are upgrading from the previous version:
- Users:
- No changes required
- Plugin Developers:
- Review #219.
- Core Contributors:
- Refresh
node_modulesfolder for updated dependencies.
- Refresh
Community Contributions
- #202 Improve error message for .throw(). @andreineculau
- #217 Chai tests can be run with
--watch. @demands - #219 Add overwriteChainableMethod utility. @demands
- #224 Return error on throw method to chain on error properties. @vbardales
- #226 Add
hasto language chains. @duncanbeevers - #230 Support
{a:1,b:2}.should.include({a:1})@jkroso - #231 Update Copyright notices to 2014 @duncanbeevers
- #232 Avoid error instantiation if possible on assert.throws. @laconbass
Thank you to all who took time to contribute!