ember-try
Version:
An ember-cli addon to test against multiple dependencies, such as ember and ember-data.
103 lines (92 loc) • 2.68 kB
JavaScript
const chalk = require('chalk');
const Table = require('cli-table3');
const { error, info, log, success } = require('./console');
module.exports = class ResultSummary {
constructor(options) {
this.results = options.results;
}
print() {
let task = this;
let colorAndMessage;
let failMessage;
let countPassed = 0;
let countFailed = 0;
let allowedFailCount = 0;
task._printResultHeader();
this.results.forEach((scenario) => {
if (scenario.result) {
colorAndMessage = chalk.green(`Scenario ${scenario.scenario}: SUCCESS`);
countPassed++;
} else {
failMessage = `Scenario ${scenario.scenario}: FAIL`;
if (scenario.allowedToFail) {
failMessage = `${failMessage} (Allowed)`;
allowedFailCount++;
}
colorAndMessage = chalk.red(failMessage);
countFailed++;
}
log(colorAndMessage);
log(`Command run: ${scenario.command}`);
if (scenario.envState) {
log(`with env: ${JSON.stringify(scenario.envState, null, 2)}`);
}
task._printDependencyTable(scenario.dependencyState);
});
log('');
task._printResultsSummary(countFailed, countPassed, allowedFailCount, this.results.length);
}
_printResultHeader() {
log('');
log('------ RESULTS ------');
log('');
}
_printDependencyTable(dependencyStatus) {
if (!dependencyStatus.length) {
return;
}
let colorForDepFn;
let tableRow;
let table = new Table({
head: [
chalk.gray('Dependency'),
chalk.gray('Expected'),
chalk.gray('Used'),
chalk.gray('Type'),
],
colWidths: [20, 20, 30, 10],
});
dependencyStatus.forEach((dep) => {
if (dep.versionExpected === dep.versionSeen) {
colorForDepFn = chalk.green;
} else {
colorForDepFn = chalk.yellow;
}
tableRow = [
dep.name,
dep.versionExpected || 'Not Installed',
dep.versionSeen || 'Not Installed',
dep.packageManager,
].map((column) => {
return colorForDepFn(column);
});
table.push(tableRow);
});
log(table);
log('');
}
_printResultsSummary(countFailed, countPassed, allowedFailCount, total) {
if (countFailed) {
let failMessage = `${countFailed} scenarios failed`;
if (allowedFailCount) {
failMessage = `${failMessage} (${allowedFailCount} allowed)`;
}
error(failMessage);
success(`${countPassed} scenarios succeeded`);
info(`${total} scenarios run`);
} else {
success(`All ${countPassed} scenarios succeeded`);
}
}
};
;