/
log.js
92 lines (75 loc) · 2.23 KB
/
log.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
var util = require('util'),
Table = require('cli-table');
var logs = {
assertions: {
data: [],
table: null
},
tests: {
data: [],
table: null
},
summary: {
data: [],
table: null
}
};
exports.assertion = (function() {
var table,
currentModule, module,
currentTest, test;
table = logs.assertions.table = new Table({
head: ['Module', 'Test', 'Assertion', 'Result'],
colWidths: [40, 40, 40, 8]
});
return function(data) {
// just easier to read the table
if (data.module === currentModule) {
module = '';
} else {
module = currentModule = data.module;
}
// just easier to read the table
if (data.test === currentTest) {
test = '';
} else {
test = currentTest = data.test;
}
table.push([module, test, data.message, data.result ? 'ok' : 'fail']);
logs.assertions.data.push(data);
};
}());
exports.test = (function() {
var table,
currentModule, module;
table = logs.tests.table = new Table({
head: ['Module', 'Test', 'Failed', 'Passed', 'Total'],
colWidths: [40, 40, 8, 8, 8]
});
return function(data) {
// just easier to read the table
if (data.module === currentModule) {
module = '';
} else {
module = currentModule = data.module;
}
table.push([module, data.name, data.failed, data.passed, data.total]);
logs.tests.data.push(data);
};
}());
exports.summary = (function() {
var table = logs.summary.table = new Table({
head: ['Failed', 'Passed', 'Total', 'Runtime'],
colWidths: [10, 10, 10, 10]
});
return function(data) {
table.push([data.failed, data.passed, data.total, data.runtime]);
logs.summary.data.push(data);
};
}());
exports.print = function(name) {
if (logs[name].data.length) {
var upperName = name.charAt(0).toUpperCase() + name.substr(1);
util.print('\n' + upperName + '\n' + logs[name].table.toString() + '\n');
}
};