/* * file-test.js: Tests for instances of the File transport * * (C) 2010 Charlie Robbins * MIT LICENSE * */ var assert = require('assert'), exec = require('child_process').exec, fs = require('fs'), path = require('path'), vows = require('vows'), winston = require('../../lib/winston'), helpers = require('../helpers'); var maxsizeTransport = new winston.transports.File({ timestamp: false, json: false, filename: path.join(__dirname, '..', 'fixtures', 'logs', 'testmaxsize.log'), maxsize: 4096 }); vows.describe('winston/transports/file/maxsize').addBatch({ "An instance of the File Transport": { "when passed a valid filename": { "the log() method": { topic: function () { exec('rm -rf ' + path.join(__dirname, '..', 'fixtures', 'logs', 'testmaxsize*'), this.callback); }, "when passed more than the maxsize": { topic: function () { var that = this, data = new Array(1018).join('-'); // // Setup a list of files which we will later stat. // that.files = []; function logKbytes (kbytes) { // // With no timestamp and at the info level, // winston adds exactly 7 characters: // [info](4)[ :](2)[\n](1) // for (var i = 0; i < kbytes; i++) { maxsizeTransport.log('info', data, null, function () { }); } } maxsizeTransport.on('open', function (file) { var match = file.match(/(\d+)\.log$/), count = match ? match[1] : 0; that.files.push(file); if (that.files.length === 5) { return that.callback(); } logKbytes(4); }); logKbytes(4); }, "should create multiple files correctly": function () { this.files.forEach(function (file) { try { var stats = fs.statSync(file); assert.equal(stats.size, 4096); } catch (ex) { assert.isNull(ex); } }); } } } } } }).export(module);