@dev-blinq/cucumber-js 1.0.36 → 1.0.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. package/bin/cucumber-js +0 -0
  2. package/bin/cucumber.js +0 -0
  3. package/lib/api/console_logger.d.ts +12 -12
  4. package/lib/api/console_logger.js +23 -23
  5. package/lib/api/convert_configuration.d.ts +4 -4
  6. package/lib/api/convert_configuration.js +64 -65
  7. package/lib/api/convert_configuration.js.map +1 -1
  8. package/lib/api/environment.d.ts +2 -2
  9. package/lib/api/environment.js +13 -13
  10. package/lib/api/formatters.d.ts +20 -20
  11. package/lib/api/formatters.js +60 -60
  12. package/lib/api/gherkin.d.ts +21 -21
  13. package/lib/api/gherkin.js +99 -99
  14. package/lib/api/index.d.ts +12 -12
  15. package/lib/api/index.js +27 -27
  16. package/lib/api/load_configuration.d.ts +9 -9
  17. package/lib/api/load_configuration.js +40 -40
  18. package/lib/api/load_sources.d.ts +9 -9
  19. package/lib/api/load_sources.js +52 -52
  20. package/lib/api/load_support.d.ts +10 -10
  21. package/lib/api/load_support.js +29 -29
  22. package/lib/api/paths.d.ts +8 -8
  23. package/lib/api/paths.js +101 -101
  24. package/lib/api/plugins.d.ts +4 -4
  25. package/lib/api/plugins.js +18 -18
  26. package/lib/api/run_cucumber.d.ts +11 -11
  27. package/lib/api/run_cucumber.js +114 -114
  28. package/lib/api/run_cucumber.js.map +1 -1
  29. package/lib/api/runtime.d.ts +21 -21
  30. package/lib/api/runtime.js +35 -35
  31. package/lib/api/support.d.ts +9 -9
  32. package/lib/api/support.js +25 -25
  33. package/lib/api/test_helpers.d.ts +3 -3
  34. package/lib/api/test_helpers.js +30 -30
  35. package/lib/api/types.d.ts +175 -177
  36. package/lib/api/types.js +2 -2
  37. package/lib/api/types.js.map +1 -1
  38. package/lib/cli/helpers.d.ts +37 -39
  39. package/lib/cli/helpers.js +202 -223
  40. package/lib/cli/helpers.js.map +1 -1
  41. package/lib/cli/i18n.d.ts +2 -2
  42. package/lib/cli/i18n.js +69 -69
  43. package/lib/cli/index.d.ts +21 -21
  44. package/lib/cli/index.js +58 -63
  45. package/lib/cli/index.js.map +1 -1
  46. package/lib/cli/install_validator.d.ts +1 -1
  47. package/lib/cli/install_validator.js +13 -13
  48. package/lib/cli/run.d.ts +1 -1
  49. package/lib/cli/run.js +43 -43
  50. package/lib/cli/validate_node_engine_version.d.ts +10 -10
  51. package/lib/cli/validate_node_engine_version.js +23 -23
  52. package/lib/configuration/argv_parser.d.ts +20 -20
  53. package/lib/configuration/argv_parser.js +100 -102
  54. package/lib/configuration/argv_parser.js.map +1 -1
  55. package/lib/configuration/check_schema.d.ts +2 -2
  56. package/lib/configuration/check_schema.js +59 -59
  57. package/lib/configuration/default_configuration.d.ts +2 -2
  58. package/lib/configuration/default_configuration.js +26 -28
  59. package/lib/configuration/default_configuration.js.map +1 -1
  60. package/lib/configuration/from_file.d.ts +3 -3
  61. package/lib/configuration/from_file.js +84 -84
  62. package/lib/configuration/helpers.d.ts +1 -1
  63. package/lib/configuration/helpers.js +10 -10
  64. package/lib/configuration/index.d.ts +7 -7
  65. package/lib/configuration/index.js +28 -28
  66. package/lib/configuration/locate_file.d.ts +1 -1
  67. package/lib/configuration/locate_file.js +20 -20
  68. package/lib/configuration/merge_configurations.d.ts +2 -2
  69. package/lib/configuration/merge_configurations.js +47 -47
  70. package/lib/configuration/option_splitter.d.ts +3 -3
  71. package/lib/configuration/option_splitter.js +22 -22
  72. package/lib/configuration/types.d.ts +28 -30
  73. package/lib/configuration/types.js +2 -2
  74. package/lib/configuration/types.js.map +1 -1
  75. package/lib/configuration/validate_configuration.d.ts +3 -3
  76. package/lib/configuration/validate_configuration.js +12 -12
  77. package/lib/filter_stack_trace.d.ts +3 -3
  78. package/lib/filter_stack_trace.js +37 -37
  79. package/lib/formatter/builder.d.ts +37 -37
  80. package/lib/formatter/builder.js +100 -100
  81. package/lib/formatter/bvt_formatter.d.ts +9 -0
  82. package/lib/formatter/{helpers/uploader.js → bvt_formatter.js} +62 -57
  83. package/lib/formatter/bvt_formatter.js.map +1 -0
  84. package/lib/formatter/feature_data_format.d.ts +14 -14
  85. package/lib/formatter/feature_data_format.js +80 -80
  86. package/lib/formatter/fixtures/typescript.d.ts +2 -2
  87. package/lib/formatter/fixtures/typescript.js +5 -5
  88. package/lib/formatter/get_color_fns.d.ts +15 -15
  89. package/lib/formatter/get_color_fns.js +55 -55
  90. package/lib/formatter/helpers/duration_helpers.d.ts +2 -2
  91. package/lib/formatter/helpers/duration_helpers.js +8 -8
  92. package/lib/formatter/helpers/event_data_collector.d.ts +30 -30
  93. package/lib/formatter/helpers/event_data_collector.js +125 -125
  94. package/lib/formatter/helpers/formatters.d.ts +6 -6
  95. package/lib/formatter/helpers/formatters.js +44 -44
  96. package/lib/formatter/helpers/formatters.js.map +1 -1
  97. package/lib/formatter/helpers/gherkin_document_parser.d.ts +5 -5
  98. package/lib/formatter/helpers/gherkin_document_parser.js +65 -65
  99. package/lib/formatter/helpers/index.d.ts +10 -10
  100. package/lib/formatter/helpers/index.js +51 -51
  101. package/lib/formatter/helpers/issue_helpers.d.ts +19 -19
  102. package/lib/formatter/helpers/issue_helpers.js +58 -58
  103. package/lib/formatter/helpers/keyword_type.d.ts +11 -11
  104. package/lib/formatter/helpers/keyword_type.js +31 -31
  105. package/lib/formatter/helpers/location_helpers.d.ts +2 -2
  106. package/lib/formatter/helpers/location_helpers.js +16 -16
  107. package/lib/formatter/helpers/pickle_parser.d.ts +17 -17
  108. package/lib/formatter/helpers/pickle_parser.js +27 -27
  109. package/lib/formatter/helpers/report_generator.d.ts +95 -103
  110. package/lib/formatter/helpers/report_generator.js +310 -247
  111. package/lib/formatter/helpers/report_generator.js.map +1 -1
  112. package/lib/formatter/helpers/step_argument_formatter.d.ts +2 -2
  113. package/lib/formatter/helpers/step_argument_formatter.js +47 -47
  114. package/lib/formatter/helpers/summary_helpers.d.ts +9 -9
  115. package/lib/formatter/helpers/summary_helpers.js +95 -95
  116. package/lib/formatter/helpers/test_case_attempt_formatter.d.ts +12 -12
  117. package/lib/formatter/helpers/test_case_attempt_formatter.js +113 -113
  118. package/lib/formatter/helpers/test_case_attempt_parser.d.ts +32 -32
  119. package/lib/formatter/helpers/test_case_attempt_parser.js +134 -134
  120. package/lib/formatter/helpers/upload_serivce.d.ts +9 -9
  121. package/lib/formatter/helpers/upload_serivce.js +46 -46
  122. package/lib/formatter/helpers/upload_serivce.js.map +1 -1
  123. package/lib/formatter/helpers/usage_helpers/index.d.ts +23 -23
  124. package/lib/formatter/helpers/usage_helpers/index.js +110 -110
  125. package/lib/formatter/html_formatter.d.ts +7 -7
  126. package/lib/formatter/html_formatter.js +29 -29
  127. package/lib/formatter/index.d.ts +53 -53
  128. package/lib/formatter/index.js +20 -20
  129. package/lib/formatter/json_formatter.d.ts +78 -78
  130. package/lib/formatter/json_formatter.js +229 -229
  131. package/lib/formatter/junit_formatter.d.ts +17 -17
  132. package/lib/formatter/junit_formatter.js +180 -180
  133. package/lib/formatter/message_formatter.d.ts +5 -5
  134. package/lib/formatter/message_formatter.js +14 -14
  135. package/lib/formatter/progress_bar_formatter.d.ts +18 -18
  136. package/lib/formatter/progress_bar_formatter.js +98 -98
  137. package/lib/formatter/progress_formatter.d.ts +9 -9
  138. package/lib/formatter/progress_formatter.js +58 -58
  139. package/lib/formatter/rerun_formatter.d.ts +13 -13
  140. package/lib/formatter/rerun_formatter.js +79 -79
  141. package/lib/formatter/snippets_formatter.d.ts +6 -6
  142. package/lib/formatter/snippets_formatter.js +60 -60
  143. package/lib/formatter/step_definition_snippet_builder/index.d.ts +20 -20
  144. package/lib/formatter/step_definition_snippet_builder/index.js +45 -45
  145. package/lib/formatter/step_definition_snippet_builder/javascript_snippet_syntax.d.ts +7 -7
  146. package/lib/formatter/step_definition_snippet_builder/javascript_snippet_syntax.js +45 -45
  147. package/lib/formatter/step_definition_snippet_builder/snippet_syntax.d.ts +16 -16
  148. package/lib/formatter/step_definition_snippet_builder/snippet_syntax.js +10 -10
  149. package/lib/formatter/summary_formatter.d.ts +14 -14
  150. package/lib/formatter/summary_formatter.js +67 -67
  151. package/lib/formatter/usage_formatter.d.ts +6 -6
  152. package/lib/formatter/usage_formatter.js +97 -97
  153. package/lib/formatter/usage_json_formatter.d.ts +7 -7
  154. package/lib/formatter/usage_json_formatter.js +33 -33
  155. package/lib/index.d.ts +58 -58
  156. package/lib/index.js +108 -108
  157. package/lib/logger.d.ts +5 -5
  158. package/lib/logger.js +2 -2
  159. package/lib/models/data_table.d.ts +10 -10
  160. package/lib/models/data_table.js +45 -45
  161. package/lib/models/definition.d.ts +55 -55
  162. package/lib/models/definition.js +21 -21
  163. package/lib/models/gherkin_step_keyword.d.ts +1 -1
  164. package/lib/models/gherkin_step_keyword.js +2 -2
  165. package/lib/models/pickle_order.d.ts +1 -1
  166. package/lib/models/pickle_order.js +2 -2
  167. package/lib/models/step_definition.d.ts +11 -11
  168. package/lib/models/step_definition.js +36 -36
  169. package/lib/models/test_case_hook_definition.d.ts +10 -10
  170. package/lib/models/test_case_hook_definition.js +26 -26
  171. package/lib/models/test_run_hook_definition.d.ts +3 -3
  172. package/lib/models/test_run_hook_definition.js +9 -9
  173. package/lib/models/test_step_hook_definition.d.ts +9 -9
  174. package/lib/models/test_step_hook_definition.js +25 -25
  175. package/lib/pickle_filter.d.ts +42 -42
  176. package/lib/pickle_filter.js +98 -98
  177. package/lib/plugin/index.d.ts +2 -2
  178. package/lib/plugin/index.js +18 -18
  179. package/lib/plugin/plugin_manager.d.ts +13 -13
  180. package/lib/plugin/plugin_manager.js +35 -35
  181. package/lib/plugin/types.d.ts +14 -14
  182. package/lib/plugin/types.js +2 -2
  183. package/lib/publish/http_stream.d.ts +30 -30
  184. package/lib/publish/http_stream.js +111 -111
  185. package/lib/publish/index.d.ts +2 -2
  186. package/lib/publish/index.js +4 -4
  187. package/lib/publish/publish_plugin.d.ts +2 -2
  188. package/lib/publish/publish_plugin.js +47 -47
  189. package/lib/runtime/assemble_test_cases.d.ts +13 -13
  190. package/lib/runtime/assemble_test_cases.js +87 -87
  191. package/lib/runtime/attachment_manager/index.d.ts +33 -33
  192. package/lib/runtime/attachment_manager/index.js +118 -118
  193. package/lib/runtime/format_error.d.ts +2 -2
  194. package/lib/runtime/format_error.js +35 -35
  195. package/lib/runtime/helpers.d.ts +6 -6
  196. package/lib/runtime/helpers.js +100 -100
  197. package/lib/runtime/index.d.ts +40 -40
  198. package/lib/runtime/index.js +75 -75
  199. package/lib/runtime/parallel/command_types.d.ts +32 -32
  200. package/lib/runtime/parallel/command_types.js +2 -2
  201. package/lib/runtime/parallel/coordinator.d.ts +72 -72
  202. package/lib/runtime/parallel/coordinator.js +221 -221
  203. package/lib/runtime/parallel/run_worker.d.ts +1 -1
  204. package/lib/runtime/parallel/run_worker.js +28 -28
  205. package/lib/runtime/parallel/worker.d.ts +26 -26
  206. package/lib/runtime/parallel/worker.js +86 -86
  207. package/lib/runtime/run_test_run_hooks.d.ts +3 -3
  208. package/lib/runtime/run_test_run_hooks.js +27 -27
  209. package/lib/runtime/step_runner.d.ts +16 -16
  210. package/lib/runtime/step_runner.js +87 -87
  211. package/lib/runtime/stopwatch.d.ts +12 -12
  212. package/lib/runtime/stopwatch.js +33 -33
  213. package/lib/runtime/test_case_runner.d.ts +54 -54
  214. package/lib/runtime/test_case_runner.js +267 -267
  215. package/lib/step_arguments.d.ts +6 -6
  216. package/lib/step_arguments.js +18 -18
  217. package/lib/support_code_library_builder/build_parameter_type.d.ts +3 -3
  218. package/lib/support_code_library_builder/build_parameter_type.js +12 -12
  219. package/lib/support_code_library_builder/get_definition_line_and_uri.d.ts +3 -3
  220. package/lib/support_code_library_builder/get_definition_line_and_uri.js +28 -28
  221. package/lib/support_code_library_builder/index.d.ts +74 -74
  222. package/lib/support_code_library_builder/index.js +296 -296
  223. package/lib/support_code_library_builder/parallel_can_assign_helpers.d.ts +2 -2
  224. package/lib/support_code_library_builder/parallel_can_assign_helpers.js +15 -15
  225. package/lib/support_code_library_builder/sourced_parameter_type_registry.d.ts +7 -7
  226. package/lib/support_code_library_builder/sourced_parameter_type_registry.js +18 -18
  227. package/lib/support_code_library_builder/types.d.ts +88 -88
  228. package/lib/support_code_library_builder/types.js +2 -2
  229. package/lib/support_code_library_builder/validate_arguments.d.ts +12 -12
  230. package/lib/support_code_library_builder/validate_arguments.js +72 -72
  231. package/lib/support_code_library_builder/world.d.ts +18 -18
  232. package/lib/support_code_library_builder/world.js +10 -10
  233. package/lib/time.d.ts +18 -18
  234. package/lib/time.js +60 -60
  235. package/lib/try_require.d.ts +7 -7
  236. package/lib/try_require.js +22 -22
  237. package/lib/types/index.d.ts +4 -4
  238. package/lib/types/index.js +2 -2
  239. package/lib/uncaught_exception_manager.d.ts +7 -7
  240. package/lib/uncaught_exception_manager.js +11 -11
  241. package/lib/user_code_runner.d.ts +14 -14
  242. package/lib/user_code_runner.js +81 -81
  243. package/lib/value_checker.d.ts +3 -3
  244. package/lib/value_checker.js +18 -18
  245. package/lib/version.d.ts +1 -1
  246. package/lib/version.js +5 -5
  247. package/lib/version.js.map +1 -1
  248. package/package.json +2 -4
  249. package/bin/download-install.js +0 -126
  250. package/lib/formatter/bvt_analysis_formatter.d.ts +0 -18
  251. package/lib/formatter/bvt_analysis_formatter.js +0 -193
  252. package/lib/formatter/bvt_analysis_formatter.js.map +0 -1
  253. package/lib/formatter/helpers/uploader.d.ts +0 -11
  254. package/lib/formatter/helpers/uploader.js.map +0 -1
@@ -1,39 +1,37 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- /// <reference types="node" />
4
- import { IdGenerator } from '@cucumber/messages';
5
- import { EventEmitter } from 'events';
6
- import { Readable } from 'stream';
7
- import { IConfiguration } from '../configuration';
8
- import { EventDataCollector } from '../formatter/helpers';
9
- import { ILogger } from '../logger';
10
- import { PickleOrder } from '../models/pickle_order';
11
- import PickleFilter from '../pickle_filter';
12
- import { ISupportCodeLibrary } from '../support_code_library_builder/types';
13
- interface IParseGherkinMessageStreamRequest {
14
- cwd?: string;
15
- eventBroadcaster: EventEmitter;
16
- eventDataCollector: EventDataCollector;
17
- gherkinMessageStream: Readable;
18
- order: string;
19
- pickleFilter: PickleFilter;
20
- }
21
- /**
22
- * Process a stream of envelopes from Gherkin and resolve to an array of filtered, ordered pickle Ids
23
- *
24
- * @param eventBroadcaster
25
- * @param eventDataCollector
26
- * @param gherkinMessageStream
27
- * @param order
28
- * @param pickleFilter
29
- */
30
- export declare function parseGherkinMessageStream({ eventBroadcaster, eventDataCollector, gherkinMessageStream, order, pickleFilter, }: IParseGherkinMessageStreamRequest): Promise<string[]>;
31
- export declare function orderPickles<T = string>(pickleIds: T[], order: PickleOrder, logger: ILogger): void;
32
- export declare function emitMetaMessage(eventBroadcaster: EventEmitter, env: NodeJS.ProcessEnv, runName?: string): Promise<void>;
33
- export declare function emitSupportCodeMessages({ eventBroadcaster, supportCodeLibrary, newId, }: {
34
- eventBroadcaster: EventEmitter;
35
- supportCodeLibrary: ISupportCodeLibrary;
36
- newId: IdGenerator.NewId;
37
- }): void;
38
- export declare function getRunName(argvConfiguration: Partial<IConfiguration>): string;
39
- export {};
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ /// <reference types="node" />
4
+ import { EventEmitter } from 'events';
5
+ import PickleFilter from '../pickle_filter';
6
+ import { EventDataCollector } from '../formatter/helpers';
7
+ import { Readable } from 'stream';
8
+ import { IdGenerator } from '@cucumber/messages';
9
+ import { ISupportCodeLibrary } from '../support_code_library_builder/types';
10
+ import { PickleOrder } from '../models/pickle_order';
11
+ import { ILogger } from '../logger';
12
+ interface IParseGherkinMessageStreamRequest {
13
+ cwd?: string;
14
+ eventBroadcaster: EventEmitter;
15
+ eventDataCollector: EventDataCollector;
16
+ gherkinMessageStream: Readable;
17
+ order: string;
18
+ pickleFilter: PickleFilter;
19
+ }
20
+ /**
21
+ * Process a stream of envelopes from Gherkin and resolve to an array of filtered, ordered pickle Ids
22
+ *
23
+ * @param eventBroadcaster
24
+ * @param eventDataCollector
25
+ * @param gherkinMessageStream
26
+ * @param order
27
+ * @param pickleFilter
28
+ */
29
+ export declare function parseGherkinMessageStream({ eventBroadcaster, eventDataCollector, gherkinMessageStream, order, pickleFilter, }: IParseGherkinMessageStreamRequest): Promise<string[]>;
30
+ export declare function orderPickles<T = string>(pickleIds: T[], order: PickleOrder, logger: ILogger): void;
31
+ export declare function emitMetaMessage(eventBroadcaster: EventEmitter, env: NodeJS.ProcessEnv): Promise<void>;
32
+ export declare function emitSupportCodeMessages({ eventBroadcaster, supportCodeLibrary, newId, }: {
33
+ eventBroadcaster: EventEmitter;
34
+ supportCodeLibrary: ISupportCodeLibrary;
35
+ newId: IdGenerator.NewId;
36
+ }): void;
37
+ export {};
@@ -1,224 +1,203 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.getRunName = exports.emitSupportCodeMessages = exports.emitMetaMessage = exports.orderPickles = exports.parseGherkinMessageStream = void 0;
30
- const ci_environment_1 = __importDefault(require("@cucumber/ci-environment"));
31
- const messages = __importStar(require("@cucumber/messages"));
32
- const knuth_shuffle_seeded_1 = __importDefault(require("knuth-shuffle-seeded"));
33
- const os_1 = __importDefault(require("os"));
34
- const configuration_1 = require("../configuration");
35
- const value_checker_1 = require("../value_checker");
36
- const version_1 = require("../version");
37
- /**
38
- * Process a stream of envelopes from Gherkin and resolve to an array of filtered, ordered pickle Ids
39
- *
40
- * @param eventBroadcaster
41
- * @param eventDataCollector
42
- * @param gherkinMessageStream
43
- * @param order
44
- * @param pickleFilter
45
- */
46
- async function parseGherkinMessageStream({ eventBroadcaster, eventDataCollector, gherkinMessageStream, order, pickleFilter, }) {
47
- return await new Promise((resolve, reject) => {
48
- const result = [];
49
- gherkinMessageStream.on('data', (envelope) => {
50
- eventBroadcaster.emit('envelope', envelope);
51
- if ((0, value_checker_1.doesHaveValue)(envelope.pickle)) {
52
- const pickle = envelope.pickle;
53
- const pickleId = pickle.id;
54
- const gherkinDocument = eventDataCollector.getGherkinDocument(pickle.uri);
55
- if (pickleFilter.matches({ gherkinDocument, pickle })) {
56
- result.push(pickleId);
57
- }
58
- }
59
- });
60
- gherkinMessageStream.on('end', () => {
61
- orderPickles(result, order, console);
62
- resolve(result);
63
- });
64
- gherkinMessageStream.on('error', reject);
65
- });
66
- }
67
- exports.parseGherkinMessageStream = parseGherkinMessageStream;
68
- // Orders the pickleIds in place - morphs input
69
- function orderPickles(pickleIds, order, logger) {
70
- const [type, seed] = configuration_1.OptionSplitter.split(order);
71
- switch (type) {
72
- case 'defined':
73
- break;
74
- case 'random':
75
- if (seed === '') {
76
- const newSeed = Math.floor(Math.random() * 1000 * 1000).toString();
77
- logger.warn(`Random order using seed: ${newSeed}`);
78
- (0, knuth_shuffle_seeded_1.default)(pickleIds, newSeed);
79
- }
80
- else {
81
- (0, knuth_shuffle_seeded_1.default)(pickleIds, seed);
82
- }
83
- break;
84
- default:
85
- throw new Error('Unrecgonized order type. Should be `defined` or `random`');
86
- }
87
- }
88
- exports.orderPickles = orderPickles;
89
- async function emitMetaMessage(eventBroadcaster, env, runName) {
90
- const meta = {
91
- protocolVersion: messages.version,
92
- implementation: {
93
- version: version_1.version,
94
- name: 'cucumber-js',
95
- },
96
- cpu: {
97
- name: os_1.default.arch(),
98
- },
99
- os: {
100
- name: os_1.default.platform(),
101
- version: os_1.default.release(),
102
- },
103
- runtime: {
104
- name: 'node.js',
105
- version: process.versions.node,
106
- },
107
- ci: (0, ci_environment_1.default)(env),
108
- runName,
109
- };
110
- eventBroadcaster.emit('envelope', {
111
- meta,
112
- });
113
- }
114
- exports.emitMetaMessage = emitMetaMessage;
115
- const makeSourceReference = (source) => ({
116
- uri: source.uri,
117
- location: {
118
- line: source.line,
119
- },
120
- });
121
- function emitParameterTypes(supportCodeLibrary, eventBroadcaster, newId) {
122
- for (const parameterType of supportCodeLibrary.parameterTypeRegistry
123
- .parameterTypes) {
124
- if (parameterType.builtin) {
125
- continue;
126
- }
127
- const source = supportCodeLibrary.parameterTypeRegistry.lookupSource(parameterType);
128
- const envelope = {
129
- parameterType: {
130
- id: newId(),
131
- name: parameterType.name,
132
- preferForRegularExpressionMatch: parameterType.preferForRegexpMatch,
133
- regularExpressions: parameterType.regexpStrings,
134
- useForSnippets: parameterType.useForSnippets,
135
- sourceReference: makeSourceReference(source),
136
- },
137
- };
138
- eventBroadcaster.emit('envelope', envelope);
139
- }
140
- }
141
- function emitUndefinedParameterTypes(supportCodeLibrary, eventBroadcaster) {
142
- for (const undefinedParameterType of supportCodeLibrary.undefinedParameterTypes) {
143
- const envelope = {
144
- undefinedParameterType,
145
- };
146
- eventBroadcaster.emit('envelope', envelope);
147
- }
148
- }
149
- function emitStepDefinitions(supportCodeLibrary, eventBroadcaster) {
150
- supportCodeLibrary.stepDefinitions.forEach((stepDefinition) => {
151
- const envelope = {
152
- stepDefinition: {
153
- id: stepDefinition.id,
154
- pattern: {
155
- source: stepDefinition.pattern.toString(),
156
- type: typeof stepDefinition.pattern === 'string'
157
- ? messages.StepDefinitionPatternType.CUCUMBER_EXPRESSION
158
- : messages.StepDefinitionPatternType.REGULAR_EXPRESSION,
159
- },
160
- sourceReference: makeSourceReference(stepDefinition),
161
- },
162
- };
163
- eventBroadcaster.emit('envelope', envelope);
164
- });
165
- }
166
- function emitTestCaseHooks(supportCodeLibrary, eventBroadcaster) {
167
- ;
168
- []
169
- .concat(supportCodeLibrary.beforeTestCaseHookDefinitions, supportCodeLibrary.afterTestCaseHookDefinitions)
170
- .forEach((testCaseHookDefinition) => {
171
- const envelope = {
172
- hook: {
173
- id: testCaseHookDefinition.id,
174
- name: testCaseHookDefinition.name,
175
- tagExpression: testCaseHookDefinition.tagExpression,
176
- sourceReference: makeSourceReference(testCaseHookDefinition),
177
- },
178
- };
179
- eventBroadcaster.emit('envelope', envelope);
180
- });
181
- }
182
- function emitTestRunHooks(supportCodeLibrary, eventBroadcaster) {
183
- ;
184
- []
185
- .concat(supportCodeLibrary.beforeTestRunHookDefinitions, supportCodeLibrary.afterTestRunHookDefinitions)
186
- .forEach((testRunHookDefinition) => {
187
- const envelope = {
188
- hook: {
189
- id: testRunHookDefinition.id,
190
- sourceReference: makeSourceReference(testRunHookDefinition),
191
- },
192
- };
193
- eventBroadcaster.emit('envelope', envelope);
194
- });
195
- }
196
- function emitSupportCodeMessages({ eventBroadcaster, supportCodeLibrary, newId, }) {
197
- emitParameterTypes(supportCodeLibrary, eventBroadcaster, newId);
198
- emitUndefinedParameterTypes(supportCodeLibrary, eventBroadcaster);
199
- emitStepDefinitions(supportCodeLibrary, eventBroadcaster);
200
- emitTestCaseHooks(supportCodeLibrary, eventBroadcaster);
201
- emitTestRunHooks(supportCodeLibrary, eventBroadcaster);
202
- }
203
- exports.emitSupportCodeMessages = emitSupportCodeMessages;
204
- function getRunName(argvConfiguration) {
205
- if ((0, value_checker_1.doesHaveValue)(argvConfiguration.runName)) {
206
- return argvConfiguration.runName;
207
- }
208
- if ((0, value_checker_1.doesHaveValue)(argvConfiguration.name && argvConfiguration.name.length > 0)) {
209
- return argvConfiguration.name[0];
210
- }
211
- if ((0, value_checker_1.doesHaveValue)(argvConfiguration.tags)) {
212
- //replace word "and" with & and "or" with |
213
- let tags = argvConfiguration.tags
214
- .split(' ')
215
- .map((tag) => (tag === 'and' ? '&' : tag === 'or' ? '|' : tag))
216
- .join('');
217
- //remove the starting and ending paranthesis if present
218
- tags = tags.replace(/^\(/, '').replace(/\)$/, '');
219
- return tags;
220
- }
221
- return '';
222
- }
223
- exports.getRunName = getRunName;
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.emitSupportCodeMessages = exports.emitMetaMessage = exports.orderPickles = exports.parseGherkinMessageStream = void 0;
30
+ const knuth_shuffle_seeded_1 = __importDefault(require("knuth-shuffle-seeded"));
31
+ const value_checker_1 = require("../value_checker");
32
+ const configuration_1 = require("../configuration");
33
+ const os_1 = __importDefault(require("os"));
34
+ const messages = __importStar(require("@cucumber/messages"));
35
+ const ci_environment_1 = __importDefault(require("@cucumber/ci-environment"));
36
+ const version_1 = require("../version");
37
+ /**
38
+ * Process a stream of envelopes from Gherkin and resolve to an array of filtered, ordered pickle Ids
39
+ *
40
+ * @param eventBroadcaster
41
+ * @param eventDataCollector
42
+ * @param gherkinMessageStream
43
+ * @param order
44
+ * @param pickleFilter
45
+ */
46
+ async function parseGherkinMessageStream({ eventBroadcaster, eventDataCollector, gherkinMessageStream, order, pickleFilter, }) {
47
+ return await new Promise((resolve, reject) => {
48
+ const result = [];
49
+ gherkinMessageStream.on('data', (envelope) => {
50
+ eventBroadcaster.emit('envelope', envelope);
51
+ if ((0, value_checker_1.doesHaveValue)(envelope.pickle)) {
52
+ const pickle = envelope.pickle;
53
+ const pickleId = pickle.id;
54
+ const gherkinDocument = eventDataCollector.getGherkinDocument(pickle.uri);
55
+ if (pickleFilter.matches({ gherkinDocument, pickle })) {
56
+ result.push(pickleId);
57
+ }
58
+ }
59
+ });
60
+ gherkinMessageStream.on('end', () => {
61
+ orderPickles(result, order, console);
62
+ resolve(result);
63
+ });
64
+ gherkinMessageStream.on('error', reject);
65
+ });
66
+ }
67
+ exports.parseGherkinMessageStream = parseGherkinMessageStream;
68
+ // Orders the pickleIds in place - morphs input
69
+ function orderPickles(pickleIds, order, logger) {
70
+ const [type, seed] = configuration_1.OptionSplitter.split(order);
71
+ switch (type) {
72
+ case 'defined':
73
+ break;
74
+ case 'random':
75
+ if (seed === '') {
76
+ const newSeed = Math.floor(Math.random() * 1000 * 1000).toString();
77
+ logger.warn(`Random order using seed: ${newSeed}`);
78
+ (0, knuth_shuffle_seeded_1.default)(pickleIds, newSeed);
79
+ }
80
+ else {
81
+ (0, knuth_shuffle_seeded_1.default)(pickleIds, seed);
82
+ }
83
+ break;
84
+ default:
85
+ throw new Error('Unrecgonized order type. Should be `defined` or `random`');
86
+ }
87
+ }
88
+ exports.orderPickles = orderPickles;
89
+ async function emitMetaMessage(eventBroadcaster, env) {
90
+ const meta = {
91
+ protocolVersion: messages.version,
92
+ implementation: {
93
+ version: version_1.version,
94
+ name: 'cucumber-js',
95
+ },
96
+ cpu: {
97
+ name: os_1.default.arch(),
98
+ },
99
+ os: {
100
+ name: os_1.default.platform(),
101
+ version: os_1.default.release(),
102
+ },
103
+ runtime: {
104
+ name: 'node.js',
105
+ version: process.versions.node,
106
+ },
107
+ ci: (0, ci_environment_1.default)(env),
108
+ };
109
+ eventBroadcaster.emit('envelope', {
110
+ meta,
111
+ });
112
+ }
113
+ exports.emitMetaMessage = emitMetaMessage;
114
+ const makeSourceReference = (source) => ({
115
+ uri: source.uri,
116
+ location: {
117
+ line: source.line,
118
+ },
119
+ });
120
+ function emitParameterTypes(supportCodeLibrary, eventBroadcaster, newId) {
121
+ for (const parameterType of supportCodeLibrary.parameterTypeRegistry
122
+ .parameterTypes) {
123
+ if (parameterType.builtin) {
124
+ continue;
125
+ }
126
+ const source = supportCodeLibrary.parameterTypeRegistry.lookupSource(parameterType);
127
+ const envelope = {
128
+ parameterType: {
129
+ id: newId(),
130
+ name: parameterType.name,
131
+ preferForRegularExpressionMatch: parameterType.preferForRegexpMatch,
132
+ regularExpressions: parameterType.regexpStrings,
133
+ useForSnippets: parameterType.useForSnippets,
134
+ sourceReference: makeSourceReference(source),
135
+ },
136
+ };
137
+ eventBroadcaster.emit('envelope', envelope);
138
+ }
139
+ }
140
+ function emitUndefinedParameterTypes(supportCodeLibrary, eventBroadcaster) {
141
+ for (const undefinedParameterType of supportCodeLibrary.undefinedParameterTypes) {
142
+ const envelope = {
143
+ undefinedParameterType,
144
+ };
145
+ eventBroadcaster.emit('envelope', envelope);
146
+ }
147
+ }
148
+ function emitStepDefinitions(supportCodeLibrary, eventBroadcaster) {
149
+ supportCodeLibrary.stepDefinitions.forEach((stepDefinition) => {
150
+ const envelope = {
151
+ stepDefinition: {
152
+ id: stepDefinition.id,
153
+ pattern: {
154
+ source: stepDefinition.pattern.toString(),
155
+ type: typeof stepDefinition.pattern === 'string'
156
+ ? messages.StepDefinitionPatternType.CUCUMBER_EXPRESSION
157
+ : messages.StepDefinitionPatternType.REGULAR_EXPRESSION,
158
+ },
159
+ sourceReference: makeSourceReference(stepDefinition),
160
+ },
161
+ };
162
+ eventBroadcaster.emit('envelope', envelope);
163
+ });
164
+ }
165
+ function emitTestCaseHooks(supportCodeLibrary, eventBroadcaster) {
166
+ ;
167
+ []
168
+ .concat(supportCodeLibrary.beforeTestCaseHookDefinitions, supportCodeLibrary.afterTestCaseHookDefinitions)
169
+ .forEach((testCaseHookDefinition) => {
170
+ const envelope = {
171
+ hook: {
172
+ id: testCaseHookDefinition.id,
173
+ name: testCaseHookDefinition.name,
174
+ tagExpression: testCaseHookDefinition.tagExpression,
175
+ sourceReference: makeSourceReference(testCaseHookDefinition),
176
+ },
177
+ };
178
+ eventBroadcaster.emit('envelope', envelope);
179
+ });
180
+ }
181
+ function emitTestRunHooks(supportCodeLibrary, eventBroadcaster) {
182
+ ;
183
+ []
184
+ .concat(supportCodeLibrary.beforeTestRunHookDefinitions, supportCodeLibrary.afterTestRunHookDefinitions)
185
+ .forEach((testRunHookDefinition) => {
186
+ const envelope = {
187
+ hook: {
188
+ id: testRunHookDefinition.id,
189
+ sourceReference: makeSourceReference(testRunHookDefinition),
190
+ },
191
+ };
192
+ eventBroadcaster.emit('envelope', envelope);
193
+ });
194
+ }
195
+ function emitSupportCodeMessages({ eventBroadcaster, supportCodeLibrary, newId, }) {
196
+ emitParameterTypes(supportCodeLibrary, eventBroadcaster, newId);
197
+ emitUndefinedParameterTypes(supportCodeLibrary, eventBroadcaster);
198
+ emitStepDefinitions(supportCodeLibrary, eventBroadcaster);
199
+ emitTestCaseHooks(supportCodeLibrary, eventBroadcaster);
200
+ emitTestRunHooks(supportCodeLibrary, eventBroadcaster);
201
+ }
202
+ exports.emitSupportCodeMessages = emitSupportCodeMessages;
224
203
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/cli/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import detectCiEnvironment from '@cucumber/ci-environment'\nimport * as messages from '@cucumber/messages'\nimport { IdGenerator } from '@cucumber/messages'\nimport { EventEmitter } from 'events'\nimport shuffle from 'knuth-shuffle-seeded'\nimport os from 'os'\nimport { Readable } from 'stream'\nimport { IConfiguration, OptionSplitter } from '../configuration'\nimport { EventDataCollector } from '../formatter/helpers'\nimport { ILogger } from '../logger'\nimport { PickleOrder } from '../models/pickle_order'\nimport TestCaseHookDefinition from '../models/test_case_hook_definition'\nimport TestRunHookDefinition from '../models/test_run_hook_definition'\nimport PickleFilter from '../pickle_filter'\nimport { ISupportCodeLibrary } from '../support_code_library_builder/types'\nimport { ILineAndUri } from '../types'\nimport { doesHaveValue } from '../value_checker'\nimport { version } from '../version'\n\ninterface IParseGherkinMessageStreamRequest {\n cwd?: string\n eventBroadcaster: EventEmitter\n eventDataCollector: EventDataCollector\n gherkinMessageStream: Readable\n order: string\n pickleFilter: PickleFilter\n}\ninterface MetaMessage extends messages.Meta {\n runName?: string\n}\n/**\n * Process a stream of envelopes from Gherkin and resolve to an array of filtered, ordered pickle Ids\n *\n * @param eventBroadcaster\n * @param eventDataCollector\n * @param gherkinMessageStream\n * @param order\n * @param pickleFilter\n */\nexport async function parseGherkinMessageStream({\n eventBroadcaster,\n eventDataCollector,\n gherkinMessageStream,\n order,\n pickleFilter,\n}: IParseGherkinMessageStreamRequest): Promise<string[]> {\n return await new Promise<string[]>((resolve, reject) => {\n const result: string[] = []\n gherkinMessageStream.on('data', (envelope: messages.Envelope) => {\n eventBroadcaster.emit('envelope', envelope)\n if (doesHaveValue(envelope.pickle)) {\n const pickle = envelope.pickle\n const pickleId = pickle.id\n const gherkinDocument = eventDataCollector.getGherkinDocument(\n pickle.uri\n )\n if (pickleFilter.matches({ gherkinDocument, pickle })) {\n result.push(pickleId)\n }\n }\n })\n gherkinMessageStream.on('end', () => {\n orderPickles(result, order, console)\n resolve(result)\n })\n gherkinMessageStream.on('error', reject)\n })\n}\n\n// Orders the pickleIds in place - morphs input\nexport function orderPickles<T = string>(\n pickleIds: T[],\n order: PickleOrder,\n logger: ILogger\n): void {\n const [type, seed] = OptionSplitter.split(order)\n switch (type) {\n case 'defined':\n break\n case 'random':\n if (seed === '') {\n const newSeed = Math.floor(Math.random() * 1000 * 1000).toString()\n logger.warn(`Random order using seed: ${newSeed}`)\n shuffle(pickleIds, newSeed)\n } else {\n shuffle(pickleIds, seed)\n }\n break\n default:\n throw new Error(\n 'Unrecgonized order type. Should be `defined` or `random`'\n )\n }\n}\n\nexport async function emitMetaMessage(\n eventBroadcaster: EventEmitter,\n env: NodeJS.ProcessEnv,\n runName?: string\n): Promise<void> {\n const meta: MetaMessage = {\n protocolVersion: messages.version,\n implementation: {\n version,\n name: 'cucumber-js',\n },\n cpu: {\n name: os.arch(),\n },\n os: {\n name: os.platform(),\n version: os.release(),\n },\n runtime: {\n name: 'node.js',\n version: process.versions.node,\n },\n ci: detectCiEnvironment(env),\n runName,\n }\n eventBroadcaster.emit('envelope', {\n meta,\n })\n}\n\nconst makeSourceReference = (source: ILineAndUri) => ({\n uri: source.uri,\n location: {\n line: source.line,\n },\n})\n\nfunction emitParameterTypes(\n supportCodeLibrary: ISupportCodeLibrary,\n eventBroadcaster: EventEmitter,\n newId: IdGenerator.NewId\n): void {\n for (const parameterType of supportCodeLibrary.parameterTypeRegistry\n .parameterTypes) {\n if (parameterType.builtin) {\n continue\n }\n const source =\n supportCodeLibrary.parameterTypeRegistry.lookupSource(parameterType)\n const envelope: messages.Envelope = {\n parameterType: {\n id: newId(),\n name: parameterType.name,\n preferForRegularExpressionMatch: parameterType.preferForRegexpMatch,\n regularExpressions: parameterType.regexpStrings,\n useForSnippets: parameterType.useForSnippets,\n sourceReference: makeSourceReference(source),\n },\n }\n eventBroadcaster.emit('envelope', envelope)\n }\n}\n\nfunction emitUndefinedParameterTypes(\n supportCodeLibrary: ISupportCodeLibrary,\n eventBroadcaster: EventEmitter\n): void {\n for (const undefinedParameterType of supportCodeLibrary.undefinedParameterTypes) {\n const envelope: messages.Envelope = {\n undefinedParameterType,\n }\n eventBroadcaster.emit('envelope', envelope)\n }\n}\n\nfunction emitStepDefinitions(\n supportCodeLibrary: ISupportCodeLibrary,\n eventBroadcaster: EventEmitter\n): void {\n supportCodeLibrary.stepDefinitions.forEach((stepDefinition) => {\n const envelope: messages.Envelope = {\n stepDefinition: {\n id: stepDefinition.id,\n pattern: {\n source: stepDefinition.pattern.toString(),\n type:\n typeof stepDefinition.pattern === 'string'\n ? messages.StepDefinitionPatternType.CUCUMBER_EXPRESSION\n : messages.StepDefinitionPatternType.REGULAR_EXPRESSION,\n },\n sourceReference: makeSourceReference(stepDefinition),\n },\n }\n eventBroadcaster.emit('envelope', envelope)\n })\n}\n\nfunction emitTestCaseHooks(\n supportCodeLibrary: ISupportCodeLibrary,\n eventBroadcaster: EventEmitter\n): void {\n ;[]\n .concat(\n supportCodeLibrary.beforeTestCaseHookDefinitions,\n supportCodeLibrary.afterTestCaseHookDefinitions\n )\n .forEach((testCaseHookDefinition: TestCaseHookDefinition) => {\n const envelope: messages.Envelope = {\n hook: {\n id: testCaseHookDefinition.id,\n name: testCaseHookDefinition.name,\n tagExpression: testCaseHookDefinition.tagExpression,\n sourceReference: makeSourceReference(testCaseHookDefinition),\n },\n }\n eventBroadcaster.emit('envelope', envelope)\n })\n}\n\nfunction emitTestRunHooks(\n supportCodeLibrary: ISupportCodeLibrary,\n eventBroadcaster: EventEmitter\n): void {\n ;[]\n .concat(\n supportCodeLibrary.beforeTestRunHookDefinitions,\n supportCodeLibrary.afterTestRunHookDefinitions\n )\n .forEach((testRunHookDefinition: TestRunHookDefinition) => {\n const envelope: messages.Envelope = {\n hook: {\n id: testRunHookDefinition.id,\n sourceReference: makeSourceReference(testRunHookDefinition),\n },\n }\n eventBroadcaster.emit('envelope', envelope)\n })\n}\n\nexport function emitSupportCodeMessages({\n eventBroadcaster,\n supportCodeLibrary,\n newId,\n}: {\n eventBroadcaster: EventEmitter\n supportCodeLibrary: ISupportCodeLibrary\n newId: IdGenerator.NewId\n}): void {\n emitParameterTypes(supportCodeLibrary, eventBroadcaster, newId)\n emitUndefinedParameterTypes(supportCodeLibrary, eventBroadcaster)\n emitStepDefinitions(supportCodeLibrary, eventBroadcaster)\n emitTestCaseHooks(supportCodeLibrary, eventBroadcaster)\n emitTestRunHooks(supportCodeLibrary, eventBroadcaster)\n}\n\nexport function getRunName(argvConfiguration: Partial<IConfiguration>): string {\n if (doesHaveValue(argvConfiguration.runName)) {\n return argvConfiguration.runName\n }\n if (\n doesHaveValue(argvConfiguration.name && argvConfiguration.name.length > 0)\n ) {\n return argvConfiguration.name[0]\n }\n if (doesHaveValue(argvConfiguration.tags)) {\n //replace word \"and\" with & and \"or\" with |\n let tags = argvConfiguration.tags\n .split(' ')\n .map((tag) => (tag === 'and' ? '&' : tag === 'or' ? '|' : tag))\n .join('')\n //remove the starting and ending paranthesis if present\n tags = tags.replace(/^\\(/, '').replace(/\\)$/, '')\n\n return tags\n }\n return ''\n}\n"]}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/cli/helpers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gFAA0C;AAI1C,oDAAgD;AAChD,oDAAiD;AAEjD,4CAAmB;AACnB,6DAA8C;AAE9C,8EAA0D;AAK1D,wCAAoC;AAapC;;;;;;;;GAQG;AACI,KAAK,UAAU,yBAAyB,CAAC,EAC9C,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,EACL,YAAY,GACsB;IAClC,OAAO,MAAM,IAAI,OAAO,CAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrD,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,QAA2B,EAAE,EAAE;YAC9D,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;YAC3C,IAAI,IAAA,6BAAa,EAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;gBAC9B,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAA;gBAC1B,MAAM,eAAe,GAAG,kBAAkB,CAAC,kBAAkB,CAC3D,MAAM,CAAC,GAAG,CACX,CAAA;gBACD,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,EAAE;oBACrD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;iBACtB;aACF;QACH,CAAC,CAAC,CAAA;QACF,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YAClC,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;YACpC,OAAO,CAAC,MAAM,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;QACF,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;AACJ,CAAC;AA5BD,8DA4BC;AAED,+CAA+C;AAC/C,SAAgB,YAAY,CAC1B,SAAc,EACd,KAAkB,EAClB,MAAe;IAEf,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,8BAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAChD,QAAQ,IAAI,EAAE;QACZ,KAAK,SAAS;YACZ,MAAK;QACP,KAAK,QAAQ;YACX,IAAI,IAAI,KAAK,EAAE,EAAE;gBACf,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAA;gBAClE,MAAM,CAAC,IAAI,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAA;gBAClD,IAAA,8BAAO,EAAC,SAAS,EAAE,OAAO,CAAC,CAAA;aAC5B;iBAAM;gBACL,IAAA,8BAAO,EAAC,SAAS,EAAE,IAAI,CAAC,CAAA;aACzB;YACD,MAAK;QACP;YACE,MAAM,IAAI,KAAK,CACb,0DAA0D,CAC3D,CAAA;KACJ;AACH,CAAC;AAvBD,oCAuBC;AAEM,KAAK,UAAU,eAAe,CACnC,gBAA8B,EAC9B,GAAsB;IAEtB,MAAM,IAAI,GAAkB;QAC1B,eAAe,EAAE,QAAQ,CAAC,OAAO;QACjC,cAAc,EAAE;YACd,OAAO,EAAP,iBAAO;YACP,IAAI,EAAE,aAAa;SACpB;QACD,GAAG,EAAE;YACH,IAAI,EAAE,YAAE,CAAC,IAAI,EAAE;SAChB;QACD,EAAE,EAAE;YACF,IAAI,EAAE,YAAE,CAAC,QAAQ,EAAE;YACnB,OAAO,EAAE,YAAE,CAAC,OAAO,EAAE;SACtB;QACD,OAAO,EAAE;YACP,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI;SAC/B;QACD,EAAE,EAAE,IAAA,wBAAmB,EAAC,GAAG,CAAC;KAC7B,CAAA;IACD,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE;QAChC,IAAI;KACL,CAAC,CAAA;AACJ,CAAC;AA1BD,0CA0BC;AAED,MAAM,mBAAmB,GAAG,CAAC,MAAmB,EAAE,EAAE,CAAC,CAAC;IACpD,GAAG,EAAE,MAAM,CAAC,GAAG;IACf,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC,IAAI;KAClB;CACF,CAAC,CAAA;AAEF,SAAS,kBAAkB,CACzB,kBAAuC,EACvC,gBAA8B,EAC9B,KAAwB;IAExB,KAAK,MAAM,aAAa,IAAI,kBAAkB,CAAC,qBAAqB;SACjE,cAAc,EAAE;QACjB,IAAI,aAAa,CAAC,OAAO,EAAE;YACzB,SAAQ;SACT;QACD,MAAM,MAAM,GACV,kBAAkB,CAAC,qBAAqB,CAAC,YAAY,CAAC,aAAa,CAAC,CAAA;QACtE,MAAM,QAAQ,GAAsB;YAClC,aAAa,EAAE;gBACb,EAAE,EAAE,KAAK,EAAE;gBACX,IAAI,EAAE,aAAa,CAAC,IAAI;gBACxB,+BAA+B,EAAE,aAAa,CAAC,oBAAoB;gBACnE,kBAAkB,EAAE,aAAa,CAAC,aAAa;gBAC/C,cAAc,EAAE,aAAa,CAAC,cAAc;gBAC5C,eAAe,EAAE,mBAAmB,CAAC,MAAM,CAAC;aAC7C;SACF,CAAA;QACD,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;KAC5C;AACH,CAAC;AAED,SAAS,2BAA2B,CAClC,kBAAuC,EACvC,gBAA8B;IAE9B,KAAK,MAAM,sBAAsB,IAAI,kBAAkB,CAAC,uBAAuB,EAAE;QAC/E,MAAM,QAAQ,GAAsB;YAClC,sBAAsB;SACvB,CAAA;QACD,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;KAC5C;AACH,CAAC;AAED,SAAS,mBAAmB,CAC1B,kBAAuC,EACvC,gBAA8B;IAE9B,kBAAkB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,EAAE;QAC5D,MAAM,QAAQ,GAAsB;YAClC,cAAc,EAAE;gBACd,EAAE,EAAE,cAAc,CAAC,EAAE;gBACrB,OAAO,EAAE;oBACP,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE;oBACzC,IAAI,EACF,OAAO,cAAc,CAAC,OAAO,KAAK,QAAQ;wBACxC,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC,mBAAmB;wBACxD,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC,kBAAkB;iBAC5D;gBACD,eAAe,EAAE,mBAAmB,CAAC,cAAc,CAAC;aACrD;SACF,CAAA;QACD,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,iBAAiB,CACxB,kBAAuC,EACvC,gBAA8B;IAE9B,CAAC;IAAA,EAAE;SACA,MAAM,CACL,kBAAkB,CAAC,6BAA6B,EAChD,kBAAkB,CAAC,4BAA4B,CAChD;SACA,OAAO,CAAC,CAAC,sBAA8C,EAAE,EAAE;QAC1D,MAAM,QAAQ,GAAsB;YAClC,IAAI,EAAE;gBACJ,EAAE,EAAE,sBAAsB,CAAC,EAAE;gBAC7B,IAAI,EAAE,sBAAsB,CAAC,IAAI;gBACjC,aAAa,EAAE,sBAAsB,CAAC,aAAa;gBACnD,eAAe,EAAE,mBAAmB,CAAC,sBAAsB,CAAC;aAC7D;SACF,CAAA;QACD,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;AACN,CAAC;AAED,SAAS,gBAAgB,CACvB,kBAAuC,EACvC,gBAA8B;IAE9B,CAAC;IAAA,EAAE;SACA,MAAM,CACL,kBAAkB,CAAC,4BAA4B,EAC/C,kBAAkB,CAAC,2BAA2B,CAC/C;SACA,OAAO,CAAC,CAAC,qBAA4C,EAAE,EAAE;QACxD,MAAM,QAAQ,GAAsB;YAClC,IAAI,EAAE;gBACJ,EAAE,EAAE,qBAAqB,CAAC,EAAE;gBAC5B,eAAe,EAAE,mBAAmB,CAAC,qBAAqB,CAAC;aAC5D;SACF,CAAA;QACD,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;AACN,CAAC;AAED,SAAgB,uBAAuB,CAAC,EACtC,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,GAKN;IACC,kBAAkB,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAA;IAC/D,2BAA2B,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAA;IACjE,mBAAmB,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAA;IACzD,iBAAiB,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAA;IACvD,gBAAgB,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAA;AACxD,CAAC;AAdD,0DAcC","sourcesContent":["import shuffle from 'knuth-shuffle-seeded'\nimport { EventEmitter } from 'events'\nimport PickleFilter from '../pickle_filter'\nimport { EventDataCollector } from '../formatter/helpers'\nimport { doesHaveValue } from '../value_checker'\nimport { OptionSplitter } from '../configuration'\nimport { Readable } from 'stream'\nimport os from 'os'\nimport * as messages from '@cucumber/messages'\nimport { IdGenerator } from '@cucumber/messages'\nimport detectCiEnvironment from '@cucumber/ci-environment'\nimport { ISupportCodeLibrary } from '../support_code_library_builder/types'\nimport TestCaseHookDefinition from '../models/test_case_hook_definition'\nimport TestRunHookDefinition from '../models/test_run_hook_definition'\nimport { PickleOrder } from '../models/pickle_order'\nimport { version } from '../version'\nimport { ILogger } from '../logger'\nimport { ILineAndUri } from '../types'\n\ninterface IParseGherkinMessageStreamRequest {\n cwd?: string\n eventBroadcaster: EventEmitter\n eventDataCollector: EventDataCollector\n gherkinMessageStream: Readable\n order: string\n pickleFilter: PickleFilter\n}\n\n/**\n * Process a stream of envelopes from Gherkin and resolve to an array of filtered, ordered pickle Ids\n *\n * @param eventBroadcaster\n * @param eventDataCollector\n * @param gherkinMessageStream\n * @param order\n * @param pickleFilter\n */\nexport async function parseGherkinMessageStream({\n eventBroadcaster,\n eventDataCollector,\n gherkinMessageStream,\n order,\n pickleFilter,\n}: IParseGherkinMessageStreamRequest): Promise<string[]> {\n return await new Promise<string[]>((resolve, reject) => {\n const result: string[] = []\n gherkinMessageStream.on('data', (envelope: messages.Envelope) => {\n eventBroadcaster.emit('envelope', envelope)\n if (doesHaveValue(envelope.pickle)) {\n const pickle = envelope.pickle\n const pickleId = pickle.id\n const gherkinDocument = eventDataCollector.getGherkinDocument(\n pickle.uri\n )\n if (pickleFilter.matches({ gherkinDocument, pickle })) {\n result.push(pickleId)\n }\n }\n })\n gherkinMessageStream.on('end', () => {\n orderPickles(result, order, console)\n resolve(result)\n })\n gherkinMessageStream.on('error', reject)\n })\n}\n\n// Orders the pickleIds in place - morphs input\nexport function orderPickles<T = string>(\n pickleIds: T[],\n order: PickleOrder,\n logger: ILogger\n): void {\n const [type, seed] = OptionSplitter.split(order)\n switch (type) {\n case 'defined':\n break\n case 'random':\n if (seed === '') {\n const newSeed = Math.floor(Math.random() * 1000 * 1000).toString()\n logger.warn(`Random order using seed: ${newSeed}`)\n shuffle(pickleIds, newSeed)\n } else {\n shuffle(pickleIds, seed)\n }\n break\n default:\n throw new Error(\n 'Unrecgonized order type. Should be `defined` or `random`'\n )\n }\n}\n\nexport async function emitMetaMessage(\n eventBroadcaster: EventEmitter,\n env: NodeJS.ProcessEnv\n): Promise<void> {\n const meta: messages.Meta = {\n protocolVersion: messages.version,\n implementation: {\n version,\n name: 'cucumber-js',\n },\n cpu: {\n name: os.arch(),\n },\n os: {\n name: os.platform(),\n version: os.release(),\n },\n runtime: {\n name: 'node.js',\n version: process.versions.node,\n },\n ci: detectCiEnvironment(env),\n }\n eventBroadcaster.emit('envelope', {\n meta,\n })\n}\n\nconst makeSourceReference = (source: ILineAndUri) => ({\n uri: source.uri,\n location: {\n line: source.line,\n },\n})\n\nfunction emitParameterTypes(\n supportCodeLibrary: ISupportCodeLibrary,\n eventBroadcaster: EventEmitter,\n newId: IdGenerator.NewId\n): void {\n for (const parameterType of supportCodeLibrary.parameterTypeRegistry\n .parameterTypes) {\n if (parameterType.builtin) {\n continue\n }\n const source =\n supportCodeLibrary.parameterTypeRegistry.lookupSource(parameterType)\n const envelope: messages.Envelope = {\n parameterType: {\n id: newId(),\n name: parameterType.name,\n preferForRegularExpressionMatch: parameterType.preferForRegexpMatch,\n regularExpressions: parameterType.regexpStrings,\n useForSnippets: parameterType.useForSnippets,\n sourceReference: makeSourceReference(source),\n },\n }\n eventBroadcaster.emit('envelope', envelope)\n }\n}\n\nfunction emitUndefinedParameterTypes(\n supportCodeLibrary: ISupportCodeLibrary,\n eventBroadcaster: EventEmitter\n): void {\n for (const undefinedParameterType of supportCodeLibrary.undefinedParameterTypes) {\n const envelope: messages.Envelope = {\n undefinedParameterType,\n }\n eventBroadcaster.emit('envelope', envelope)\n }\n}\n\nfunction emitStepDefinitions(\n supportCodeLibrary: ISupportCodeLibrary,\n eventBroadcaster: EventEmitter\n): void {\n supportCodeLibrary.stepDefinitions.forEach((stepDefinition) => {\n const envelope: messages.Envelope = {\n stepDefinition: {\n id: stepDefinition.id,\n pattern: {\n source: stepDefinition.pattern.toString(),\n type:\n typeof stepDefinition.pattern === 'string'\n ? messages.StepDefinitionPatternType.CUCUMBER_EXPRESSION\n : messages.StepDefinitionPatternType.REGULAR_EXPRESSION,\n },\n sourceReference: makeSourceReference(stepDefinition),\n },\n }\n eventBroadcaster.emit('envelope', envelope)\n })\n}\n\nfunction emitTestCaseHooks(\n supportCodeLibrary: ISupportCodeLibrary,\n eventBroadcaster: EventEmitter\n): void {\n ;[]\n .concat(\n supportCodeLibrary.beforeTestCaseHookDefinitions,\n supportCodeLibrary.afterTestCaseHookDefinitions\n )\n .forEach((testCaseHookDefinition: TestCaseHookDefinition) => {\n const envelope: messages.Envelope = {\n hook: {\n id: testCaseHookDefinition.id,\n name: testCaseHookDefinition.name,\n tagExpression: testCaseHookDefinition.tagExpression,\n sourceReference: makeSourceReference(testCaseHookDefinition),\n },\n }\n eventBroadcaster.emit('envelope', envelope)\n })\n}\n\nfunction emitTestRunHooks(\n supportCodeLibrary: ISupportCodeLibrary,\n eventBroadcaster: EventEmitter\n): void {\n ;[]\n .concat(\n supportCodeLibrary.beforeTestRunHookDefinitions,\n supportCodeLibrary.afterTestRunHookDefinitions\n )\n .forEach((testRunHookDefinition: TestRunHookDefinition) => {\n const envelope: messages.Envelope = {\n hook: {\n id: testRunHookDefinition.id,\n sourceReference: makeSourceReference(testRunHookDefinition),\n },\n }\n eventBroadcaster.emit('envelope', envelope)\n })\n}\n\nexport function emitSupportCodeMessages({\n eventBroadcaster,\n supportCodeLibrary,\n newId,\n}: {\n eventBroadcaster: EventEmitter\n supportCodeLibrary: ISupportCodeLibrary\n newId: IdGenerator.NewId\n}): void {\n emitParameterTypes(supportCodeLibrary, eventBroadcaster, newId)\n emitUndefinedParameterTypes(supportCodeLibrary, eventBroadcaster)\n emitStepDefinitions(supportCodeLibrary, eventBroadcaster)\n emitTestCaseHooks(supportCodeLibrary, eventBroadcaster)\n emitTestRunHooks(supportCodeLibrary, eventBroadcaster)\n}\n"]}
package/lib/cli/i18n.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare function getLanguages(): string;
2
- export declare function getKeywords(isoCode: string): string;
1
+ export declare function getLanguages(): string;
2
+ export declare function getKeywords(isoCode: string): string;