cucumber
Version:
The official JavaScript implementation of Cucumber.
115 lines (98 loc) • 6.05 kB
JavaScript
;Object.defineProperty(exports, "__esModule", { value: true });var _defineProperty2 = require('babel-runtime/helpers/defineProperty');var _defineProperty3 = _interopRequireDefault(_defineProperty2);var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);var _createClass2 = require('babel-runtime/helpers/createClass');var _createClass3 = _interopRequireDefault(_createClass2);var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);var _inherits2 = require('babel-runtime/helpers/inherits');var _inherits3 = _interopRequireDefault(_inherits2);var _PrettyFormatter$CHAR;var _data_table = require('../models/step_arguments/data_table');var _data_table2 = _interopRequireDefault(_data_table);
var _doc_string = require('../models/step_arguments/doc_string');var _doc_string2 = _interopRequireDefault(_doc_string);
var _figures = require('figures');var _figures2 = _interopRequireDefault(_figures);
var _hook = require('../models/hook');var _hook2 = _interopRequireDefault(_hook);
var _status = require('../status');var _status2 = _interopRequireDefault(_status);
var _summary_formatter = require('./summary_formatter');var _summary_formatter2 = _interopRequireDefault(_summary_formatter);
var _cliTable = require('cli-table');var _cliTable2 = _interopRequireDefault(_cliTable);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}var
PrettyFormatter = function (_SummaryFormatter) {(0, _inherits3.default)(PrettyFormatter, _SummaryFormatter);function PrettyFormatter() {(0, _classCallCheck3.default)(this, PrettyFormatter);return (0, _possibleConstructorReturn3.default)(this, (PrettyFormatter.__proto__ || Object.getPrototypeOf(PrettyFormatter)).apply(this, arguments));}(0, _createClass3.default)(PrettyFormatter, [{ key: 'applyColor', value: function applyColor(
stepResult, text) {
var status = stepResult.status;
return this.colorFns[status](text);
} }, { key: 'formatDataTable', value: function formatDataTable(
dataTable) {
var rows = dataTable.raw().map(function (row) {
return row.map(function (cell) {
return cell.replace(/\\/g, '\\\\').replace(/\n/g, '\\n');
});
});
var table = new _cliTable2.default({
chars: {
'bottom': '', 'bottom-left': '', 'bottom-mid': '', 'bottom-right': '',
'left': '|', 'left-mid': '',
'mid': '', 'mid-mid': '', 'middle': '|',
'right': '|', 'right-mid': '',
'top': '', 'top-left': '', 'top-mid': '', 'top-right': '' },
style: {
border: [], 'padding-left': 1, 'padding-right': 1 } });
table.push.apply(table, rows);
return table.toString();
} }, { key: 'formatDocString', value: function formatDocString(
docString) {
return '"""\n' + docString.content + '\n"""';
} }, { key: 'formatTags', value: function formatTags(
tags) {
if (tags.length === 0) {
return '';
}
var tagNames = tags.map(function (tag) {return tag.name;});
return this.colorFns.tag(tagNames.join(' '));
} }, { key: 'handleAfterScenario', value: function handleAfterScenario()
{
this.log('\n');
} }, { key: 'handleBeforeFeature', value: function handleBeforeFeature(
feature) {
var text = '';
var tagsText = this.formatTags(feature.tags);
if (tagsText) {
text = tagsText + '\n';
}
text += feature.keyword + ': ' + feature.name;
var description = feature.description;
if (description) {
text += '\n\n' + this.indent(description, 2);
}
this.log(text + '\n\n');
} }, { key: 'handleBeforeScenario', value: function handleBeforeScenario(
scenario) {
var text = '';
var tagsText = this.formatTags(scenario.tags);
if (tagsText) {
text = tagsText + '\n';
}
text += scenario.keyword + ': ' + scenario.name;
this.logIndented(text + '\n', 1);
} }, { key: 'handleStepResult', value: function handleStepResult(
stepResult) {
if (!(stepResult.step instanceof _hook2.default)) {
this.logStepResult(stepResult);
}
} }, { key: 'logIndented', value: function logIndented(
text, level) {
this.log(this.indent(text, level * 2));
} }, { key: 'logStepResult', value: function logStepResult(
stepResult) {var _this2 = this;var
status = stepResult.status;var step = stepResult.step;
var colorFn = this.colorFns[status];
var symbol = PrettyFormatter.CHARACTERS[stepResult.status];
var identifier = colorFn(symbol + ' ' + step.keyword + (step.name || ''));
this.logIndented(identifier + '\n', 1);
step.arguments.forEach(function (arg) {
var str = void 0;
if (arg instanceof _data_table2.default) {
str = _this2.formatDataTable(arg);
} else if (arg instanceof _doc_string2.default) {
str = _this2.formatDocString(arg);
} else {
throw new Error('Unknown argument type: ' + arg);
}
_this2.logIndented(colorFn(str) + '\n', 3);
});
} }]);return PrettyFormatter;}(_summary_formatter2.default);exports.default = PrettyFormatter;
PrettyFormatter.CHARACTERS = (_PrettyFormatter$CHAR = {}, (0, _defineProperty3.default)(_PrettyFormatter$CHAR,
_status2.default.AMBIGUOUS, _figures2.default.cross), (0, _defineProperty3.default)(_PrettyFormatter$CHAR,
_status2.default.FAILED, _figures2.default.cross), (0, _defineProperty3.default)(_PrettyFormatter$CHAR,
_status2.default.PASSED, _figures2.default.tick), (0, _defineProperty3.default)(_PrettyFormatter$CHAR,
_status2.default.PENDING, '?'), (0, _defineProperty3.default)(_PrettyFormatter$CHAR,
_status2.default.SKIPPED, '-'), (0, _defineProperty3.default)(_PrettyFormatter$CHAR,
_status2.default.UNDEFINED, '?'), _PrettyFormatter$CHAR);