- Notifications
You must be signed in to change notification settings - Fork275
Test Anything Protocol tools for node
License
tapjs/tapjs
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Workspace for node-tap development.
Do this at least once to get everything set up and ready to go:
npm run bootstrap
(Note:npm install
will not work until you do this, becausethe generated TypeScript eats its own tail.)
Build the test class (required after any plugin or core changes):
npm run build
Any other builds:
npm run prepare -w src/{whatever}
After adding or removing workspaces:
npm i
Run all tests in all workspaces:
npm test
Run all tests, saving snapshots:
npm run snap
Build and serve docs:
npm start
- tap Themain entry point module, which sets up the root test runner andexposes an alias to the cli runner.
- tap-parserThe module that parsesTAP
@tapjs/core
Most of the basic moving parts of tap- tap-yamlThin wrapper aroundYAML andyaml-types forconsistent handling of JavaScript values in YAML diagnostics.
@tapjs/test
The plugin-ifiedTest
class.@tapjs/config
Handling config files, command line interface parsing,environment variables, and validation@tapjs/run
The command line runner- tcompareThe library that does comparison and object formatting (useheavily by
@tapjs/asserts
methods). @tapjs/stack
Library for capturing stack frames, the descendant ofstack-utils
.@tapjs/processinfo
The library that tracks process information and code coverage(hosted outside the monorepo, because it can't be tested by aversion of tap that uses itself without bootstrap paradoxes)- default plugins:
@tapjs/typescript
Adds typescript support, and the--typecheck
config option@tapjs/before
Addst.before()
@tapjs/before-each
Addst.beforeEach()
@tapjs/after
Addst.after()
andt.teardown()
(which are the same thingnow)@tapjs/after-each
Addst.afterEach()
@tapjs/spawn
Addst.spawn()
@tapjs/stdin
Addst.stdin()
@tapjs/asserts
Adds all the various assertion methods, liket.equal()
,t.match()
, etc.@tapjs/snapshot
Addst.matchSnapshot()
@tapjs/fixture
Addst.testdir()
features@tapjs/mock
Addst.mockRequire()
andt.mockImport()
@tapjs/intercept
Addst.intercept()
andt.capture()
functionality (sort oflike a very scaled-down minimal form of Sinon. If you wantmore, consider using the@tapjs/sinon
plugin.)@tapjs/filter
Addst.only()
and support for the--grep
and--only
clioptions.
- optional plugins:
@tapjs/nock
Optional plugin providingt.nock()
method (descendent of@npmjs/tap-nock
, and a significant inspiration for tap'splugin architecture)@tapjs/clock
Optional plugin providing aclock-mock object ont.clock
@tapjs/sinon
Optional plugin providing aSinonsandbox att.sinon
that automatically restores at the endof the test.@tapjs/esbuild-kit
Optional plugin that loads TypeScript using@esbuild-kit/cjs-loader
and@esbuild-kit/esm-loader
instead ofts-node
.
- other stuff:
- npm-init-templateA library for more easily creating
npm init
packages. Thiswill move out as soon as this version of tap is published. @tapjs/create-plugin
Annpm init
library facilitatingnpm init @tapjs/plugin
to create new plugins.
- npm-init-templateA library for more easily creating
Runnpm run bootstrap
to build the@tapjs/test
module withthe default set of plugins, so that the other libraries can buildproperly. (This only has to be done once, unless the build scriptor set of default plugins are changed, of course.)
Because there's a bootstrapping cycle between@tapjs/core
,@tapjs/test
, and all of the plugins, they MUST useskipLibCheck: true
in their tsconfigs. It should not be used inother packages.
About
Test Anything Protocol tools for node