123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- 'use strict';
- const path = require('path');
- const winston = require('../../');
- const helpers = require('../helpers');
- const fs = require('fs');
- const { MESSAGE } = require('triple-beam');
- const split = require('split2');
- const assume = require('assume');
- function noop() {};
- describe('File({ filename })', function () {
- this.timeout(10 * 1000);
- it('should write to the file when logged to with expected object', function (done) {
- var filename = path.join(__dirname, '..', 'fixtures', 'file', 'simple.log');
- var transport = new winston.transports.File({
- filename: filename
- });
- var info = { [MESSAGE]: 'this is my log message' };
- var logged = 0;
- var read = 0
- function cleanup() {
- fs.unlinkSync(filename);
- }
- transport.log(info, noop);
- setImmediate(function () {
- helpers.tryRead(filename)
- .on('error', function (err) {
- assume(err).false();
- cleanup();
- done();
- })
- .pipe(split())
- .on('data', function (d) {
- assume(++read).lte(logged);
- assume(d).to.equal(info[MESSAGE]);
- })
- .on('end', function () {
- cleanup();
- done();
- });
- });
- transport.once('logged', function () {
- logged++;
- });
- });
- //
- // TODO: Rewrite these tests in mocha
- //
- // "Error object in metadata #610": {
- // topic: function () {
- // var myErr = new Error("foo");
- //
- // fileTransport.log('info', 'test message', myErr, this.callback.bind(this, null, myErr));
- // },
- // "should not be modified": function (err, myErr) {
- // assert.equal(myErr.message, "foo");
- // // Not sure if this is the best possible way to check if additional props appeared
- // assert.deepEqual(Object.getOwnPropertyNames(myErr), Object.getOwnPropertyNames(new Error("foo")));
- // }
- // }
- //
- // "Date object in metadata": {
- // topic: function () {
- // var obj = new Date(1000);
- // fileTransport.log('info', 'test message', obj, this.callback.bind(this, null, obj));
- // },
- // "should not be modified": function (err, obj) {
- // // Not sure if this is the best possible way to check if additional props appeared
- // assert.deepEqual(Object.getOwnPropertyNames(obj), Object.getOwnPropertyNames(new Date()));
- // }
- // }
- //
- // "Plain object in metadata": {
- // topic: function () {
- // var obj = { message: "foo" };
- // fileTransport.log('info', 'test message', obj, this.callback.bind(this, null, obj));
- // },
- // "should not be modified": function (err, obj) {
- // assert.deepEqual(obj, { message: "foo" });
- // }
- // }
- //
- // "An instance of the File Transport": require('./transport')(winston.transports.File, {
- // filename: path.join(__dirname, '..', 'fixtures', 'logs', 'testfile.log')
- // })
- });
- describe('File({ stream })', function () {
- it('should display the deprecation notice');
- it('should write to the stream when logged to with expected object', function (done) {
- var streamfile = path.join(__dirname, '..', 'fixtures', 'file', 'simple-stream.log');
- var stream = fs.createWriteStream(streamfile);
- var streamTransport = new winston.transports.File({
- stream: stream
- });
- done();
- //
- // TODO: Flesh out these assertions
- //
- });
- });
- require('abstract-winston-transport')({
- name: 'File',
- Transport: winston.transports.File,
- construct: {
- filename: path.join(__dirname, '..', 'fixtures', 'file', 'abstract.log')
- },
- after(opts, done) {
- const abstractFile = opts.construct.filename;
- fs.unlink(abstractFile, done.bind(null, null));
- }
- });
|