217 lines
4.1 KiB
Markdown
217 lines
4.1 KiB
Markdown
|
# tap-out
|
||
|
|
||
|
A different tap parser
|
||
|
|
||
|
## Install
|
||
|
|
||
|
```
|
||
|
npm install tap-out --save
|
||
|
```
|
||
|
|
||
|
## Usage
|
||
|
|
||
|
**CLI**
|
||
|
|
||
|
```
|
||
|
$ something-that-produces-tap | tap-out
|
||
|
{
|
||
|
tests: [
|
||
|
{ name: 'is true', number: 1, raw: '# is true', type: 'test' }
|
||
|
],
|
||
|
asserts: [
|
||
|
{ name: 'true value', number: 1, ok: true, raw: 'ok 1 true value', test: 1, type: 'assert' },
|
||
|
{ name: 'true value', number: 2, ok: true, raw: 'ok 2 true value', test: 1, type: 'assert' }
|
||
|
],
|
||
|
versions: [],
|
||
|
results: [],
|
||
|
comments: [],
|
||
|
plans: [{ type: 'plan', raw: '1..2', from: 1, to: 2, skip: false }],
|
||
|
pass: [
|
||
|
{ name: 'true value', number: 1, ok: true, raw: 'ok 1 true value', test: 1, type: 'assert' },
|
||
|
{ name: 'true value', number: 2, ok: true, raw: 'ok 2 true value', test: 1, type: 'assert' }
|
||
|
],
|
||
|
fail: [],
|
||
|
errors: []
|
||
|
}
|
||
|
```
|
||
|
|
||
|
**API**
|
||
|
|
||
|
```js
|
||
|
var tapOut = require('tap-out');
|
||
|
|
||
|
var t = tapOut(function (output) {
|
||
|
|
||
|
console.log(output);
|
||
|
});
|
||
|
|
||
|
t.on('assert', function (assert) {
|
||
|
|
||
|
// Do something
|
||
|
});
|
||
|
|
||
|
process.stdin.pipe(t);
|
||
|
```
|
||
|
|
||
|
## Methods
|
||
|
|
||
|
### var t = tapOut(function (err, output) {})
|
||
|
|
||
|
Returns a stream that emits events with various TAP data. Takes a callback which is called when all parsing is done.
|
||
|
|
||
|
## Events
|
||
|
|
||
|
### t.on('output', function (output) {})
|
||
|
|
||
|
All output after all TAP data is parsed.
|
||
|
|
||
|
Example output
|
||
|
|
||
|
```js
|
||
|
{
|
||
|
tests: [
|
||
|
{ name: 'is true', number: 1, raw: '# is true', type: 'test' }
|
||
|
],
|
||
|
asserts: [
|
||
|
{ name: 'true value', number: 1, ok: true, raw: 'ok 1 true value', test: 1, type: 'assert' },
|
||
|
{ name: 'true value', number: 2, ok: true, raw: 'ok 2 true value', test: 1, type: 'assert' }
|
||
|
],
|
||
|
results: [],
|
||
|
versions: [],
|
||
|
comments: [],
|
||
|
fail: [],
|
||
|
pass: [
|
||
|
{ name: 'true value', number: 1, ok: true, raw: 'ok 1 true value', test: 1, type: 'assert' },
|
||
|
{ name: 'true value', number: 2, ok: true, raw: 'ok 2 true value', test: 1, type: 'assert' }
|
||
|
],
|
||
|
}
|
||
|
```
|
||
|
|
||
|
### t.on('test', function (test) {})
|
||
|
|
||
|
Parsed test object with details.
|
||
|
|
||
|
* `type` - value will always be `test`
|
||
|
* `name` - name of the test
|
||
|
* `raw` - the raw output before it was parsed
|
||
|
* `number` - the number of the test
|
||
|
|
||
|
```js
|
||
|
{
|
||
|
type: 'test',
|
||
|
name: 'is true',
|
||
|
raw: '# is true',
|
||
|
number: 1
|
||
|
}
|
||
|
```
|
||
|
|
||
|
### t.on('assert', function (assertion) {})
|
||
|
|
||
|
Parsed assert object details.
|
||
|
|
||
|
* `type` - this will always be `assert`
|
||
|
* `name` - the name of the assertion
|
||
|
* `raw` - the raw output before it was parsed
|
||
|
* `number` - the number of the assertion
|
||
|
* `ok` - whether the assertion passed or failed
|
||
|
* `test` - the number of the test this assertion belongs to
|
||
|
|
||
|
```js
|
||
|
{
|
||
|
name: 'true value',
|
||
|
number: 1,
|
||
|
ok: true,
|
||
|
raw: 'ok 1 true value',
|
||
|
test: 1,
|
||
|
type: 'assert'
|
||
|
}
|
||
|
```
|
||
|
|
||
|
### t.on('version', function (version) {})
|
||
|
|
||
|
Parsed version data.
|
||
|
|
||
|
* `type` - this will always be `version`
|
||
|
* `raw` - the raw output before it was parsed
|
||
|
|
||
|
```js
|
||
|
{
|
||
|
raw: 'TAP version 13',
|
||
|
type: 'version'
|
||
|
}
|
||
|
```
|
||
|
|
||
|
### t.on('result', function (result) {})
|
||
|
|
||
|
Parsed test result data for tests, pass, fail.
|
||
|
|
||
|
* `type` - this will always be `result`
|
||
|
* `name` - the name of the result
|
||
|
* `raw` - the raw output before it was parsed
|
||
|
* `count` - the number of tests related to this result
|
||
|
|
||
|
Tests
|
||
|
|
||
|
```js
|
||
|
{
|
||
|
count: '15',
|
||
|
name: 'tests',
|
||
|
raw: '# tests 15',
|
||
|
type: 'result'
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Pass
|
||
|
|
||
|
```js
|
||
|
{
|
||
|
count: '13',
|
||
|
name: 'pass',
|
||
|
raw: '# pass 13',
|
||
|
type: 'result'
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Fail
|
||
|
|
||
|
```js
|
||
|
{
|
||
|
count: '2',
|
||
|
name: 'fail',
|
||
|
raw: '# fail 2',
|
||
|
type: 'result'
|
||
|
}
|
||
|
```
|
||
|
|
||
|
### t.on('pass', function (assertion) {})
|
||
|
|
||
|
Parsed assertion that has passed with details. The assertion formate is the same as the [`assert`](#tonassert-function-assertion-) event.
|
||
|
|
||
|
### t.on('fail', function (assertion) {})
|
||
|
|
||
|
Failed assertion that has passed with details. The assertion formate is the same as the [`assert`](#tonassert-function-assertion-) event.
|
||
|
|
||
|
### t.on('comment', function (comment) {})
|
||
|
|
||
|
Generic output like `console.log()` in your tests.
|
||
|
|
||
|
* `type` - this will always be `comment`
|
||
|
* `raw` - the raw output before it was parsed
|
||
|
* `test` - the number of the test this comment belongs to
|
||
|
|
||
|
```js
|
||
|
{
|
||
|
type: 'comment',
|
||
|
raw: 'this is a console log',
|
||
|
test: 1
|
||
|
}
|
||
|
```
|
||
|
|
||
|
## Run Tests
|
||
|
|
||
|
```
|
||
|
git clone git@github.com:scottcorgan/tap-out.git && cd tap-out
|
||
|
npm install
|
||
|
npm test
|
||
|
```
|