From fb94836257b6019bb0808e10ba7334ab765501f1 Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Sun, 24 May 2020 14:05:06 -0700 Subject: [PATCH] [Fix] `createStream`: `result` payload is not always an object Fixes #519. --- lib/results.js | 6 +++-- test/objectMode.js | 3 +-- test/objectModeWithComment.js | 41 +++++++++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 test/objectModeWithComment.js diff --git a/lib/results.js b/lib/results.js index 698fad0e..8fbeb763 100644 --- a/lib/results.js +++ b/lib/results.js @@ -60,8 +60,10 @@ Results.prototype.createStream = function (opts) { ontest(st, { parent: id }); }); t.on('result', function (res) { - res.test = id; - res.type = 'assert'; + if (res && typeof res === 'object') { + res.test = id; + res.type = 'assert'; + } output.queue(res); }); t.on('end', function () { diff --git a/test/objectMode.js b/test/objectMode.js index 0607668b..3a7cf379 100644 --- a/test/objectMode.js +++ b/test/objectMode.js @@ -49,8 +49,7 @@ tap.test('object results', function (assert) { assert.end(); }; - tape.createStream({ objectMode: true }) - .pipe(printer); + tape.createStream({ objectMode: true }).pipe(printer); tape('parent', function (t1) { t1.equal(true, true); diff --git a/test/objectModeWithComment.js b/test/objectModeWithComment.js new file mode 100644 index 00000000..9a34f270 --- /dev/null +++ b/test/objectModeWithComment.js @@ -0,0 +1,41 @@ +'use strict'; + +var tap = require('tap'); +var tape = require('../'); +var through = require('through'); + +tap.test('test.comment() in objectMode', function (assert) { + var printer = through({ objectMode: true }); + var objects = []; + printer.on('error', function (e) { + assert.fail(e); + }); + + printer.write = function (obj) { + objects.push(obj); + }; + printer.end = function (obj) { + if (obj) { objects.push(obj); } + + assert.equal(objects.length, 3); + assert.deepEqual(objects, [ + { + type: 'test', + name: 'test.comment', + id: 0, + skip: false, + todo: false + }, + 'message', + { type: 'end', test: 0 } + ]); + assert.end(); + }; + + tape.createStream({ objectMode: true }).pipe(printer); + + tape('test.comment', function (test) { + test.comment('message'); + test.end(); + }); +});