# tap-finished

> detect when tap output is finished

Latest version **0.0.1** (published 2013-11-26) · MIT license · 0 weekly downloads

## Install

```sh
npm install tap-finished
pnpm add tap-finished
yarn add tap-finished
bun add tap-finished
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.1 |
| Published | 2013-11-26 |
| First published | 2013-01-23 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 2 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | James Halliday |
| Maintainers | substack |
| Keywords | tap, parse, stream, complete, test |

## Links

- npm: https://www.npmjs.com/package/tap-finished
- Repository: https://github.com/substack/tap-finished
- Issues: https://github.com/substack/tap-finished/issues
- npm.io page: https://npm.io/package/tap-finished

## Dependencies (2)

- [through](https://npm.io/package/through.md) ~2.3.4
- [tap-parser](https://npm.io/package/tap-parser.md) ~0.2.0

## Alternatives

- [duck](https://npm.io/package/duck.md) — 4.2M weekly downloads
- [ava](https://npm.io/package/ava.md) — 560.2K weekly downloads
- [storybook-addon-module-mock](https://npm.io/package/storybook-addon-module-mock.md) — 71.7K weekly downloads
- [vest](https://npm.io/package/vest.md) — 50.1K weekly downloads
- [@ethereum-waffle/mock-contract](https://npm.io/package/@ethereum-waffle/mock-contract.md) — 40.0K weekly downloads

## Recent versions

- 0.0.1 (latest) — 2013-11-26
- 0.0.0 — 2013-01-23

## README

# tap-finished

detect when [tap output](http://testanything.org) is finished

[![build status](https://secure.travis-ci.org/substack/tap-finished.png)](http://travis-ci.org/substack/tap-finished)

[![browser support](http://ci.testling.com/substack/tap-finished.png)](http://ci.testling.com/substack/tap-finished)

Normally with [tap-parser](https://github.com/substack/tap-parser) the
`'results'` event fires only after the stream is closed. This module lets you
detect whether a stream seems closed without waiting for the `'end'` event.

# example

Given this tap output in `tap_output.txt`:

```
TAP version 13
# wait
ok 1 (unnamed assert)
not ok 2 should be equal
  ---
    operator: equal
    expected: 5
    actual:   4
  ...

1..2
# tests 2
# pass  1
# fail  1
```

and given this script that pipes stdin into the finished stream:

``` js
var finished = require('tap-finished');
var stream = finished(function (results) {
    console.dir(results);
});
process.stdin.pipe(stream);
```

We'll use `cat` to create a stream that contains the tap output but doesn't end
and then pipe that to the script:

```
$ cat tap_output.txt /dev/stdin | node stream.js 
{ ok: false,
  asserts: 
   [ { ok: true, number: 1, name: '(unnamed assert)' },
     { ok: false, number: 2, name: 'should be equal' } ],
  pass: [ { ok: true, number: 1, name: '(unnamed assert)' } ],
  fail: [ { ok: false, number: 2, name: 'should be equal' } ],
  errors: [],
  plan: { start: 1, end: 2 } }
^C
```

Even though the `'end'` message never came, we still got the parsed results.
Yay!

# methods

``` js
var finished = require('tap-finished')
```

## var ws = finished(opts={}, cb)

Return a writable stream `ws` that consumes tap input. 
`cb(results)` fires with the `results` from
[tap-parser](https://github.com/substack/tap-parser)
when the stream seems finished or when the `'end'` event occurs.

`opts.wait` controls how long to wait in milliseconds for more input before
firing the `cb` if the `'end'` event doesn't fire.

# install

With [npm](http://npmjs.org) do:

```
npm install tap-finished
```

You can use this module in the browser with [browserify](http://browserify.org).

# license

MIT

---
_Source: https://npm.io/package/tap-finished · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
