Détail du package

libtap

tapjs624.7kISC1.4.1

A Test-Anything-Protocol library for JavaScript

assert, tap, test, testing

readme

libtap

A TAP test library for Node.js.

libtap vs tap

tap extends this module and provides many other nice features. Generally you should be using require('tap') instead of require('libtap'). In some edge cases it can be appropriate to use libtap directly.

  • Install size is important - libtap has significantly less dependencies.
  • Your tests are suspectable to transformations or other environmental changes. tap does things that are useful by default, if this causes problems for your code you may wish to go lower level.

Recursive rmdir

Some parts of libtap require recursive rmdir functions. In Node.js 12.10.0+ this is provided by the Node.js core fs module. For older versions of Node.js you must set compatible functions:

const rimraf = require('rimraf')
const settings = require('libtap/settings')
settings.rmdirRecursiveSync = dir => rimraf.sync(dir, {glob: false})
settings.rmdirRecursive = (dir, cb) => rimraf(dir, {glob: false}, cb)

This is handled by tap so only direct users of libtap who need to support older versions of Node.js need to worry about this.

It is not considered semver-major for a libtap function to use recursive rmdir where it previously did not. If you test on older versions of Node.js then you must ensure a user-space implementation is available even if it is not currently needed.

Environmental changes still in place

  • signal-exit is run
  • async-domain-hook is run
  • process.stdout.emit is monkey-patched to swallow EPIPE errors
  • process.reallyExit and process.exit are monkey-patched
  • Handlers are added to process beforeexit and exit events

These all have an effect on the environment and may be undesirable in some edge cases. Should any/all of these be opt-out or even opt-in? The goal is to be able to create functional tests using require('libtap').

changelog

1.4

  • subtests: only output comment style
  • t.emits() returns promise, resolves when emitted
  • tap-parser@11.0.1

1.3

  • test: support setting snapshotFile explicitly in subtests

1.2

  • remove yapool
  • feat: add t.hasProp() and friends
  • Escape # and \ characters in test message or directives
  • Escape bailout message and plan comment
  • tap-parser@11.0.0

1.1

  • Provide a version-specific mkdirRecursive, with mkdirpNeeded flag
  • fix: join testdirName with path.sep instead of /
  • fix: do not break if global.process missing
  • uncaughtException catch unhandledRejections

1.0.0

Breaking Changes

  • Run fixture cleanup asynchronously, after teardown
  • beforeEach / afterEach no longer received a callback, are assumed to be synchronous if they do not return a promise
  • Improve tap-snapshot folder structure
  • Inherit t.saveFixture boolean

Features

  • Create fixture symlinks as junctions if pointing at directories
  • Add tap-testdir- to the generated test dir folder
  • Add t.mock() API
  • Add t.before(fn) API
  • Separate t.match and t.has
  • Add t.notHas() / t.notHasStrict() API's
  • Support t.compareOptions for configuring tcompare behavior
  • Resolve child test promise to results
  • Do not report only/grep filtered skips in test.lists
  • Make snapshot file location fully customizable

0.3.0

Breaking Changes

  • Populate package.json#exports. This blocks import/require of 'internal' files
  • Convert options.processDB.spawn to an async function in preparation of nyc 15

Features

  • Provide ESM wrapper with named exports using conditional exports

0.2.0

Breaking Changes

  • Change extension of snapshot files to .cjs

Features

  • Add output option to libtap/settings
  • Add static addAssert to Test class

0.1.0

This module is based on tap 14.10.2.

  • Node.js 10 is now required
  • Assertion synonyms are removed
  • Remove stdio-polyfill.js
  • Remove browser-process-hrtime
  • Remove source-map-support
  • Remove mocha DSL
  • Remove default stripping of installed modules from stack
  • Upgrade tcompare
  • Prefer native recursive fs.rmdirSync over rimraf
  • Installing rimraf is the users responsibility if it's needed to support node.js < 12