describe('Stdio Logger', function() { var Log = require('../../../src/lib/log'); var StdioLogger = require('../../../src/lib/loggers/stdio'); var expect = require('expect.js'); var sinon = require('sinon'); var parentLog; beforeEach(function() { parentLog = new Log(); }); afterEach(function() { parentLog.close(); }); function makeLogger(parent, levels) { parent = parent || parentLog; var config = { levels: Log.parseLevels(levels || 'trace'), }; return new StdioLogger(parent, config); } var stub = require('../../utils/auto_release_stub').make(); require('../generic_logger_tests')(makeLogger); describe('colorizing', function() { var chalk = require('chalk'); var now = '2013-01-01T00:00:00Z'; var nowDate = new Date(now); var nowTime = nowDate.getTime(); beforeEach(function() { stub.autoRelease(sinon.useFakeTimers(nowTime)); }); it("uses colors when it's supported", function() { var logger = makeLogger(); var hasColor = require('chalk').supportsColor; expect(logger.color).to.be(hasColor); }); it('obeys the logger.color === false', function() { var logger = makeLogger(); stub(process.stdout, 'write'); var withoutColor = 'Elasticsearch INFO: ' + now + '\n something\n\n'; logger.color = false; logger.onInfo('something'); expect(process.stdout.write.lastCall.args[0]).to.eql(withoutColor); }); it('obeys the logger.color === true', function() { var logger = makeLogger(); stub(process.stdout, 'write'); var withoutColor = 'Elasticsearch DEBUG: ' + now + '\n be weary\n\n'; logger.color = true; logger.onDebug('be weary'); expect(process.stdout.write.lastCall.args[0]).to.not.eql(withoutColor); expect(chalk.stripColor(process.stdout.write.lastCall.args[0])).to.eql( withoutColor ); }); }); });