mirror of
https://github.com/log4js-node/log4js-node.git
synced 2025-12-08 19:26:01 +00:00
109 lines
2.6 KiB
JavaScript
109 lines
2.6 KiB
JavaScript
const { test } = require('tap');
|
|
const sandbox = require('@log4js-node/sandboxed-module');
|
|
const realFS = require('fs');
|
|
|
|
const modulePath = 'some/path/to/mylog4js.json';
|
|
const pathsChecked = [];
|
|
|
|
let fakeFS = {};
|
|
let dependencies;
|
|
let fileRead;
|
|
|
|
test('log4js configure', (batch) => {
|
|
batch.beforeEach((done) => {
|
|
fileRead = 0;
|
|
|
|
fakeFS = {
|
|
realpath: realFS.realpath, // fs-extra looks for this
|
|
ReadStream: realFS.ReadStream, // need to define these, because graceful-fs uses them
|
|
WriteStream: realFS.WriteStream,
|
|
read: realFS.read,
|
|
closeSync: () => {},
|
|
config: {
|
|
appenders: {
|
|
console: {
|
|
type: 'console',
|
|
layout: { type: 'messagePassThrough' },
|
|
},
|
|
},
|
|
categories: {
|
|
default: {
|
|
appenders: ['console'],
|
|
level: 'INFO',
|
|
},
|
|
},
|
|
},
|
|
readdirSync: (dir) => require('fs').readdirSync(dir),
|
|
readFileSync: (file, encoding) => {
|
|
fileRead += 1;
|
|
batch.type(file, 'string');
|
|
batch.equal(file, modulePath);
|
|
batch.equal(encoding, 'utf8');
|
|
return JSON.stringify(fakeFS.config);
|
|
},
|
|
statSync: (path) => {
|
|
pathsChecked.push(path);
|
|
if (path === modulePath) {
|
|
return { mtime: new Date() };
|
|
}
|
|
throw new Error('no such file');
|
|
},
|
|
};
|
|
|
|
dependencies = {
|
|
requires: {
|
|
fs: fakeFS,
|
|
},
|
|
};
|
|
|
|
if (typeof done === 'function') {
|
|
done();
|
|
}
|
|
});
|
|
|
|
batch.test(
|
|
'when configuration file loaded via LOG4JS_CONFIG env variable',
|
|
(t) => {
|
|
process.env.LOG4JS_CONFIG = 'some/path/to/mylog4js.json';
|
|
|
|
const log4js = sandbox.require('../../lib/log4js', dependencies);
|
|
|
|
t.notOk(log4js.isConfigured(), 'should not have configured');
|
|
log4js.getLogger('test-logger');
|
|
t.ok(log4js.isConfigured(), 'should be configured');
|
|
|
|
t.equal(fileRead, 1, 'should load the specified local config file');
|
|
|
|
delete process.env.LOG4JS_CONFIG;
|
|
|
|
t.end();
|
|
}
|
|
);
|
|
|
|
batch.test(
|
|
'when configuration is set via configure() method call, return the log4js object',
|
|
(t) => {
|
|
const log4js = sandbox
|
|
.require('../../lib/log4js', dependencies)
|
|
.configure(fakeFS.config);
|
|
t.type(
|
|
log4js,
|
|
'object',
|
|
'Configure method call should return the log4js object!'
|
|
);
|
|
|
|
const log = log4js.getLogger('daemon');
|
|
t.type(
|
|
log,
|
|
'object',
|
|
'log4js object, returned by configure(...) method should be able to create log object.'
|
|
);
|
|
t.type(log.info, 'function');
|
|
|
|
t.end();
|
|
}
|
|
);
|
|
|
|
batch.end();
|
|
});
|