fixed tests broken by alwaysIncludePattern

This commit is contained in:
Gareth Jones 2013-05-05 13:44:01 +10:00
parent 097ae3d7f1
commit 936ad4da8e
4 changed files with 69 additions and 69 deletions

View File

@ -22,7 +22,7 @@ process.on('exit', function() {
function appender(filename, pattern, alwaysIncludePattern, layout) { function appender(filename, pattern, alwaysIncludePattern, layout) {
layout = layout || layouts.basicLayout; layout = layout || layouts.basicLayout;
var logFile = new streams.DateRollingFileStream(filename, pattern, alwaysIncludePattern); var logFile = new streams.DateRollingFileStream(filename, pattern, { alwaysIncludePattern: alwaysIncludePattern });
openFiles.push(logFile); openFiles.push(logFile);
return function(logEvent) { return function(logEvent) {
@ -35,7 +35,7 @@ function configure(config, options) {
var layout; var layout;
if (config.layout) { if (config.layout) {
layout = layouts.layout(config.layout.type, config.layout); layout = layouts.layout(config.layout.type, config.layout);
} }
if (!config.alwaysIncludePattern) { if (!config.alwaysIncludePattern) {

View File

@ -13,25 +13,30 @@ if (process.env.NODE_DEBUG && /\blog4js\b/.test(process.env.NODE_DEBUG)) {
debug = function() { }; debug = function() { };
} }
function DateRollingFileStream(filename, pattern, alwaysIncludePattern, options, now) { function DateRollingFileStream(filename, pattern, options, now) {
debug("Now is " + now); debug("Now is " + now);
if (pattern && typeof(pattern) === 'object') { if (pattern && typeof(pattern) === 'object') {
now = options; now = options;
options = pattern; options = pattern;
pattern = null; pattern = null;
} }
this.pattern = pattern || '.yyyy-MM-dd'; this.pattern = pattern || '.yyyy-MM-dd';
this.now = now || Date.now; this.now = now || Date.now;
this.lastTimeWeWroteSomething = format.asString(this.pattern, new Date(this.now())); this.lastTimeWeWroteSomething = format.asString(this.pattern, new Date(this.now()));
this.baseFilename = filename;
this.alwaysIncludePattern = alwaysIncludePattern; if (options) {
if (this.alwaysIncludePattern) { if (options.alwaysIncludePattern) {
this.baseFilename = filename; filename = filename + this.lastTimeWeWroteSomething;
filename = filename + this.lastTimeWeWroteSomething;
} }
debug("this.now is " + this.now + ", now is " + now); delete options.alwaysIncludePattern;
if (options === {}) {
options = null;
}
}
debug("this.now is " + this.now + ", now is " + now);
DateRollingFileStream.super_.call(this, filename, options); DateRollingFileStream.super_.call(this, filename, options);
} }
util.inherits(DateRollingFileStream, BaseRollingFileStream); util.inherits(DateRollingFileStream, BaseRollingFileStream);

View File

@ -72,63 +72,58 @@ vows.describe('../lib/appenders/dateFile').addBatch({
} }
}).addBatch({ }).addBatch({
'configure': { 'configure': {
'with dateFileAppender': { 'with dateFileAppender': {
topic: function() { topic: function() {
var log4js = require('../lib/log4js') var log4js = require('../lib/log4js')
, logger; , logger;
//this config file defines one file appender (to ./date-file-test.log) //this config file defines one file appender (to ./date-file-test.log)
//and sets the log level for "tests" to WARN //and sets the log level for "tests" to WARN
log4js.configure('test/with-dateFile.json'); log4js.configure('test/with-dateFile.json');
logger = log4js.getLogger('tests'); logger = log4js.getLogger('tests');
logger.info('this should not be written to the file'); logger.info('this should not be written to the file');
logger.warn('this should be written to the file'); logger.warn('this should be written to the file');
fs.readFile(path.join(__dirname, 'date-file-test.log'), 'utf8', this.callback); fs.readFile(path.join(__dirname, 'date-file-test.log'), 'utf8', this.callback);
}, },
teardown: removeFile('date-file-test.log'), teardown: removeFile('date-file-test.log'),
'should load appender configuration from a json file': function(err, contents) { 'should load appender configuration from a json file': function(err, contents) {
assert.include(contents, 'this should be written to the file' + require('os').EOL); assert.include(contents, 'this should be written to the file' + require('os').EOL);
assert.equal(contents.indexOf('this should not be written to the file'), -1); assert.equal(contents.indexOf('this should not be written to the file'), -1);
} }
}, },
'with options.alwaysIncludePattern': { 'with options.alwaysIncludePattern': {
topic: function() { topic: function() {
var log4js = require('../lib/log4js') var log4js = require('../lib/log4js')
, format = require('../lib/date_format') , format = require('../lib/date_format')
, logger , logger
, options = { , options = {
"appenders": [ "appenders": [
{ {
"category": "tests", "category": "tests",
"type": "dateFile", "type": "dateFile",
"filename": "test/date-file-test", "filename": "test/date-file-test",
"pattern": "-from-MM-dd.log", "pattern": "-from-MM-dd.log",
"alwaysIncludePattern": true, "alwaysIncludePattern": true,
"layout": { "layout": {
"type": "messagePassThrough" "type": "messagePassThrough"
} }
}
]
} }
]
}
, thisTime = format.asString(options.appenders[0].pattern, new Date()); , thisTime = format.asString(options.appenders[0].pattern, new Date());
log4js.clearAppenders(); log4js.clearAppenders();
log4js.configure(options); log4js.configure(options);
logger = log4js.getLogger('tests'); logger = log4js.getLogger('tests');
logger.warn('this should be written to the file'); logger.warn('this should be written to the file with the appended date');
return thisTime; this.teardown = removeFile('date-file-test' + thisTime);
}, fs.readFile(path.join(__dirname, 'date-file-test' + thisTime), 'utf8', this.callback);
teardown: function(topic) { },
removeFile('date-file-test' + topic); 'should create file with the correct pattern': function(contents) {
}, assert.include(contents, 'this should be written to the file with the appended date');
'should create file with the correct pattern': function(topic) { }
assert.equal(fs.existsSync(path.join(__dirname, 'date-file-test' + topic)), true);
},
'should not create file with the base filename': function(topic) {
assert.equal(fs.existsSync(path.join(__dirname, 'date-file-test')), false);
} }
}
} }
}).exportTo(module); }).exportTo(module);

View File

@ -76,8 +76,8 @@ vows.describe('DateRollingFileStream').addBatch({
var that = this, var that = this,
stream = new DateRollingFileStream(__dirname + '/test-date-rolling-file-stream-5', '.yyyy-MM-dd', null, now); stream = new DateRollingFileStream(__dirname + '/test-date-rolling-file-stream-5', '.yyyy-MM-dd', null, now);
stream.write("First message\n", 'utf8', function() { stream.write("First message\n", 'utf8', function() {
that.callback(null, stream); that.callback(null, stream);
}); });
}, },
teardown: cleanUp(__dirname + '/test-date-rolling-file-stream-5'), teardown: cleanUp(__dirname + '/test-date-rolling-file-stream-5'),