log-to-test-harness.js 779 Bytes
/*
 * 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;