refactor app directory structure and add tests
This commit is contained in:
197
tests/node_modules/nightwatch/lib/util/logger.js
generated
vendored
Normal file
197
tests/node_modules/nightwatch/lib/util/logger.js
generated
vendored
Normal file
@@ -0,0 +1,197 @@
|
||||
var util = require('util');
|
||||
var Settings = {
|
||||
log_timestamp : false,
|
||||
colors : true,
|
||||
enabled : true
|
||||
};
|
||||
|
||||
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
|
||||
'Oct', 'Nov', 'Dec'];
|
||||
|
||||
function getDate() {
|
||||
var now = new Date();
|
||||
return [now.toLocaleDateString(), now.toLocaleTimeString()].join(' ');
|
||||
}
|
||||
|
||||
function pad(n) {
|
||||
return n < 10 ? '0' + n.toString(10) : n.toString(10);
|
||||
}
|
||||
|
||||
// 26 Feb 16:19:34
|
||||
function timestamp() {
|
||||
var d = new Date();
|
||||
var time = [pad(d.getHours()),
|
||||
pad(d.getMinutes()),
|
||||
pad(d.getSeconds())].join(':');
|
||||
return [d.getDate(), months[d.getMonth()], time].join(' ');
|
||||
}
|
||||
|
||||
function getPrefix(tag, severity) {
|
||||
var levels = ['EMERG', 'ALERT', 'CRITICAL', 'ERROR', 'WARNING', 'NOTICE', 'INFO', 'DEBUG'];
|
||||
return tag + ' ' + levels[severity] +' - ';
|
||||
}
|
||||
|
||||
function ConsoleColor() {
|
||||
var self = this;
|
||||
var mappings = {
|
||||
blue : '0;34',
|
||||
light_blue : '1;34'
|
||||
};
|
||||
this.background = new Background();
|
||||
|
||||
this.foreground_colors = {};
|
||||
this.foreground_colors['black'] = '0;30';
|
||||
this.foreground_colors['dark_gray'] = '1;30';
|
||||
this.foreground_colors['blue'] = '0;34';
|
||||
this.foreground_colors['light_blue'] = '1;34';
|
||||
this.foreground_colors['green'] = '0;32';
|
||||
this.foreground_colors['light_green'] = '1;32';
|
||||
this.foreground_colors['cyan'] = '0;36';
|
||||
this.foreground_colors['light_cyan'] = '1;36';
|
||||
this.foreground_colors['red'] = '0;31';
|
||||
this.foreground_colors['light_red'] = '1;31';
|
||||
this.foreground_colors['purple'] = '0;35';
|
||||
this.foreground_colors['light_purple'] = '1;35';
|
||||
this.foreground_colors['brown'] = '0;33';
|
||||
this.foreground_colors['yellow'] = '1;33';
|
||||
this.foreground_colors['light_gray'] = '0;37';
|
||||
this.foreground_colors['white'] = '1;37';
|
||||
this.foreground_colors['stack_trace'] = '0;90';
|
||||
|
||||
this.background_colors = {};
|
||||
this.background_colors['black'] = '40';
|
||||
this.background_colors['red'] = '41';
|
||||
this.background_colors['green'] = '42';
|
||||
this.background_colors['yellow'] = '43';
|
||||
this.background_colors['blue'] = '44';
|
||||
this.background_colors['magenta'] = '45';
|
||||
this.background_colors['cyan'] = '46';
|
||||
this.background_colors['light_gray'] = '47';
|
||||
|
||||
Object.keys(this.foreground_colors).forEach(function(k) {
|
||||
ConsoleColor.prototype[k.toLowerCase()] = function Foreground(text, background) {
|
||||
var string = '\033[' + self.foreground_colors[k.toLowerCase()] + 'm';
|
||||
if (background !== undefined) {
|
||||
string += background();
|
||||
}
|
||||
|
||||
string += text + '\033[0m';
|
||||
return string;
|
||||
};
|
||||
});
|
||||
|
||||
Object.keys(this.background_colors).forEach(function(k) {
|
||||
Background.prototype[k.toLowerCase()] = function Background(text) {
|
||||
return '\033[' + self.background_colors[k.toLowerCase()] + 'm';
|
||||
};
|
||||
});
|
||||
return this;
|
||||
}
|
||||
function Background() { return this; }
|
||||
|
||||
var colors = new ConsoleColor();
|
||||
function logObject(obj) {
|
||||
console.log(util.inspect(obj, {
|
||||
showHidden : false,
|
||||
depth : 3,
|
||||
colors : Settings.colors
|
||||
}));
|
||||
}
|
||||
|
||||
function logTimestamp() {
|
||||
if (Settings.log_timestamp) {
|
||||
return colors.white(timestamp()) + ' ';
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
function logMessage(type, message, args) {
|
||||
if (!message || !Settings.enabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
var messageStr = '';
|
||||
var timestamp = logTimestamp();
|
||||
switch (type) {
|
||||
case 'ERROR':
|
||||
messageStr = colors.yellow(type, colors.background.dark_gray) +' '+
|
||||
timestamp + colors.light_green(message);
|
||||
break;
|
||||
case 'INFO':
|
||||
messageStr = colors.light_purple(type, colors.background.black) +' '+
|
||||
timestamp + colors.light_cyan(message);
|
||||
break;
|
||||
case 'LOG':
|
||||
messageStr = colors.white(type+' ', colors.background.black) +' '+
|
||||
timestamp + colors.white(message);
|
||||
break;
|
||||
case 'WARN':
|
||||
messageStr = colors.light_green(type, colors.background.black) +' '+
|
||||
timestamp + colors.light_green(message);
|
||||
break;
|
||||
}
|
||||
|
||||
process.stdout.write(messageStr);
|
||||
|
||||
if (args.length > 0) {
|
||||
var inlineArgs = [];
|
||||
args.forEach(function(item) {
|
||||
if (Object.prototype.toString.call(item) === '[object Object]' && Object.keys(item).length > 0) {
|
||||
if (inlineArgs.length) {
|
||||
console.log.apply(console, inlineArgs);
|
||||
inlineArgs = [];
|
||||
}
|
||||
logObject(item);
|
||||
} else {
|
||||
inlineArgs.push(item);
|
||||
}
|
||||
});
|
||||
if (inlineArgs.length) {
|
||||
process.stdout.write(' ');
|
||||
console.log.apply(console, inlineArgs);
|
||||
inlineArgs = [];
|
||||
}
|
||||
} else {
|
||||
process.stdout.write('\n');
|
||||
}
|
||||
}
|
||||
|
||||
exports.info = function(message) {
|
||||
var args = Array.prototype.slice.call(arguments, 1);
|
||||
logMessage('INFO', message, args);
|
||||
};
|
||||
|
||||
exports.log = function(message) {
|
||||
var args = Array.prototype.slice.call(arguments, 1);
|
||||
logMessage('LOG', message, args);
|
||||
};
|
||||
|
||||
exports.warn = function(message) {
|
||||
var args = Array.prototype.slice.call(arguments, 1);
|
||||
logMessage('WARN', message, args);
|
||||
};
|
||||
|
||||
exports.error = function(message) {
|
||||
var args = Array.prototype.slice.call(arguments, 1);
|
||||
logMessage('ERROR', message, args);
|
||||
};
|
||||
|
||||
exports.disableColors = function () {
|
||||
Settings.colors = false;
|
||||
Object.keys(ConsoleColor.prototype).forEach(function (color) {
|
||||
ConsoleColor.prototype[color] = function (text) {
|
||||
return text;
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
exports.disable = function() {
|
||||
Settings.enabled = false;
|
||||
};
|
||||
exports.enable = function() {
|
||||
Settings.enabled = true;
|
||||
};
|
||||
exports.isEnabled = function() {
|
||||
return Settings.enabled;
|
||||
};
|
||||
exports.colors = colors;
|
Reference in New Issue
Block a user