* Don't mix option chain with the prototype, simply expose it on the
instance. Actual code only exposed the `test` method to the user, and
that happens to be the default starting point anyway
* `run()` doesn't need to return stats
* Ensure `run()` always returns a promise, and does not throw
* Simplify `buildStats()`
* Derive chainable methods from the actual chain when generating the
TypeScript definition
* Don't bother prefixing methods / properties with underscores
* package-hash@^2
* Allow precompiler setup to be asynchronous
* Consistently refer to babel-config module as babelConfigHelper
* Manage Babel config using hullabaloo
Fixes#707
* Disable Babel cache when precompiling
Fixes#474
* add after.always, afterEach.always hook
* update readme about always modifier
* add test for verifying throw
* add tests for verifying always hook are added
* update readme for better "always" explaination
* fix typo in test/test-collection.js
* better always checking and implement
* modify error message for only
* fix build error
* add always to default in test
The child processes determine whether the test had an error based on its `error`
property not being `undefined`. However they then change this property to an
empty object if there was no error.
The API determines whether a test had an error based on its (empty) error object
having a `message` property. If a test did not have an error, its `error`
property is set to `null`. This prevents errors without messages from being
reported correctly.
Instead set `error` to `null` in the child processes and rely on that in the
API.
I've added a test to validate errors without messages get reported.
Accessing `t.end` now throws an error unless the test is first
declared async via `test.async([title], fn)`
Reference:
https://github.com/sindresorhus/ava/issues/244
(cherry picked from commit 28b1641)
Initial implementation of #244 - require explicit test.async