added unit testing, and started implementing unit tests...phew
This commit is contained in:
93
node_modules/winston/test/transports/file-tailrolling.test.js
generated
vendored
Normal file
93
node_modules/winston/test/transports/file-tailrolling.test.js
generated
vendored
Normal file
@ -0,0 +1,93 @@
|
||||
/* 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', 'testtailrollingfiles*'), done);
|
||||
}
|
||||
|
||||
|
||||
|
||||
let tailrollTransport = null;
|
||||
|
||||
describe('winston/transports/file/tailrolling', function () {
|
||||
describe('An instance of the File Transport', function () {
|
||||
before(removeFixtures);
|
||||
after(removeFixtures);
|
||||
|
||||
it('init logger AFTER cleaning up old files', function () {
|
||||
tailrollTransport = new winston.transports.File({
|
||||
timestamp: false,
|
||||
json: false,
|
||||
filename: path.join(__dirname, '..', 'fixtures', 'logs', 'testtailrollingfiles.log'),
|
||||
maxsize: 4096,
|
||||
maxFiles: 3,
|
||||
tailable: true
|
||||
})
|
||||
.on('open', console.log); // eslint-disable-line no-console
|
||||
});
|
||||
|
||||
it('and when passed more files than the maxFiles', 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);
|
||||
tailrollTransport.log(toLog);
|
||||
}
|
||||
|
||||
tailrollTransport.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 3 log files, base to maxFiles - 1', function () {
|
||||
for (var num = 0; num < 4; num++) {
|
||||
const file = !num ? 'testtailrollingfiles.log' : 'testtailrollingfiles' + num + '.log';
|
||||
const fullpath = path.join(__dirname, '..', 'fixtures', 'logs', file);
|
||||
|
||||
if (num === 3) {
|
||||
return assert.ok(!fs.existsSync(fullpath));
|
||||
}
|
||||
|
||||
assert.ok(fs.existsSync(fullpath));
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
it('should have files in correct order', function () {
|
||||
['D', 'C', 'B'].forEach(function (letter, i) {
|
||||
const file = !i ? 'testtailrollingfiles.log' : 'testtailrollingfiles' + i + '.log';
|
||||
let content = fs.readFileSync(path.join(__dirname, '..', 'fixtures', 'logs', file), 'ascii');
|
||||
content = content.replace(/\s+/g, '');
|
||||
|
||||
assert(content.match(new RegExp(letter, 'g'))[0].length, content.length);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
Reference in New Issue
Block a user