tape 3.5.0

tap-producing test harness for node and browsers

Homepage: https://github.com/substack/tape

Platform: npm

Language: JavaScript

License: MIT

Repository: git://github.com/substack/tape.git

View on registry: https://www.npmjs.com/package/tape/

Install: npm install tape


tape

tap-producing test harness for node and browsers

browser support

build status

tape

example

var test = require('tape');
test('timing test', function (t) {
 t.plan(2);
 t.equal(typeof Date.now, 'function');
 var start = Date.now();
 setTimeout(function () {
 t.equal(Date.now() - start, 100);
 }, 100);
});
$ node example/timing.js
TAP version 13
# timing test
ok 1 should be equal
not ok 2 should be equal
 ---
 operator: equal
 expected: 100
 actual: 107
 ...
1..2
# tests 2
# pass 1
# fail 1

pretty reporters

The default TAP output is good for machines and humans that are robots.

If you want a more colorful / pretty output there are lots of modules on npm that will output something pretty if you pipe TAP into them:

To use them, try node test/index.js | tap-spec or pipe it into one of the modules of your choice!

uncaught exceptions

By default, uncaught exceptions in your tests will not be intercepted, and will cause tape to crash. If you find this behavior undesirable, use tape-catch to report any exceptions as TAP errors.

methods

The assertion methods in tape are heavily influenced or copied from the methods in node-tap.

var test = require('tape')

test([name], [opts], cb)

Create a new test with an optional name string and optional opts object. cb(t) fires with the new test object t once all preceeding tests have finished. Tests execute serially.

Available opts options are:

  • opts.skip = true/false. See test.skip.
  • opts.timeout = 500. Set a timeout for the test, after which it will fail. See test.timeoutAfter.

If you forget to t.plan() out how many assertions you are going to run and you don't call t.end() explicitly, your test will hang.

test.skip(name, cb)

Generate a new test that will be skipped over.

t.plan(n)

Declare that n assertions should be run. t.end() will be called automatically after the nth assertion. If there are any more assertions after the nth, or after t.end() is called, they will generate errors.

t.end(err)

Declare the end of a test explicitly. If err is passed in t.end will assert that it is falsey.

t.fail(msg)

Generate a failing assertion with a message msg.

t.pass(msg)

Generate a passing assertion with a message msg.

t.timeoutAfter(ms)

Automatically timeout the test after X ms.

t.skip(msg)

Generate an assertion that will be skipped over.

t.ok(value, msg)

Assert that value is truthy with an optional description message msg.

Aliases: t.true(), t.assert()

t.notOk(value, msg)

Assert that value is falsy with an optional description message msg.

Aliases: t.false(), t.notok()

t.error(err, msg)

Assert that err is falsy. If err is non-falsy, use its err.message as the description message.

Aliases: t.ifError(), t.ifErr(), t.iferror()

t.equal(actual, expected, msg)

Assert that actual === expected with an optional description msg.

Aliases: t.equals(), t.isEqual(), t.is(), t.strictEqual(), t.strictEquals()

t.notEqual(actual, expected, msg)

Assert that actual !== expected with an optional description msg.

Aliases: t.notEquals(), t.notStrictEqual(), t.notStrictEquals(), t.isNotEqual(), t.isNot(), t.not(), t.doesNotEqual(), t.isInequal()

t.deepEqual(actual, expected, msg)

Assert that actual and expected have the same structure and nested values using node's deepEqual() algorithm with strict comparisons (===) on leaf nodes and an optional description msg.

Aliases: t.deepEquals(), t.isEquivalent(), t.same()

t.notDeepEqual(actual, expected, msg)

Assert that actual and expected do not have the same structure and nested values using node's deepEqual() algorithm with strict comparisons (===) on leaf nodes and an optional description msg.

Aliases: t.notEquivalent(), t.notDeeply(), t.notSame(), t.isNotDeepEqual(), t.isNotDeeply(), t.isNotEquivalent(), t.isInequivalent()

t.deepLooseEqual(actual, expected, msg)

Assert that actual and expected have the same structure and nested values using node's deepEqual() algorithm with loose comparisons (==) on leaf nodes and an optional description msg.

Aliases: t.looseEqual(), t.looseEquals()

t.notDeepLooseEqual(actual, expected, msg)

Assert that actual and expected do not have the same structure and nested values using node's deepEqual() algorithm with loose comparisons (==) on leaf nodes and an optional description msg.

Aliases: t.notLooseEqual(), t.notLooseEquals()

t.throws(fn, expected, msg)

Assert that the function call fn() throws an exception. expected, if present, must be a RegExp or Function.

t.doesNotThrow(fn, expected, msg)

Assert that the function call fn() does not throw an exception.

t.test(name, cb)

Create a subtest with a new test handle st from cb(st) inside the current test t. cb(st) will only fire when t finishes. Additional tests queued up after t will not be run until all subtests finish.

var htest = test.createHarness()

Create a new test harness instance, which is a function like test(), but with a new pending stack and test state.

By default the TAP output goes to console.log(). You can pipe the output to someplace else if you htest.createStream().pipe() to a destination stream on the first tick.

test.comment(message)

Print a message without breaking the tap output. (Useful when using e.g. tap-colorize where output is buffered & console.log will print in incorrect order vis-a-vis tap output.)

test.only(name, cb)

Like test(name, cb) except if you use .only this is the only test case that will run for the entire process, all other test cases using tape will be ignored

var stream = test.createStream(opts)

Create a stream of output, bypassing the default output stream that writes messages to console.log(). By default stream will be a text stream of TAP output, but you can get an object stream instead by setting opts.objectMode to true.

tap stream reporter

You can create your own custom test reporter using this createStream() api:

var test = require('tape');
var path = require('path');
test.createStream().pipe(process.stdout);
process.argv.slice(2).forEach(function (file) {
 require(path.resolve(file));
});

You could substitute process.stdout for whatever other output stream you want, like a network connection or a file.

Pass in test files to run as arguments:

$ node tap.js test/x.js test/y.js
TAP version 13
# (anonymous)
not ok 1 should be equal
 ---
 operator: equal
 expected: "boop"
 actual: "beep"
 ...
# (anonymous)
ok 2 should be equal
ok 3 (unnamed assert)
# wheee
ok 4 (unnamed assert)
1..4
# tests 4
# pass 3
# fail 1

object stream reporter

Here's how you can render an object stream instead of TAP:

var test = require('tape');
var path = require('path');
test.createStream({ objectMode: true }).on('data', function (row) {
 console.log(JSON.stringify(row))
});
process.argv.slice(2).forEach(function (file) {
 require(path.resolve(file));
});

The output for this runner is:

$ node object.js test/x.js test/y.js
{"type":"test","name":"(anonymous)","id":0}
{"id":0,"ok":false,"name":"should be equal","operator":"equal","actual":"beep","expected":"boop","error":{},"test":0,"type":"assert"}
{"type":"end","test":0}
{"type":"test","name":"(anonymous)","id":1}
{"id":0,"ok":true,"name":"should be equal","operator":"equal","actual":2,"expected":2,"test":1,"type":"assert"}
{"id":1,"ok":true,"name":"(unnamed assert)","operator":"ok","actual":true,"expected":true,"test":1,"type":"assert"}
{"type":"end","test":1}
{"type":"test","name":"wheee","id":2}
{"id":0,"ok":true,"name":"(unnamed assert)","operator":"ok","actual":true,"expected":true,"test":2,"type":"assert"}
{"type":"end","test":2}

install

With npm do:

npm install tape

license

MIT

веселые картинки развлекательные гифки интресные факты смешные видео смешные истории из соцсетей

GitHub Repository

substack/tape substack/tape

tap-producing test harness for node and browsers

Language: JavaScript

Created: November 25, 2012 17:08

Last updated: March 26, 2015 02:39

Last pushed: March 25, 2015 20:21

Size: 2.14 MB

Stars: 599

Forks: 67

Watchers: 25

Open issues: 34

Top Contributors

James Halliday Raynos (Jake Verbaten) Stephen Sugden isaacs Fredrik Norén Joshua T Corbin Brad Dunbar Wil Moore III Jordan Harband Michael Rhodes Marcus Berner Matt Esch Nowell Strite Nuno Job Roman Shtylman Tobias Baunbæk Sequoia McDowell jesse keane malandrew Ali Ghassemi

Releases

  • 3.5.0 - January 30, 2015 18:55
  • 3.4.0 - January 19, 2015 01:05
  • 3.3.0 - January 19, 2015 00:52
  • 3.2.0 - January 15, 2015 21:43
  • 3.1.0 - January 15, 2015 21:42
  • 3.0.3 - November 11, 2014 09:25
  • 3.0.2 - November 05, 2014 18:51
  • 3.0.1 - October 17, 2014 14:04
  • 3.0.0 - September 16, 2014 21:21
  • 2.14.0 - August 05, 2014 02:19
See all 79 releases

Related Projects

colored-tape 1.0.1
color result of tape
npm - JavaScript - MIT - Updated 11 months ago
runtests 0.1.7
A test runner/harness for use with TAP producing unit tests
npm - MIT - Updated about 1 year ago
tap-global-harness 0.0.1
A default harness for running TAP test
npm - JavaScript - Published almost 4 years ago - 2 stars
tap-harness 0.0.3
A harness for TAP Tests to use
npm - JavaScript - Updated over 3 years ago - 4 stars
tape-compact 0.0.14
tap-producing test harness for node and browsers
npm - JavaScript - MIT - Updated over 1 year ago - 1 stars
веселые картинки развлекательные гифки интресные факты смешные видео смешные истории из соцсетей