161 lines
12 KiB
JavaScript
161 lines
12 KiB
JavaScript
'use strict';
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.getTestCases = exports.getTestCasesFromFilesystem = exports.getExpandedArgv = undefined;
|
|
|
|
var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
|
|
|
|
var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
|
|
|
|
var _bluebird = require('bluebird');
|
|
|
|
var _bluebird2 = _interopRequireDefault(_bluebird);
|
|
|
|
var getExpandedArgv = exports.getExpandedArgv = function () {
|
|
var _ref2 = (0, _bluebird.coroutine)(function* (_ref) {
|
|
var argv = _ref.argv,
|
|
cwd = _ref.cwd;
|
|
|
|
var _ArgvParser$parse = _argv_parser2.default.parse(argv),
|
|
options = _ArgvParser$parse.options;
|
|
|
|
var fullArgv = argv;
|
|
var profileArgv = yield new _profile_loader2.default(cwd).getArgv(options.profile);
|
|
if (profileArgv.length > 0) {
|
|
fullArgv = _lodash2.default.concat(argv.slice(0, 2), profileArgv, argv.slice(2));
|
|
}
|
|
return fullArgv;
|
|
});
|
|
|
|
return function getExpandedArgv(_x) {
|
|
return _ref2.apply(this, arguments);
|
|
};
|
|
}();
|
|
|
|
var getTestCasesFromFilesystem = exports.getTestCasesFromFilesystem = function () {
|
|
var _ref4 = (0, _bluebird.coroutine)(function* (_ref3) {
|
|
var cwd = _ref3.cwd,
|
|
eventBroadcaster = _ref3.eventBroadcaster,
|
|
featureDefaultLanguage = _ref3.featureDefaultLanguage,
|
|
featurePaths = _ref3.featurePaths,
|
|
order = _ref3.order,
|
|
pickleFilter = _ref3.pickleFilter;
|
|
|
|
var result = [];
|
|
yield _bluebird2.default.each(featurePaths, function () {
|
|
var _ref5 = (0, _bluebird.coroutine)(function* (featurePath) {
|
|
var source = yield _fs2.default.readFile(featurePath, 'utf8');
|
|
result = result.concat((yield getTestCases({
|
|
eventBroadcaster: eventBroadcaster,
|
|
language: featureDefaultLanguage,
|
|
source: source,
|
|
pickleFilter: pickleFilter,
|
|
uri: _path2.default.relative(cwd, featurePath)
|
|
})));
|
|
});
|
|
|
|
return function (_x3) {
|
|
return _ref5.apply(this, arguments);
|
|
};
|
|
}());
|
|
orderTestCases(result, order);
|
|
return result;
|
|
});
|
|
|
|
return function getTestCasesFromFilesystem(_x2) {
|
|
return _ref4.apply(this, arguments);
|
|
};
|
|
}();
|
|
|
|
var getTestCases = exports.getTestCases = function () {
|
|
var _ref7 = (0, _bluebird.coroutine)(function* (_ref6) {
|
|
var eventBroadcaster = _ref6.eventBroadcaster,
|
|
language = _ref6.language,
|
|
pickleFilter = _ref6.pickleFilter,
|
|
source = _ref6.source,
|
|
uri = _ref6.uri;
|
|
|
|
var result = [];
|
|
var events = _gherkin2.default.generateEvents(source, uri, {}, language);
|
|
events.forEach(function (event) {
|
|
eventBroadcaster.emit(event.type, _lodash2.default.omit(event, 'type'));
|
|
if (event.type === 'pickle') {
|
|
var pickle = event.pickle;
|
|
|
|
if (pickleFilter.matches({ pickle: pickle, uri: uri })) {
|
|
eventBroadcaster.emit('pickle-accepted', { pickle: pickle, uri: uri });
|
|
result.push({ pickle: pickle, uri: uri });
|
|
} else {
|
|
eventBroadcaster.emit('pickle-rejected', { pickle: pickle, uri: uri });
|
|
}
|
|
}
|
|
if (event.type === 'attachment') {
|
|
throw new Error('Parse error in \'' + uri + '\': ' + event.data);
|
|
}
|
|
});
|
|
return result;
|
|
});
|
|
|
|
return function getTestCases(_x4) {
|
|
return _ref7.apply(this, arguments);
|
|
};
|
|
}();
|
|
|
|
// Orders the testCases in place - morphs input
|
|
|
|
|
|
exports.orderTestCases = orderTestCases;
|
|
|
|
var _lodash = require('lodash');
|
|
|
|
var _lodash2 = _interopRequireDefault(_lodash);
|
|
|
|
var _argv_parser = require('./argv_parser');
|
|
|
|
var _argv_parser2 = _interopRequireDefault(_argv_parser);
|
|
|
|
var _fs = require('mz/fs');
|
|
|
|
var _fs2 = _interopRequireDefault(_fs);
|
|
|
|
var _gherkin = require('gherkin');
|
|
|
|
var _gherkin2 = _interopRequireDefault(_gherkin);
|
|
|
|
var _path = require('path');
|
|
|
|
var _path2 = _interopRequireDefault(_path);
|
|
|
|
var _profile_loader = require('./profile_loader');
|
|
|
|
var _profile_loader2 = _interopRequireDefault(_profile_loader);
|
|
|
|
var _knuthShuffleSeeded = require('knuth-shuffle-seeded');
|
|
|
|
var _knuthShuffleSeeded2 = _interopRequireDefault(_knuthShuffleSeeded);
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
|
|
function orderTestCases(testCases, order) {
|
|
var _order$split = order.split(':'),
|
|
_order$split2 = (0, _slicedToArray3.default)(_order$split, 2),
|
|
type = _order$split2[0],
|
|
seed = _order$split2[1];
|
|
|
|
switch (type) {
|
|
case 'defined':
|
|
break;
|
|
case 'random':
|
|
if (!seed) {
|
|
seed = Math.floor(Math.random() * 1000 * 1000).toString();
|
|
console.warn('Random order using seed: ' + seed);
|
|
}
|
|
(0, _knuthShuffleSeeded2.default)(testCases, seed);
|
|
break;
|
|
default:
|
|
throw new Error('Unrecgonized order type. Should be `defined` or `random`');
|
|
}
|
|
}
|
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGkvaGVscGVycy5qcyJdLCJuYW1lcyI6WyJhcmd2IiwiY3dkIiwicGFyc2UiLCJvcHRpb25zIiwiZnVsbEFyZ3YiLCJwcm9maWxlQXJndiIsImdldEFyZ3YiLCJwcm9maWxlIiwibGVuZ3RoIiwiY29uY2F0Iiwic2xpY2UiLCJnZXRFeHBhbmRlZEFyZ3YiLCJldmVudEJyb2FkY2FzdGVyIiwiZmVhdHVyZURlZmF1bHRMYW5ndWFnZSIsImZlYXR1cmVQYXRocyIsIm9yZGVyIiwicGlja2xlRmlsdGVyIiwicmVzdWx0IiwiZWFjaCIsImZlYXR1cmVQYXRoIiwic291cmNlIiwicmVhZEZpbGUiLCJnZXRUZXN0Q2FzZXMiLCJsYW5ndWFnZSIsInVyaSIsInJlbGF0aXZlIiwib3JkZXJUZXN0Q2FzZXMiLCJnZXRUZXN0Q2FzZXNGcm9tRmlsZXN5c3RlbSIsImV2ZW50cyIsImdlbmVyYXRlRXZlbnRzIiwiZm9yRWFjaCIsImVtaXQiLCJldmVudCIsInR5cGUiLCJvbWl0IiwicGlja2xlIiwibWF0Y2hlcyIsInB1c2giLCJFcnJvciIsImRhdGEiLCJ0ZXN0Q2FzZXMiLCJzcGxpdCIsInNlZWQiLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iLCJ0b1N0cmluZyIsImNvbnNvbGUiLCJ3YXJuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O3VDQVNPLGlCQUE4QztBQUFBLFFBQWJBLElBQWEsUUFBYkEsSUFBYTtBQUFBLFFBQVBDLEdBQU8sUUFBUEEsR0FBTzs7QUFBQSw0QkFDL0Isc0JBQVdDLEtBQVgsQ0FBaUJGLElBQWpCLENBRCtCO0FBQUEsUUFDM0NHLE9BRDJDLHFCQUMzQ0EsT0FEMkM7O0FBRW5ELFFBQUlDLFdBQVdKLElBQWY7QUFDQSxRQUFNSyxjQUFjLE1BQU0sNkJBQWtCSixHQUFsQixFQUF1QkssT0FBdkIsQ0FBK0JILFFBQVFJLE9BQXZDLENBQTFCO0FBQ0EsUUFBSUYsWUFBWUcsTUFBWixHQUFxQixDQUF6QixFQUE0QjtBQUMx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QSxNQUFNMEIsS0FBTixDQUFZLEdBQVosQ0FENEI7QUFBQTtBQUFBLE1BQzFDUixJQUQwQztBQUFBLE1BQ3BDUyxJQURvQzs7QUFFL0MsVUFBUVQsSUFBUjtBQUNFLFNBQUssU0FBTDtBQUNFO0FBQ0YsU0FBSyxRQUFMO0FBQ0UsVUFBSSxDQUFDUyxJQUFMLEVBQVc7QUFDVEEsZUFBT0MsS0FBS0MsS0FBTCxDQUFXRCxLQUFLRSxNQUFMLEtBQWdCLElBQWhCLEdBQXVCLElBQWxDLEVBQXdDQyxRQUF4QyxFQUFQO0FBQ0FDLGdCQUFRQyxJQUFSLCtCQUF5Q04sSUFBekM7QUFDRDtBQUNELHdDQUFRRixTQUFSLEVBQW1CRSxJQUFuQjtBQUNBO0FBQ0Y7QUFDRSxZQUFNLElBQUlKLEtBQUosQ0FDSiwwREFESSxDQUFOO0FBWEo7QUFlRCIsImZpbGUiOiJoZWxwZXJzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJ1xuaW1wb3J0IEFyZ3ZQYXJzZXIgZnJvbSAnLi9hcmd2X3BhcnNlcidcbmltcG9ydCBmcyBmcm9tICdtei9mcydcbmltcG9ydCBHaGVya2luIGZyb20gJ2doZXJraW4nXG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJ1xuaW1wb3J0IFByb2ZpbGVMb2FkZXIgZnJvbSAnLi9wcm9maWxlX2xvYWRlcidcbmltcG9ydCBQcm9taXNlIGZyb20gJ2JsdWViaXJkJ1xuaW1wb3J0IHNodWZmbGUgZnJvbSAna251dGgtc2h1ZmZsZS1zZWVkZWQnXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRFeHBhbmRlZEFyZ3YoeyBhcmd2LCBjd2QgfSkge1xuICBjb25zdCB7IG9wdGlvbnMgfSA9IEFyZ3ZQYXJzZXIucGFyc2UoYXJndilcbiAgbGV0IGZ1bGxBcmd2ID0gYXJndlxuICBjb25zdCBwcm9maWxlQXJndiA9IGF3YWl0IG5ldyBQcm9maWxlTG9hZGVyKGN3ZCkuZ2V0QXJndihvcHRpb25zLnByb2ZpbGUpXG4gIGlmIChwcm9maWxlQXJndi5sZW5ndGggPiAwKSB7XG4gICAgZnVsbEFyZ3YgPSBfLmNvbmNhdChhcmd2LnNsaWNlKDAsIDIpLCBwcm9maWxlQXJndiwgYXJndi5zbGljZSgyKSlcbiAgfVxuICByZXR1cm4gZnVsbEFyZ3Zcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFRlc3RDYXNlc0Zyb21GaWxlc3lzdGVtKHtcbiAgY3dkLFxuICBldmVudEJyb2FkY2FzdGVyLFxuICBmZWF0dXJlRGVmYXVsdExhbmd1YWdlLFxuICBmZWF0dXJlUGF0aHMsXG4gIG9yZGVyLFxuICBwaWNrbGVGaWx0ZXIsXG59KSB7XG4gIGxldCByZXN1bHQgPSBbXVxuICBhd2FpdCBQcm9taXNlLmVhY2goZmVhdHVyZVBhdGhzLCBhc3luYyBmZWF0dXJlUGF0aCA9PiB7XG4gICAgY29uc3Qgc291cmNlID0gYXdhaXQgZnMucmVhZEZpbGUoZmVhdHVyZVBhdGgsICd1dGY4JylcbiAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KFxuICAgICAgYXdhaXQgZ2V0VGVzdENhc2VzKHtcbiAgICAgICAgZXZlbnRCcm9hZGNhc3RlcixcbiAgICAgICAgbGFuZ3VhZ2U6IGZlYXR1cmVEZWZhdWx0TGFuZ3VhZ2UsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgcGlja2xlRmlsdGVyLFxuICAgICAgICB1cmk6IHBhdGgucmVsYXRpdmUoY3dkLCBmZWF0dXJlUGF0aCksXG4gICAgICB9KVxuICAgIClcbiAgfSlcbiAgb3JkZXJUZXN0Q2FzZXMocmVzdWx0LCBvcmRlcilcbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0VGVzdENhc2VzKHtcbiAgZXZlbnRCcm9hZGNhc3RlcixcbiAgbGFuZ3VhZ2UsXG4gIHBpY2tsZUZpbHRlcixcbiAgc291cmNlLFxuICB1cmksXG59KSB7XG4gIGNvbnN0IHJlc3VsdCA9IFtdXG4gIGNvbnN0IGV2ZW50cyA9IEdoZXJraW4uZ2VuZXJhdGVFdmVudHMoc291cmNlLCB1cmksIHt9LCBsYW5ndWFnZSlcbiAgZXZlbnRzLmZvckVhY2goZXZlbnQgPT4ge1xuICAgIGV2ZW50QnJvYWRjYXN0ZXIuZW1pdChldmVudC50eXBlLCBfLm9taXQoZXZlbnQsICd0eXBlJykpXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdwaWNrbGUnKSB7XG4gICAgICBjb25zdCB7IHBpY2tsZSB9ID0gZXZlbnRcbiAgICAgIGlmIChwaWNrbGVGaWx0ZXIubWF0Y2hlcyh7IHBpY2tsZSwgdXJpIH0pKSB7XG4gICAgICAgIGV2ZW50QnJvYWRjYXN0ZXIuZW1pdCgncGlja2xlLWFjY2VwdGVkJywgeyBwaWNrbGUsIHVyaSB9KVxuICAgICAgICByZXN1bHQucHVzaCh7IHBpY2tsZSwgdXJpIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBldmVudEJyb2FkY2FzdGVyLmVtaXQoJ3BpY2tsZS1yZWplY3RlZCcsIHsgcGlja2xlLCB1cmkgfSlcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdhdHRhY2htZW50Jykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBQYXJzZSBlcnJvciBpbiAnJHt1cml9JzogJHtldmVudC5kYXRhfWApXG4gICAgfVxuICB9KVxuICByZXR1cm4gcmVzdWx0XG59XG5cbi8vIE9yZGVycyB0aGUgdGVzdENhc2VzIGluIHBsYWNlIC0gbW9ycGhzIGlucHV0XG5leHBvcnQgZnVuY3Rpb24gb3JkZXJUZXN0Q2FzZXModGVzdENhc2VzLCBvcmRlcikge1xuICBsZXQgW3R5cGUsIHNlZWRdID0gb3JkZXIuc3BsaXQoJzonKVxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlICdkZWZpbmVkJzpcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncmFuZG9tJzpcbiAgICAgIGlmICghc2VlZCkge1xuICAgICAgICBzZWVkID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwMCAqIDEwMDApLnRvU3RyaW5nKClcbiAgICAgICAgY29uc29sZS53YXJuKGBSYW5kb20gb3JkZXIgdXNpbmcgc2VlZDogJHtzZWVkfWApXG4gICAgICB9XG4gICAgICBzaHVmZmxlKHRlc3RDYXNlcywgc2VlZClcbiAgICAgIGJyZWFrXG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1VucmVjZ29uaXplZCBvcmRlciB0eXBlLiBTaG91bGQgYmUgYGRlZmluZWRgIG9yIGByYW5kb21gJ1xuICAgICAgKVxuICB9XG59XG4iXX0=
|