tape-compact

tap-producing test harness for node and browsers

npm install tape-compact
28 downloads in the last week
51 downloads in the last month

tape-compact

tap-producing test harness for node and browsers

browser support

build status

tape

example

var test = require('tape-compact');

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
var test = require('tape-compact');

test('file 1 - comprises 100 tests', {compact: true,name: 'All tests'}, function (t) {
    t.equal(typeof Date.now, 'function');
    var start = Date.now();

    setTimeout(function () {
        t.equal(Date.now() - start, 100);
    }, 100);

    ...

    t.end();
});
TAP version 13
# test file 1 - comprises 100 tests
# test file 2 - comprises 100 tests
# test file 3 - comprises 100 tests
# test file 4 - comprises 100 tests
ok 1 All tests

1..1
# tests 1
# pass  1

# ok

methods

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

var test = require('tape-compact')

test(name, [options], cb)

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

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.

You can specify an object for options.

{ compact: true, name: 'All tests' }

When specified the TAP results will return a 0 or 1 instead of the actual test count. This is particulary useful when using testling.com an you have many thousands of tests.

This has not been tested with t.plan(n), only when t.plan is not specified and a dynamic count is made by using t.end()

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()

Declare the end of a test explicitly.

t.fail(msg)

Generate a failing assertion with a message msg.

t.pass(msg)

Generate a passing assertion with a message msg.

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(a, b, msg)

Assert that a === b with an optional description msg.

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

t.notEqual(a, b, msg)

Assert that a !== b with an optional description msg.

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

t.deepEqual(a, b, msg)

Assert that a and b 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(a, b, msg)

Assert that a and b 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(a, b, msg)

Assert that a and b 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(a, b, msg)

Assert that a and b 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.

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 process.stdout or console.log() if the environment doesn't have process.stdout. You can pipe the output to someplace else if you test.stream.pipe() to a destination stream on the first tick.

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

install

With npm do:

npm install tape-compact

license

MIT

npm loves you