UNPKG

cucumber

Version:

The official JavaScript implementation of Cucumber.

67 lines (53 loc) 7.04 kB
'use strict';Object.defineProperty(exports, "__esModule", { value: true });var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);var _regenerator = require('babel-runtime/regenerator');var _regenerator2 = _interopRequireDefault(_regenerator);var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);var _createClass2 = require('babel-runtime/helpers/createClass');var _createClass3 = _interopRequireDefault(_createClass2);var _lodash = require('lodash');var _lodash2 = _interopRequireDefault(_lodash); var _helpers = require('./helpers'); var _configuration_builder = require('./configuration_builder');var _configuration_builder2 = _interopRequireDefault(_configuration_builder); var _builder = require('../formatter/builder');var _builder2 = _interopRequireDefault(_builder); var _fs = require('mz/fs');var _fs2 = _interopRequireDefault(_fs); var _bluebird = require('bluebird');var _bluebird2 = _interopRequireDefault(_bluebird); var _runtime = require('../runtime');var _runtime2 = _interopRequireDefault(_runtime); var _scenario_filter = require('../scenario_filter');var _scenario_filter2 = _interopRequireDefault(_scenario_filter); var _builder3 = require('../support_code_library/builder');var _builder4 = _interopRequireDefault(_builder3);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}var Cli = function () { function Cli(_ref) {var argv = _ref.argv;var cwd = _ref.cwd;var stdout = _ref.stdout;(0, _classCallCheck3.default)(this, Cli); this.argv = argv; this.cwd = cwd; this.stdout = stdout; }(0, _createClass3.default)(Cli, [{ key: 'getConfiguration', value: function () {var _ref2 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee() {var fullArgv;return _regenerator2.default.wrap(function _callee$(_context) {while (1) {switch (_context.prev = _context.next) {case 0:_context.next = 2;return ( (0, _helpers.getExpandedArgv)({ argv: this.argv, cwd: this.cwd }));case 2:fullArgv = _context.sent;_context.next = 5;return ( _configuration_builder2.default.build({ argv: fullArgv, cwd: this.cwd }));case 5:return _context.abrupt('return', _context.sent);case 6:case 'end':return _context.stop();}}}, _callee, this);}));function getConfiguration() {return _ref2.apply(this, arguments);}return getConfiguration;}() }, { key: 'getFormatters', value: function () {var _ref3 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee3(_ref4) {var _this = this;var formatOptions = _ref4.formatOptions;var formats = _ref4.formats;var supportCodeLibrary = _ref4.supportCodeLibrary;var streamsToClose, formatters, cleanup;return _regenerator2.default.wrap(function _callee3$(_context4) {while (1) {switch (_context4.prev = _context4.next) {case 0: streamsToClose = [];_context4.next = 3;return ( _bluebird2.default.map(formats, function () {var _ref5 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee2(_ref6) {var _context2;var type = _ref6.type;var outputTo = _ref6.outputTo;var stream, fd, typeOptions;return _regenerator2.default.wrap(function _callee2$(_context3) {while (1) {switch (_context3.prev = _context3.next) {case 0: stream = _this.stdout;if (! outputTo) {_context3.next = 7;break;}_context3.next = 4;return ( _fs2.default.open(outputTo, 'w'));case 4:fd = _context3.sent; stream = _fs2.default.createWriteStream(null, { fd: fd }); streamsToClose.push(stream);case 7: typeOptions = _lodash2.default.assign({ log: (_context2 = stream).write.bind(_context2), supportCodeLibrary: supportCodeLibrary }, formatOptions);return _context3.abrupt('return', _builder2.default.build(type, typeOptions));case 9:case 'end':return _context3.stop();}}}, _callee2, _this);}));return function (_x2) {return _ref5.apply(this, arguments);};}()));case 3:formatters = _context4.sent; cleanup = function cleanup() { return _bluebird2.default.each(streamsToClose, function (stream) {return _bluebird2.default.promisify(stream.end.bind(stream))();}); };return _context4.abrupt('return', { cleanup: cleanup, formatters: formatters });case 6:case 'end':return _context4.stop();}}}, _callee3, this);}));function getFormatters(_x) {return _ref3.apply(this, arguments);}return getFormatters;}() }, { key: 'getSupportCodeLibrary', value: function getSupportCodeLibrary( supportCodePaths) { var fns = (0, _helpers.getSupportCodeFunctions)(supportCodePaths); return _builder4.default.build({ cwd: this.cwd, fns: fns }); } }, { key: 'run', value: function () {var _ref7 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee4() {var configuration, supportCodeLibrary, _ref8, _ref9, features, _ref9$, cleanup, formatters, scenarioFilter, runtime, result;return _regenerator2.default.wrap(function _callee4$(_context5) {while (1) {switch (_context5.prev = _context5.next) {case 0:_context5.next = 2;return ( this.getConfiguration());case 2:configuration = _context5.sent; supportCodeLibrary = this.getSupportCodeLibrary(configuration.supportCodePaths);_context5.next = 6;return ( _bluebird2.default.all([ (0, _helpers.getFeatures)(configuration.featurePaths), this.getFormatters({ formatOptions: configuration.formatOptions, formats: configuration.formats, supportCodeLibrary: supportCodeLibrary })]));case 6:_ref8 = _context5.sent;_ref9 = (0, _slicedToArray3.default)(_ref8, 2);features = _ref9[0];_ref9$ = _ref9[1];cleanup = _ref9$.cleanup;formatters = _ref9$.formatters; scenarioFilter = new _scenario_filter2.default(configuration.scenarioFilterOptions); runtime = new _runtime2.default({ features: features, listeners: formatters, options: configuration.runtimeOptions, scenarioFilter: scenarioFilter, supportCodeLibrary: supportCodeLibrary });_context5.next = 16;return ( runtime.start());case 16:result = _context5.sent;_context5.next = 19;return ( cleanup());case 19:return _context5.abrupt('return', result);case 20:case 'end':return _context5.stop();}}}, _callee4, this);}));function run() {return _ref7.apply(this, arguments);}return run;}() }]);return Cli;}();exports.default = Cli;