Coder Social home page Coder Social logo

libtap's Introduction

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').

libtap's People

Contributors

0xflotus avatar ahmadnassri avatar akselinurmio avatar alexindigo avatar amio avatar andrewdeandrade avatar cemremengu avatar coreyfarrell avatar customcommander avatar dotnetcarpenter avatar dotproto avatar estliberitas avatar evanlucas avatar formula1 avatar fox1t avatar fscherwi avatar gr2m avatar isaacs avatar jamestalmage avatar jhs avatar joliss avatar jordanbtucker avatar kalinkrustev avatar kusor avatar markandrus avatar ovhemert avatar patrickpissurno avatar rmg avatar smh avatar trentm avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.