https://github.com/tapjs/tap-finished
detect when tap output is finished
https://github.com/tapjs/tap-finished
Last synced: 2 months ago
JSON representation
detect when tap output is finished
- Host: GitHub
- URL: https://github.com/tapjs/tap-finished
- Owner: tapjs
- License: mit
- Created: 2022-09-21T21:43:52.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-07-07T17:27:33.000Z (12 months ago)
- Last Synced: 2025-04-23T22:05:58.520Z (2 months ago)
- Language: JavaScript
- Homepage:
- Size: 42 KB
- Stars: 5
- Watchers: 2
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: readme.markdown
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Security: .github/SECURITY.md
Awesome Lists containing this project
README
# tap-finished
detect when [tap output](http://testanything.org) is finished
[](http://travis-ci.org/tapjs/tap-finished)
[](http://ci.testling.com/tapjs/tap-finished)
Normally with [tap-parser](https://github.com/tapjs/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/tapjs/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