You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

37 lines
779 B

2 years ago
/*
* MIT License http://opensource.org/licenses/MIT
* Author: Ben Holloway @bholloway
*/
'use strict';
var stream = require('stream');
var hasLogged = false;
function logToTestHarness(maybeStream, options) {
var doLogging =
!hasLogged &&
!!maybeStream &&
(typeof maybeStream === 'object') &&
(maybeStream instanceof stream.Writable);
if (doLogging) {
hasLogged = true; // ensure we log only once
Object.keys(options).forEach(eachOptionKey);
}
function eachOptionKey(key) {
maybeStream.write(key + ': ' + stringify(options[key]) + '\n');
}
function stringify(value) {
try {
return JSON.stringify(value) || String(value);
} catch (e) {
return '-unstringifyable-';
}
}
}
module.exports = logToTestHarness;