cucumber
Version:
The official JavaScript implementation of Cucumber.
51 lines (33 loc) • 3.6 kB
JavaScript
'use strict';Object.defineProperty(exports, "__esModule", { value: true });var _regenerator = require('babel-runtime/regenerator');var _regenerator2 = _interopRequireDefault(_regenerator);var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);var run = function () {var _ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(
function _callee(_ref2) {var defaultTimeout = _ref2.defaultTimeout;var scenarioResult = _ref2.scenarioResult;var step = _ref2.step;var stepDefinition = _ref2.stepDefinition;var transformLookup = _ref2.transformLookup;var world = _ref2.world;var parameters, timeoutInMilliseconds, attachmentManager, error, result, validCodeLengths, data, stepResultData;return _regenerator2.default.wrap(function _callee$(_context) {while (1) {switch (_context.prev = _context.next) {case 0:
beginTiming();
parameters = stepDefinition.getInvocationParameters({ scenarioResult: scenarioResult, step: step, transformLookup: transformLookup });
timeoutInMilliseconds = stepDefinition.options.timeout || defaultTimeout;
attachmentManager = new _attachment_manager2.default();
world.attach = attachmentManager.create.bind(attachmentManager);
error = void 0, result = void 0;
validCodeLengths = stepDefinition.getValidCodeLengths(parameters);if (!
_lodash2.default.includes(validCodeLengths, stepDefinition.code.length)) {_context.next = 15;break;}_context.next = 10;return (
_user_code_runner2.default.run({
argsArray: parameters,
fn: stepDefinition.code,
thisArg: world,
timeoutInMilliseconds: timeoutInMilliseconds }));case 10:data = _context.sent;
error = data.error;
result = data.result;_context.next = 16;break;case 15:
error = stepDefinition.getInvalidCodeLengthMessage(parameters);case 16:
stepResultData = {
attachments: attachmentManager.getAll(),
duration: endTiming(),
step: step,
stepDefinition: stepDefinition };
if (result === 'pending') {
stepResultData.status = _status2.default.PENDING;
} else if (error) {
stepResultData.failureException = error;
stepResultData.status = _status2.default.FAILED;
} else {
stepResultData.status = _status2.default.PASSED;
}return _context.abrupt('return',
new _step_result2.default(stepResultData));case 19:case 'end':return _context.stop();}}}, _callee, this);}));return function run(_x) {return _ref.apply(this, arguments);};}();var _lodash = require('lodash');var _lodash2 = _interopRequireDefault(_lodash);var _attachment_manager = require('./attachment_manager');var _attachment_manager2 = _interopRequireDefault(_attachment_manager);var _status = require('../status');var _status2 = _interopRequireDefault(_status);var _step_result = require('../models/step_result');var _step_result2 = _interopRequireDefault(_step_result);var _time = require('../time');var _time2 = _interopRequireDefault(_time);var _user_code_runner = require('../user_code_runner');var _user_code_runner2 = _interopRequireDefault(_user_code_runner);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}var beginTiming = _time2.default.beginTiming;var endTiming = _time2.default.endTiming;exports.default =
{ run: run };