testem
Version:
Test'em 'scripts! Javascript Unit testing made easy.
71 lines (62 loc) • 1.74 kB
JavaScript
'use strict';
const displayutils = require('../utils/displayutils');
module.exports = class TapReporter {
constructor(silent, out, config) {
this.out = out || process.stdout;
this.silent = silent;
this.quietLogs = !!config.get('tap_quiet_logs');
this.failsOnly = !!config.get('tap_failed_tests_only');
this.strictSpecCompliance = !!config.get('tap_strict_spec_compliance');
this.stoppedOnError = null;
this.id = 1;
this.total = 0;
this.pass = 0;
this.skipped = 0;
this.todo = 0;
this.results = [];
this.errors = [];
this.logs = [];
this.logProcessor = config.get('tap_log_processor');
}
report(prefix, data) {
this.results.push({
launcher: prefix,
result: data
});
this.display(prefix, data);
this.total++;
if (data.skipped) {
this.skipped++;
} else if (data.passed && !data.todo) {
this.pass++;
} else if (!data.passed && data.todo) {
this.todo++;
}
}
summaryDisplay() {
return displayutils.summaryDisplay.call(this);
}
/*
* Based on current settings in this object, will the given value be
* displayed by 'display'?
*/
willDisplay(result) {
let show = !this.silent && !!result && (!this.failsOnly || result.error);
return show;
}
/*
* Display a formatted message for the result, but only if
* we've configured to do that.
*/
display(prefix, result) {
if (this.willDisplay(result)) {
this.out.write(displayutils.resultString(this.id++, prefix, result, this.quietLogs, this.strictSpecCompliance, this.logProcessor));
}
}
finish() {
if (this.silent) {
return;
}
this.out.write('\n' + this.summaryDisplay() + '\n');
}
};