added unit testing, and started implementing unit tests...phew
This commit is contained in:
93
node_modules/winston/test/transports/file-archive.test.js
generated
vendored
Normal file
93
node_modules/winston/test/transports/file-archive.test.js
generated
vendored
Normal file
@ -0,0 +1,93 @@
|
||||
/*
|
||||
* file-archive-test.js: Tests for instances of the File transport setting the archive option,
|
||||
*
|
||||
* (C) 2015 Nimrod Becker
|
||||
* MIT LICENSE
|
||||
*
|
||||
*/
|
||||
|
||||
/* eslint-disable no-sync */
|
||||
const assert = require('assert');
|
||||
const rimraf = require('rimraf');
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const winston = require('../../lib/winston');
|
||||
|
||||
const { MESSAGE } = require('triple-beam');
|
||||
|
||||
//
|
||||
// Remove all log fixtures
|
||||
//
|
||||
function removeFixtures(done) {
|
||||
rimraf(path.join(__dirname, '..', 'fixtures', 'logs', 'testarchive*'), done);
|
||||
}
|
||||
|
||||
|
||||
let archiveTransport = null;
|
||||
|
||||
describe('winston/transports/file/zippedArchive', function () {
|
||||
describe('An instance of the File Transport with tailable true', function () {
|
||||
before(removeFixtures);
|
||||
after(removeFixtures);
|
||||
|
||||
it('init logger AFTER cleaning up old files', function () {
|
||||
archiveTransport = new winston.transports.File({
|
||||
timestamp: true,
|
||||
json: false,
|
||||
zippedArchive: true,
|
||||
tailable: true,
|
||||
filename: 'testarchive.log',
|
||||
dirname: path.join(__dirname, '..', 'fixtures', 'logs'),
|
||||
maxsize: 4096,
|
||||
maxFiles: 3
|
||||
});
|
||||
});
|
||||
|
||||
it('when created archived files are rolled', function (done) {
|
||||
let created = 0;
|
||||
let loggedTotal = 0;
|
||||
|
||||
function data(ch, kb) {
|
||||
return String.fromCharCode(65 + ch).repeat(kb * 1024 - 1);
|
||||
}
|
||||
|
||||
function logKbytes(kbytes, txt) {
|
||||
const toLog = {};
|
||||
toLog[MESSAGE] = data(txt, kbytes);
|
||||
archiveTransport.log(toLog);
|
||||
}
|
||||
|
||||
archiveTransport.on('logged', function (info) {
|
||||
loggedTotal += info[MESSAGE].length + 1;
|
||||
if (loggedTotal >= 14 * 1024) { // just over 3 x 4kb files
|
||||
return done();
|
||||
}
|
||||
|
||||
if (loggedTotal % 4096 === 0) {
|
||||
created++;
|
||||
}
|
||||
// eslint-disable-next-line max-nested-callbacks
|
||||
setTimeout(() => logKbytes(1, created), 1);
|
||||
});
|
||||
|
||||
logKbytes(1, created);
|
||||
});
|
||||
|
||||
it('should be only 3 files called testarchive.log, testarchive1.log.gz and testarchive2.log.gz', function () {
|
||||
for (var num = 0; num < 4; num++) {
|
||||
const file = !num ? 'testarchive.log' : 'testarchive' + num + '.log.gz';
|
||||
const fullpath = path.join(__dirname, '..', 'fixtures', 'logs', file);
|
||||
|
||||
if (num === 3) {
|
||||
return assert.throws(function () {
|
||||
fs.statSync(fullpath);
|
||||
}, Error);
|
||||
}
|
||||
|
||||
assert.doesNotThrow(function () {
|
||||
fs.statSync(fullpath);
|
||||
}, Error);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
Reference in New Issue
Block a user