summaryrefslogtreecommitdiff
path: root/node_modules/winston/test/transports/file-archive-test.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/winston/test/transports/file-archive-test.js')
-rw-r--r--node_modules/winston/test/transports/file-archive-test.js83
1 files changed, 83 insertions, 0 deletions
diff --git a/node_modules/winston/test/transports/file-archive-test.js b/node_modules/winston/test/transports/file-archive-test.js
new file mode 100644
index 0000000..d076ce0
--- /dev/null
+++ b/node_modules/winston/test/transports/file-archive-test.js
@@ -0,0 +1,83 @@
+/*
+ * file-archive-test.js: Tests for instances of the File transport setting the archive option,
+ *
+ * (C) 2015 Nimrod Becker
+ * 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 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
+});
+
+function data(ch) {
+ return new Array(1018).join(String.fromCharCode(65 + ch));
+}
+
+function logKbytes(kbytes, txt) {
+ //
+ // 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++) {
+ archiveTransport.log('info', data(txt), null, function() {});
+ }
+}
+
+vows.describe('winston/transports/file/zippedArchive').addBatch({
+ "An instance of the File Transport with tailable true": {
+ "when created archived files are rolled": {
+ topic: function() {
+ var that = this,
+ created = 0;
+
+ archiveTransport.on('logged', function() {
+ if (++created === 6) {
+ return that.callback();
+ }
+
+ logKbytes(4, created);
+ });
+
+ logKbytes(4, created);
+ },
+ "should be only 3 files called testarchive.log, testarchive1.log.gz and testarchive2.log.gz": function() {
+ //Give the archive a little time to settle
+ // setTimeout(function() {
+ for (var num = 0; num < 6; num++) {
+ var file = !num ? 'testarchive.log' : 'testarchive' + num + '.log.gz',
+ fullpath = path.join(__dirname, '..', 'fixtures', 'logs', file);
+
+ // There should be no files with that name
+ if (num >= 3) {
+ assert.throws(function() {
+ fs.statSync(fullpath);
+ }, Error);
+ } else {
+ // The other files should exist
+ assert.doesNotThrow(function() {
+ fs.statSync(fullpath);
+ }, Error);
+ }
+ }
+ //},5000);
+ },
+ }
+ },
+}).export(module);