Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update ava 5.3.1 → 6.1.0 (major) #277

Closed
wants to merge 1 commit into from
Closed

Conversation

depfu[bot]
Copy link
Contributor

@depfu depfu bot commented Jan 28, 2024

Here is everything you need to know about this upgrade. Please take a good look at what changed and the test results before merging this pull request.

What changed?

✳️ ava (5.3.1 → 6.1.0) · Repo

Release Notes

6.1.0

What's Changed

  • Implement registerCompletionHandler() by @novemberborn in #3283

    AVA 6 expects test code to clean up gracefully when the tests are complete, allowing the test environment (worker thread or child process) to exit. If this does not happen, AVA will report a timeout. You can use registerCompletionHandler() to perform any other clean up (or indeed exit the process) after AVA has completed the test execution. See the description here.

  • Fix potential bug with watch mode when no failed test files are written by @novemberborn in #3287

  • Fix ava/internal ESM type module by @codetheweb in #3292

Full Changelog: v6.0.1...v6.1.0

6.0.1

What's Changed

Full Changelog: v6.0.0...v6.0.1

6.0.0

Breaking Changes

  • AVA now requires Node.js versions 18.18, 20.8 or 21. Versions 14 and 16 are no longer supported. #3251 #3216

  • When tests finish, worker threads or child processes are no longer exited through proces.exit(). If your test file does not exit on its own, the test run will time out. #3260

  • Changes to watch mode #3218:

    • Watch mode can no longer be started via the ava.config.* or package.json configuration.
    • The ignoredByWatcher configuration has moved to the watchMode object, under the ignoreChanges key.
    • Watch mode now uses the built-in fs.watch() in recursive mode. This is supported on Linux in Node.js 20 or newer, and MacOS and Windows in Node.js 18 as well. There are caveats to keep in mind.
  • Failed assertions now throw, meaning that any subsequent code is not executed. This also impacts the type definitions. #3246

  • Only native errors are now considered errors by the t.throws() and t.throwsAsync() assertions. Object.create(Error.prototype) is not a native error. #3229

  • Changes to modules loaded through the require configuration #3184:

    • If such modules export a default function, this function is now invoked.
    • Local files are loaded through @ava/typescript if necessary.

Improvements

Rewritten watcher

The watcher has been rewritten. It’s now built on fs.watch() in recursive mode.

@vercel/nft is used to perform static dependency analysis, supporting ESM and CJS imports for JavaScript & TypeScript source files. This is a huge improvement over the previous runtime tracking of CJS imports, which did not support ESM.

Integration with @ava/typescript has been improved. The watcher can now detect a change to a TypeScript source file, then wait for the corresponding build output to change before re-running tests.

The ignoredByWatcher configuration has moved to the watchMode object, under the ignoreChanges key.

See #3218 and #3257.

Failed assertions now throw

Assertions now throw a TestFailure error when they fail. This error is not exported or documented and should not be used or thrown manually. You cannot catch this error in order to recover from a failure, use t.try() instead.

All assertions except for t.throws() and t.throwsAsync() now return true when they pass. This is useful for some of the assertions in TypeScript where they can be used as a type guard.

Committing a failed t.try() result now also throws.

See #3246.

t.throws() and t.throwsAsync() can now expect any error

By default, the thrown error (or rejection reason) must be a native error. You can change the assertion to expect any kind of error by setting any: true in the expectation object:

t.throws(() => { throw 'error' }, {any: true})

See #3245 by @adiSuper94.

The require configuration is now more powerful

It now loads ES modules.

Local files are loaded through @ava/typescript if necessary, so you can also write these in TypeScript.

If there is a default export function, it is invoked after loading. The function is awaited so it can do asynchronous setup before further modules are loaded. Arguments from the configuration can be passed to the function (as a [structured clone](https://developer.mozilla.org/en-US/docs/Web/API/structuredClone)).

See #3184 by @sculpt0r.

Other changes worth noting

  • Internal events can now be observed (experimentally). See #3247 by @codetheweb. It’s experimental and undocumented.
  • You can now use t.timeout.clear() to restore a previous t.timeout(). #3221
  • Code coverage is flushed to disk at opportune moments. #3220

New Contributors

Full Changelog: v5.3.1...v6.0.0

Does any of this look wrong? Please let us know.

Commits

See the full diff on Github. The new version differs by 54 commits:


Depfu Status

Depfu will automatically keep this PR conflict-free, as long as you don't add any commits to this branch yourself. You can also trigger a rebase manually by commenting with @depfu rebase.

All Depfu comment commands
@​depfu rebase
Rebases against your default branch and redoes this update
@​depfu recreate
Recreates this PR, overwriting any edits that you've made to it
@​depfu merge
Merges this PR once your tests are passing and conflicts are resolved
@​depfu cancel merge
Cancels automatic merging of this PR
@​depfu close
Closes this PR and deletes the branch
@​depfu reopen
Restores the branch and reopens this PR (if it's closed)
@​depfu pause
Ignores all future updates for this dependency and closes this PR
@​depfu pause [minor|major]
Ignores all future minor/major updates for this dependency and closes this PR
@​depfu resume
Future versions of this dependency will create PRs again (leaves this PR as is)

@depfu depfu bot added the depfu label Jan 28, 2024
Copy link

guardrails bot commented Jan 28, 2024

⚠️ We detected 1 security issue in this pull request:

Vulnerable Libraries (1)
Severity Details
Medium pkg:npm/ava@6.1.0 upgrade to: > 6.1.0

More info on how to fix Vulnerable Libraries in JavaScript.


👉 Go to the dashboard for detailed results.

📥 Happy? Share your feedback with us.

Copy link

codecov bot commented Jan 28, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Comparison is base (67393e8) 100.00% compared to head (0bd4124) 100.00%.

Additional details and impacted files
@@            Coverage Diff            @@
##            master      #277   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files            2         2           
  Lines           80        80           
=========================================
  Hits            80        80           
Flag Coverage Δ
unittests 100.00% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link
Contributor Author

depfu bot commented Feb 18, 2024

Closed in favor of #280.

@depfu depfu bot closed this Feb 18, 2024
@depfu depfu bot deleted the depfu/update/npm/ava-6.1.0 branch February 18, 2024 20:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

0 participants