@cucumber/cucumber 10.0.1 → 10.1.0
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.
- package/lib/api/gherkin.d.ts +5 -13
- package/lib/api/gherkin.js +6 -26
- package/lib/api/gherkin.js.map +1 -1
- package/lib/api/load_sources.js +16 -9
- package/lib/api/load_sources.js.map +1 -1
- package/lib/api/load_support.js +11 -4
- package/lib/api/load_support.js.map +1 -1
- package/lib/api/plugins.d.ts +4 -2
- package/lib/api/plugins.js +19 -8
- package/lib/api/plugins.js.map +1 -1
- package/lib/api/run_cucumber.js +19 -13
- package/lib/api/run_cucumber.js.map +1 -1
- package/lib/cli/run.js +1 -2
- package/lib/cli/run.js.map +1 -1
- package/lib/configuration/types.d.ts +2 -1
- package/lib/configuration/types.js.map +1 -1
- package/lib/filter/filter_plugin.d.ts +3 -0
- package/lib/filter/filter_plugin.js +32 -0
- package/lib/filter/filter_plugin.js.map +1 -0
- package/lib/filter/index.d.ts +3 -0
- package/lib/filter/index.js +20 -0
- package/lib/filter/index.js.map +1 -0
- package/lib/filter/types.d.ts +6 -0
- package/lib/filter/types.js +3 -0
- package/lib/filter/types.js.map +1 -0
- package/lib/index.d.ts +2 -2
- package/lib/paths/index.d.ts +2 -0
- package/lib/paths/index.js +19 -0
- package/lib/paths/index.js.map +1 -0
- package/lib/paths/paths.d.ts +4 -0
- package/lib/{api → paths}/paths.js +8 -8
- package/lib/paths/paths.js.map +1 -0
- package/lib/paths/types.d.ts +6 -0
- package/lib/paths/types.js +3 -0
- package/lib/paths/types.js.map +1 -0
- package/lib/plugin/events.d.ts +2 -0
- package/lib/plugin/events.js +9 -0
- package/lib/plugin/events.js.map +1 -0
- package/lib/plugin/plugin_manager.d.ts +5 -6
- package/lib/plugin/plugin_manager.js +26 -16
- package/lib/plugin/plugin_manager.js.map +1 -1
- package/lib/plugin/types.d.ts +34 -10
- package/lib/plugin/types.js.map +1 -1
- package/lib/publish/publish_plugin.d.ts +3 -2
- package/lib/publish/publish_plugin.js +27 -25
- package/lib/publish/publish_plugin.js.map +1 -1
- package/lib/runtime/index.d.ts +2 -1
- package/lib/runtime/index.js +1 -1
- package/lib/runtime/index.js.map +1 -1
- package/lib/runtime/parallel/run_worker.js +1 -2
- package/lib/runtime/parallel/run_worker.js.map +1 -1
- package/lib/runtime/parallel/worker.js +1 -1
- package/lib/runtime/parallel/worker.js.map +1 -1
- package/lib/runtime/run_test_run_hooks.d.ts +2 -1
- package/lib/runtime/run_test_run_hooks.js +3 -4
- package/lib/runtime/run_test_run_hooks.js.map +1 -1
- package/lib/runtime/test_case_runner.d.ts +2 -1
- package/lib/runtime/test_case_runner.js +1 -1
- package/lib/runtime/test_case_runner.js.map +1 -1
- package/lib/support_code_library_builder/types.d.ts +6 -2
- package/lib/support_code_library_builder/types.js.map +1 -1
- package/lib/try_require.js +1 -3
- package/lib/try_require.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/lib/version.js.map +1 -1
- package/package.json +13 -14
- package/lib/api/paths.d.ts +0 -8
- package/lib/api/paths.js.map +0 -1
package/lib/api/gherkin.d.ts
CHANGED
|
@@ -1,21 +1,13 @@
|
|
|
1
|
-
import { Envelope,
|
|
2
|
-
import {
|
|
1
|
+
import { Envelope, IdGenerator, ParseError } from '@cucumber/messages';
|
|
2
|
+
import { IFilterablePickle } from '../filter';
|
|
3
3
|
import { ISourcesCoordinates } from './types';
|
|
4
|
-
|
|
5
|
-
gherkinDocument: GherkinDocument;
|
|
6
|
-
location: Location;
|
|
7
|
-
pickle: Pickle;
|
|
8
|
-
}
|
|
9
|
-
export declare function getFilteredPicklesAndErrors({ newId, cwd, logger, unexpandedFeaturePaths, featurePaths, coordinates, onEnvelope, }: {
|
|
4
|
+
export declare function getPicklesAndErrors({ newId, cwd, sourcePaths, coordinates, onEnvelope, }: {
|
|
10
5
|
newId: IdGenerator.NewId;
|
|
11
6
|
cwd: string;
|
|
12
|
-
|
|
13
|
-
unexpandedFeaturePaths: string[];
|
|
14
|
-
featurePaths: string[];
|
|
7
|
+
sourcePaths: string[];
|
|
15
8
|
coordinates: ISourcesCoordinates;
|
|
16
9
|
onEnvelope?: (envelope: Envelope) => void;
|
|
17
10
|
}): Promise<{
|
|
18
|
-
|
|
11
|
+
filterablePickles: readonly IFilterablePickle[];
|
|
19
12
|
parseErrors: ParseError[];
|
|
20
13
|
}>;
|
|
21
|
-
export {};
|
package/lib/api/gherkin.js
CHANGED
|
@@ -1,17 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
3
|
+
exports.getPicklesAndErrors = void 0;
|
|
7
4
|
const gherkin_streams_1 = require("@cucumber/gherkin-streams");
|
|
8
5
|
const gherkin_utils_1 = require("@cucumber/gherkin-utils");
|
|
9
|
-
|
|
10
|
-
const helpers_1 = require("../cli/helpers");
|
|
11
|
-
async function getFilteredPicklesAndErrors({ newId, cwd, logger, unexpandedFeaturePaths, featurePaths, coordinates, onEnvelope, }) {
|
|
6
|
+
async function getPicklesAndErrors({ newId, cwd, sourcePaths, coordinates, onEnvelope, }) {
|
|
12
7
|
const gherkinQuery = new gherkin_utils_1.Query();
|
|
13
8
|
const parseErrors = [];
|
|
14
|
-
await gherkinFromPaths(
|
|
9
|
+
await gherkinFromPaths(sourcePaths, {
|
|
15
10
|
newId,
|
|
16
11
|
relativeTo: cwd,
|
|
17
12
|
defaultDialect: coordinates.defaultDialect,
|
|
@@ -22,21 +17,7 @@ async function getFilteredPicklesAndErrors({ newId, cwd, logger, unexpandedFeatu
|
|
|
22
17
|
}
|
|
23
18
|
onEnvelope?.(envelope);
|
|
24
19
|
});
|
|
25
|
-
const
|
|
26
|
-
cwd,
|
|
27
|
-
featurePaths: unexpandedFeaturePaths,
|
|
28
|
-
names: coordinates.names,
|
|
29
|
-
tagExpression: coordinates.tagExpression,
|
|
30
|
-
});
|
|
31
|
-
const filteredPickles = gherkinQuery
|
|
32
|
-
.getPickles()
|
|
33
|
-
.filter((pickle) => {
|
|
34
|
-
const gherkinDocument = gherkinQuery
|
|
35
|
-
.getGherkinDocuments()
|
|
36
|
-
.find((doc) => doc.uri === pickle.uri);
|
|
37
|
-
return pickleFilter.matches({ gherkinDocument, pickle });
|
|
38
|
-
})
|
|
39
|
-
.map((pickle) => {
|
|
20
|
+
const filterablePickles = gherkinQuery.getPickles().map((pickle) => {
|
|
40
21
|
const gherkinDocument = gherkinQuery
|
|
41
22
|
.getGherkinDocuments()
|
|
42
23
|
.find((doc) => doc.uri === pickle.uri);
|
|
@@ -47,13 +28,12 @@ async function getFilteredPicklesAndErrors({ newId, cwd, logger, unexpandedFeatu
|
|
|
47
28
|
pickle,
|
|
48
29
|
};
|
|
49
30
|
});
|
|
50
|
-
(0, helpers_1.orderPickles)(filteredPickles, coordinates.order, logger);
|
|
51
31
|
return {
|
|
52
|
-
|
|
32
|
+
filterablePickles,
|
|
53
33
|
parseErrors,
|
|
54
34
|
};
|
|
55
35
|
}
|
|
56
|
-
exports.
|
|
36
|
+
exports.getPicklesAndErrors = getPicklesAndErrors;
|
|
57
37
|
async function gherkinFromPaths(paths, options, onEnvelope) {
|
|
58
38
|
return new Promise((resolve, reject) => {
|
|
59
39
|
const gherkinMessageStream = gherkin_streams_1.GherkinStreams.fromPaths(paths, options);
|
package/lib/api/gherkin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gherkin.js","sourceRoot":"","sources":["../../src/api/gherkin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gherkin.js","sourceRoot":"","sources":["../../src/api/gherkin.ts"],"names":[],"mappings":";;;AAAA,+DAGkC;AAElC,2DAA+D;AAIxD,KAAK,UAAU,mBAAmB,CAAC,EACxC,KAAK,EACL,GAAG,EACH,WAAW,EACX,WAAW,EACX,UAAU,GAOX;IAIC,MAAM,YAAY,GAAG,IAAI,qBAAY,EAAE,CAAA;IACvC,MAAM,WAAW,GAAiB,EAAE,CAAA;IACpC,MAAM,gBAAgB,CACpB,WAAW,EACX;QACE,KAAK;QACL,UAAU,EAAE,GAAG;QACf,cAAc,EAAE,WAAW,CAAC,cAAc;KAC3C,EACD,CAAC,QAAQ,EAAE,EAAE;QACX,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC7B,IAAI,QAAQ,CAAC,UAAU,EAAE;YACvB,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;SACtC;QACD,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAA;IACxB,CAAC,CACF,CAAA;IACD,MAAM,iBAAiB,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACjE,MAAM,eAAe,GAAG,YAAY;aACjC,mBAAmB,EAAE;aACrB,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,CAAA;QACxC,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,CACvC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAChD,CAAA;QACD,OAAO;YACL,eAAe;YACf,QAAQ;YACR,MAAM;SACP,CAAA;IACH,CAAC,CAAC,CAAA;IACF,OAAO;QACL,iBAAiB;QACjB,WAAW;KACZ,CAAA;AACH,CAAC;AAlDD,kDAkDC;AAED,KAAK,UAAU,gBAAgB,CAC7B,KAAe,EACf,OAA8B,EAC9B,UAAwC;IAExC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,oBAAoB,GAAG,gCAAc,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QACrE,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;QAC3C,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QACvC,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import {\n GherkinStreams,\n IGherkinStreamOptions,\n} from '@cucumber/gherkin-streams'\nimport { Envelope, IdGenerator, ParseError } from '@cucumber/messages'\nimport { Query as GherkinQuery } from '@cucumber/gherkin-utils'\nimport { IFilterablePickle } from '../filter'\nimport { ISourcesCoordinates } from './types'\n\nexport async function getPicklesAndErrors({\n newId,\n cwd,\n sourcePaths,\n coordinates,\n onEnvelope,\n}: {\n newId: IdGenerator.NewId\n cwd: string\n sourcePaths: string[]\n coordinates: ISourcesCoordinates\n onEnvelope?: (envelope: Envelope) => void\n}): Promise<{\n filterablePickles: readonly IFilterablePickle[]\n parseErrors: ParseError[]\n}> {\n const gherkinQuery = new GherkinQuery()\n const parseErrors: ParseError[] = []\n await gherkinFromPaths(\n sourcePaths,\n {\n newId,\n relativeTo: cwd,\n defaultDialect: coordinates.defaultDialect,\n },\n (envelope) => {\n gherkinQuery.update(envelope)\n if (envelope.parseError) {\n parseErrors.push(envelope.parseError)\n }\n onEnvelope?.(envelope)\n }\n )\n const filterablePickles = gherkinQuery.getPickles().map((pickle) => {\n const gherkinDocument = gherkinQuery\n .getGherkinDocuments()\n .find((doc) => doc.uri === pickle.uri)\n const location = gherkinQuery.getLocation(\n pickle.astNodeIds[pickle.astNodeIds.length - 1]\n )\n return {\n gherkinDocument,\n location,\n pickle,\n }\n })\n return {\n filterablePickles,\n parseErrors,\n }\n}\n\nasync function gherkinFromPaths(\n paths: string[],\n options: IGherkinStreamOptions,\n onEnvelope: (envelope: Envelope) => void\n): Promise<void> {\n return new Promise((resolve, reject) => {\n const gherkinMessageStream = GherkinStreams.fromPaths(paths, options)\n gherkinMessageStream.on('data', onEnvelope)\n gherkinMessageStream.on('end', resolve)\n gherkinMessageStream.on('error', reject)\n })\n}\n"]}
|
package/lib/api/load_sources.js
CHANGED
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.loadSources = void 0;
|
|
4
4
|
const messages_1 = require("@cucumber/messages");
|
|
5
|
-
const paths_1 = require("
|
|
5
|
+
const paths_1 = require("../paths");
|
|
6
6
|
const environment_1 = require("./environment");
|
|
7
7
|
const gherkin_1 = require("./gherkin");
|
|
8
8
|
const console_logger_1 = require("./console_logger");
|
|
9
|
+
const plugins_1 = require("./plugins");
|
|
9
10
|
/**
|
|
10
11
|
* Load and parse features, produce a filtered and ordered test plan and/or parse errors.
|
|
11
12
|
*
|
|
@@ -14,25 +15,30 @@ const console_logger_1 = require("./console_logger");
|
|
|
14
15
|
* @param environment - Project environment.
|
|
15
16
|
*/
|
|
16
17
|
async function loadSources(coordinates, environment = {}) {
|
|
17
|
-
const
|
|
18
|
+
const mergedEnvironment = (0, environment_1.mergeEnvironment)(environment);
|
|
19
|
+
const { cwd, stderr, debug } = mergedEnvironment;
|
|
18
20
|
const logger = new console_logger_1.ConsoleLogger(stderr, debug);
|
|
19
21
|
const newId = messages_1.IdGenerator.uuid();
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
+
const pluginManager = await (0, plugins_1.initializeForLoadSources)(logger, coordinates, mergedEnvironment);
|
|
23
|
+
const resolvedPaths = await (0, paths_1.resolvePaths)(logger, cwd, coordinates);
|
|
24
|
+
pluginManager.emit('paths:resolve', resolvedPaths);
|
|
25
|
+
const { sourcePaths } = resolvedPaths;
|
|
26
|
+
if (sourcePaths.length === 0) {
|
|
22
27
|
return {
|
|
23
28
|
plan: [],
|
|
24
29
|
errors: [],
|
|
25
30
|
};
|
|
26
31
|
}
|
|
27
|
-
const {
|
|
32
|
+
const { filterablePickles, parseErrors } = await (0, gherkin_1.getPicklesAndErrors)({
|
|
28
33
|
newId,
|
|
29
34
|
cwd,
|
|
30
|
-
|
|
31
|
-
unexpandedFeaturePaths,
|
|
32
|
-
featurePaths,
|
|
35
|
+
sourcePaths,
|
|
33
36
|
coordinates,
|
|
37
|
+
onEnvelope: (envelope) => pluginManager.emit('message', envelope),
|
|
34
38
|
});
|
|
35
|
-
const
|
|
39
|
+
const filteredPickles = await pluginManager.transform('pickles:filter', filterablePickles);
|
|
40
|
+
const orderedPickles = await pluginManager.transform('pickles:order', filteredPickles);
|
|
41
|
+
const plan = orderedPickles.map(({ location, pickle }) => ({
|
|
36
42
|
name: pickle.name,
|
|
37
43
|
uri: pickle.uri,
|
|
38
44
|
location,
|
|
@@ -44,6 +50,7 @@ async function loadSources(coordinates, environment = {}) {
|
|
|
44
50
|
message,
|
|
45
51
|
};
|
|
46
52
|
});
|
|
53
|
+
await pluginManager.cleanup();
|
|
47
54
|
return {
|
|
48
55
|
plan,
|
|
49
56
|
errors,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load_sources.js","sourceRoot":"","sources":["../../src/api/load_sources.ts"],"names":[],"mappings":";;;AAAA,iDAAgD;
|
|
1
|
+
{"version":3,"file":"load_sources.js","sourceRoot":"","sources":["../../src/api/load_sources.ts"],"names":[],"mappings":";;;AAAA,iDAAgD;AAEhD,oCAAuC;AAQvC,+CAAgD;AAChD,uCAA+C;AAC/C,qDAAgD;AAChD,uCAAoD;AAEpD;;;;;;GAMG;AACI,KAAK,UAAU,WAAW,CAC/B,WAAgC,EAChC,cAA+B,EAAE;IAEjC,MAAM,iBAAiB,GAAG,IAAA,8BAAgB,EAAC,WAAW,CAAC,CAAA;IACvD,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,iBAAiB,CAAA;IAChD,MAAM,MAAM,GAAY,IAAI,8BAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IACxD,MAAM,KAAK,GAAG,sBAAW,CAAC,IAAI,EAAE,CAAA;IAChC,MAAM,aAAa,GAAG,MAAM,IAAA,kCAAwB,EAClD,MAAM,EACN,WAAW,EACX,iBAAiB,CAClB,CAAA;IACD,MAAM,aAAa,GAAG,MAAM,IAAA,oBAAY,EAAC,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,CAAA;IAClE,aAAa,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CAAA;IAClD,MAAM,EAAE,WAAW,EAAE,GAAG,aAAa,CAAA;IACrC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;QAC5B,OAAO;YACL,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,EAAE;SACX,CAAA;KACF;IACD,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,GAAG,MAAM,IAAA,6BAAmB,EAAC;QACnE,KAAK;QACL,GAAG;QACH,WAAW;QACX,WAAW;QACX,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC;KAClE,CAAC,CAAA;IACF,MAAM,eAAe,GAAG,MAAM,aAAa,CAAC,SAAS,CACnD,gBAAgB,EAChB,iBAAiB,CAClB,CAAA;IACD,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC,SAAS,CAClD,eAAe,EACf,eAAe,CAChB,CAAA;IACD,MAAM,IAAI,GAAqB,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3E,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,QAAQ;KACT,CAAC,CAAC,CAAA;IACH,MAAM,MAAM,GAAoB,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;QACtE,OAAO;YACL,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,OAAO;SACR,CAAA;IACH,CAAC,CAAC,CAAA;IACF,MAAM,aAAa,CAAC,OAAO,EAAE,CAAA;IAC7B,OAAO;QACL,IAAI;QACJ,MAAM;KACP,CAAA;AACH,CAAC;AAtDD,kCAsDC","sourcesContent":["import { IdGenerator } from '@cucumber/messages'\nimport { ILogger } from '../logger'\nimport { resolvePaths } from '../paths'\nimport {\n ILoadSourcesResult,\n IPlannedPickle,\n IRunEnvironment,\n ISourcesCoordinates,\n ISourcesError,\n} from './types'\nimport { mergeEnvironment } from './environment'\nimport { getPicklesAndErrors } from './gherkin'\nimport { ConsoleLogger } from './console_logger'\nimport { initializeForLoadSources } from './plugins'\n\n/**\n * Load and parse features, produce a filtered and ordered test plan and/or parse errors.\n *\n * @public\n * @param coordinates - Coordinates required to find features\n * @param environment - Project environment.\n */\nexport async function loadSources(\n coordinates: ISourcesCoordinates,\n environment: IRunEnvironment = {}\n): Promise<ILoadSourcesResult> {\n const mergedEnvironment = mergeEnvironment(environment)\n const { cwd, stderr, debug } = mergedEnvironment\n const logger: ILogger = new ConsoleLogger(stderr, debug)\n const newId = IdGenerator.uuid()\n const pluginManager = await initializeForLoadSources(\n logger,\n coordinates,\n mergedEnvironment\n )\n const resolvedPaths = await resolvePaths(logger, cwd, coordinates)\n pluginManager.emit('paths:resolve', resolvedPaths)\n const { sourcePaths } = resolvedPaths\n if (sourcePaths.length === 0) {\n return {\n plan: [],\n errors: [],\n }\n }\n const { filterablePickles, parseErrors } = await getPicklesAndErrors({\n newId,\n cwd,\n sourcePaths,\n coordinates,\n onEnvelope: (envelope) => pluginManager.emit('message', envelope),\n })\n const filteredPickles = await pluginManager.transform(\n 'pickles:filter',\n filterablePickles\n )\n const orderedPickles = await pluginManager.transform(\n 'pickles:order',\n filteredPickles\n )\n const plan: IPlannedPickle[] = orderedPickles.map(({ location, pickle }) => ({\n name: pickle.name,\n uri: pickle.uri,\n location,\n }))\n const errors: ISourcesError[] = parseErrors.map(({ source, message }) => {\n return {\n uri: source.uri,\n location: source.location,\n message,\n }\n })\n await pluginManager.cleanup()\n return {\n plan,\n errors,\n }\n}\n"]}
|
package/lib/api/load_support.js
CHANGED
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.loadSupport = void 0;
|
|
4
4
|
const messages_1 = require("@cucumber/messages");
|
|
5
|
-
const paths_1 = require("
|
|
5
|
+
const paths_1 = require("../paths");
|
|
6
6
|
const support_1 = require("./support");
|
|
7
7
|
const environment_1 = require("./environment");
|
|
8
8
|
const console_logger_1 = require("./console_logger");
|
|
9
|
+
const plugins_1 = require("./plugins");
|
|
9
10
|
/**
|
|
10
11
|
* Load support code for use in test runs.
|
|
11
12
|
*
|
|
@@ -14,17 +15,23 @@ const console_logger_1 = require("./console_logger");
|
|
|
14
15
|
* @param environment - Project environment.
|
|
15
16
|
*/
|
|
16
17
|
async function loadSupport(options, environment = {}) {
|
|
17
|
-
const
|
|
18
|
+
const mergedEnvironment = (0, environment_1.mergeEnvironment)(environment);
|
|
19
|
+
const { cwd, stderr, debug } = mergedEnvironment;
|
|
18
20
|
const logger = new console_logger_1.ConsoleLogger(stderr, debug);
|
|
19
21
|
const newId = messages_1.IdGenerator.uuid();
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
+
const pluginManager = await (0, plugins_1.initializeForLoadSupport)();
|
|
23
|
+
const resolvedPaths = await (0, paths_1.resolvePaths)(logger, cwd, options.sources, options.support);
|
|
24
|
+
pluginManager.emit('paths:resolve', resolvedPaths);
|
|
25
|
+
const { requirePaths, importPaths } = resolvedPaths;
|
|
26
|
+
const supportCodeLibrary = await (0, support_1.getSupportCodeLibrary)({
|
|
22
27
|
cwd,
|
|
23
28
|
newId,
|
|
24
29
|
requireModules: options.support.requireModules,
|
|
25
30
|
requirePaths,
|
|
26
31
|
importPaths,
|
|
27
32
|
});
|
|
33
|
+
await pluginManager.cleanup();
|
|
34
|
+
return supportCodeLibrary;
|
|
28
35
|
}
|
|
29
36
|
exports.loadSupport = loadSupport;
|
|
30
37
|
//# sourceMappingURL=load_support.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load_support.js","sourceRoot":"","sources":["../../src/api/load_support.ts"],"names":[],"mappings":";;;AAAA,iDAAgD;
|
|
1
|
+
{"version":3,"file":"load_support.js","sourceRoot":"","sources":["../../src/api/load_support.ts"],"names":[],"mappings":";;;AAAA,iDAAgD;AAGhD,oCAAuC;AAEvC,uCAAiD;AACjD,+CAAgD;AAChD,qDAAgD;AAChD,uCAAoD;AAEpD;;;;;;GAMG;AACI,KAAK,UAAU,WAAW,CAC/B,OAA4B,EAC5B,cAA+B,EAAE;IAEjC,MAAM,iBAAiB,GAAG,IAAA,8BAAgB,EAAC,WAAW,CAAC,CAAA;IACvD,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,iBAAiB,CAAA;IAChD,MAAM,MAAM,GAAY,IAAI,8BAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IACxD,MAAM,KAAK,GAAG,sBAAW,CAAC,IAAI,EAAE,CAAA;IAChC,MAAM,aAAa,GAAG,MAAM,IAAA,kCAAwB,GAAE,CAAA;IACtD,MAAM,aAAa,GAAG,MAAM,IAAA,oBAAY,EACtC,MAAM,EACN,GAAG,EACH,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,OAAO,CAChB,CAAA;IACD,aAAa,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CAAA;IAClD,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,aAAa,CAAA;IACnD,MAAM,kBAAkB,GAAG,MAAM,IAAA,+BAAqB,EAAC;QACrD,GAAG;QACH,KAAK;QACL,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,cAAc;QAC9C,YAAY;QACZ,WAAW;KACZ,CAAC,CAAA;IACF,MAAM,aAAa,CAAC,OAAO,EAAE,CAAA;IAC7B,OAAO,kBAAkB,CAAA;AAC3B,CAAC;AA1BD,kCA0BC","sourcesContent":["import { IdGenerator } from '@cucumber/messages'\nimport { ISupportCodeLibrary } from '../support_code_library_builder/types'\nimport { ILogger } from '../logger'\nimport { resolvePaths } from '../paths'\nimport { ILoadSupportOptions, IRunEnvironment } from './types'\nimport { getSupportCodeLibrary } from './support'\nimport { mergeEnvironment } from './environment'\nimport { ConsoleLogger } from './console_logger'\nimport { initializeForLoadSupport } from './plugins'\n\n/**\n * Load support code for use in test runs.\n *\n * @public\n * @param options - Subset of `IRunnableConfiguration` required to find the support code.\n * @param environment - Project environment.\n */\nexport async function loadSupport(\n options: ILoadSupportOptions,\n environment: IRunEnvironment = {}\n): Promise<ISupportCodeLibrary> {\n const mergedEnvironment = mergeEnvironment(environment)\n const { cwd, stderr, debug } = mergedEnvironment\n const logger: ILogger = new ConsoleLogger(stderr, debug)\n const newId = IdGenerator.uuid()\n const pluginManager = await initializeForLoadSupport()\n const resolvedPaths = await resolvePaths(\n logger,\n cwd,\n options.sources,\n options.support\n )\n pluginManager.emit('paths:resolve', resolvedPaths)\n const { requirePaths, importPaths } = resolvedPaths\n const supportCodeLibrary = await getSupportCodeLibrary({\n cwd,\n newId,\n requireModules: options.support.requireModules,\n requirePaths,\n importPaths,\n })\n await pluginManager.cleanup()\n return supportCodeLibrary\n}\n"]}
|
package/lib/api/plugins.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { PluginManager } from '../plugin';
|
|
2
2
|
import { ILogger } from '../logger';
|
|
3
|
-
import { IRunEnvironment,
|
|
4
|
-
export declare function
|
|
3
|
+
import { IRunConfiguration, IRunEnvironment, ISourcesCoordinates } from './types';
|
|
4
|
+
export declare function initializeForLoadSources(logger: ILogger, coordinates: ISourcesCoordinates, environment: Required<IRunEnvironment>): Promise<PluginManager>;
|
|
5
|
+
export declare function initializeForLoadSupport(): Promise<PluginManager>;
|
|
6
|
+
export declare function initializeForRunCucumber(logger: ILogger, configuration: IRunConfiguration, environment: Required<IRunEnvironment>): Promise<PluginManager>;
|
package/lib/api/plugins.js
CHANGED
|
@@ -3,17 +3,28 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.initializeForRunCucumber = exports.initializeForLoadSupport = exports.initializeForLoadSources = void 0;
|
|
7
7
|
const plugin_1 = require("../plugin");
|
|
8
8
|
const publish_1 = __importDefault(require("../publish"));
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
const filter_1 = __importDefault(require("../filter"));
|
|
10
|
+
async function initializeForLoadSources(logger, coordinates, environment) {
|
|
11
|
+
// eventually we'll load plugin packages here
|
|
12
|
+
const pluginManager = new plugin_1.PluginManager();
|
|
13
|
+
await pluginManager.init('loadSources', filter_1.default, coordinates, logger, environment);
|
|
14
|
+
return pluginManager;
|
|
15
|
+
}
|
|
16
|
+
exports.initializeForLoadSources = initializeForLoadSources;
|
|
17
|
+
async function initializeForLoadSupport() {
|
|
18
|
+
// eventually we'll load plugin packages here
|
|
19
|
+
return new plugin_1.PluginManager();
|
|
20
|
+
}
|
|
21
|
+
exports.initializeForLoadSupport = initializeForLoadSupport;
|
|
22
|
+
async function initializeForRunCucumber(logger, configuration, environment) {
|
|
13
23
|
// eventually we'll load plugin packages here
|
|
14
|
-
const pluginManager = new plugin_1.PluginManager(
|
|
15
|
-
await pluginManager.init(
|
|
24
|
+
const pluginManager = new plugin_1.PluginManager();
|
|
25
|
+
await pluginManager.init('runCucumber', publish_1.default, configuration.formats.publish, logger, environment);
|
|
26
|
+
await pluginManager.init('runCucumber', filter_1.default, configuration.sources, logger, environment);
|
|
16
27
|
return pluginManager;
|
|
17
28
|
}
|
|
18
|
-
exports.
|
|
29
|
+
exports.initializeForRunCucumber = initializeForRunCucumber;
|
|
19
30
|
//# sourceMappingURL=plugins.js.map
|
package/lib/api/plugins.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/api/plugins.ts"],"names":[],"mappings":";;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/api/plugins.ts"],"names":[],"mappings":";;;;;;AAAA,sCAAyC;AACzC,yDAAsC;AAEtC,uDAAoC;AAO7B,KAAK,UAAU,wBAAwB,CAC5C,MAAe,EACf,WAAgC,EAChC,WAAsC;IAEtC,6CAA6C;IAC7C,MAAM,aAAa,GAAG,IAAI,sBAAa,EAAE,CAAA;IACzC,MAAM,aAAa,CAAC,IAAI,CACtB,aAAa,EACb,gBAAY,EACZ,WAAW,EACX,MAAM,EACN,WAAW,CACZ,CAAA;IACD,OAAO,aAAa,CAAA;AACtB,CAAC;AAfD,4DAeC;AAEM,KAAK,UAAU,wBAAwB;IAC5C,6CAA6C;IAC7C,OAAO,IAAI,sBAAa,EAAE,CAAA;AAC5B,CAAC;AAHD,4DAGC;AAEM,KAAK,UAAU,wBAAwB,CAC5C,MAAe,EACf,aAAgC,EAChC,WAAsC;IAEtC,6CAA6C;IAC7C,MAAM,aAAa,GAAG,IAAI,sBAAa,EAAE,CAAA;IACzC,MAAM,aAAa,CAAC,IAAI,CACtB,aAAa,EACb,iBAAa,EACb,aAAa,CAAC,OAAO,CAAC,OAAO,EAC7B,MAAM,EACN,WAAW,CACZ,CAAA;IACD,MAAM,aAAa,CAAC,IAAI,CACtB,aAAa,EACb,gBAAY,EACZ,aAAa,CAAC,OAAO,EACrB,MAAM,EACN,WAAW,CACZ,CAAA;IACD,OAAO,aAAa,CAAA;AACtB,CAAC;AAtBD,4DAsBC","sourcesContent":["import { PluginManager } from '../plugin'\nimport publishPlugin from '../publish'\nimport { ILogger } from '../logger'\nimport filterPlugin from '../filter'\nimport {\n IRunConfiguration,\n IRunEnvironment,\n ISourcesCoordinates,\n} from './types'\n\nexport async function initializeForLoadSources(\n logger: ILogger,\n coordinates: ISourcesCoordinates,\n environment: Required<IRunEnvironment>\n): Promise<PluginManager> {\n // eventually we'll load plugin packages here\n const pluginManager = new PluginManager()\n await pluginManager.init(\n 'loadSources',\n filterPlugin,\n coordinates,\n logger,\n environment\n )\n return pluginManager\n}\n\nexport async function initializeForLoadSupport(): Promise<PluginManager> {\n // eventually we'll load plugin packages here\n return new PluginManager()\n}\n\nexport async function initializeForRunCucumber(\n logger: ILogger,\n configuration: IRunConfiguration,\n environment: Required<IRunEnvironment>\n): Promise<PluginManager> {\n // eventually we'll load plugin packages here\n const pluginManager = new PluginManager()\n await pluginManager.init(\n 'runCucumber',\n publishPlugin,\n configuration.formats.publish,\n logger,\n environment\n )\n await pluginManager.init(\n 'runCucumber',\n filterPlugin,\n configuration.sources,\n logger,\n environment\n )\n return pluginManager\n}\n"]}
|
package/lib/api/run_cucumber.js
CHANGED
|
@@ -5,7 +5,7 @@ const node_events_1 = require("node:events");
|
|
|
5
5
|
const messages_1 = require("@cucumber/messages");
|
|
6
6
|
const helpers_1 = require("../formatter/helpers");
|
|
7
7
|
const helpers_2 = require("../cli/helpers");
|
|
8
|
-
const paths_1 = require("
|
|
8
|
+
const paths_1 = require("../paths");
|
|
9
9
|
const runtime_1 = require("./runtime");
|
|
10
10
|
const formatters_1 = require("./formatters");
|
|
11
11
|
const support_1 = require("./support");
|
|
@@ -22,13 +22,20 @@ const console_logger_1 = require("./console_logger");
|
|
|
22
22
|
* @param onMessage - Callback fired each time Cucumber emits a message.
|
|
23
23
|
*/
|
|
24
24
|
async function runCucumber(configuration, environment = {}, onMessage) {
|
|
25
|
-
const
|
|
25
|
+
const mergedEnvironment = (0, environment_1.mergeEnvironment)(environment);
|
|
26
|
+
const { cwd, stdout, stderr, env, debug } = mergedEnvironment;
|
|
26
27
|
const logger = new console_logger_1.ConsoleLogger(stderr, debug);
|
|
27
28
|
const newId = messages_1.IdGenerator.uuid();
|
|
28
29
|
const supportCoordinates = 'World' in configuration.support
|
|
29
30
|
? configuration.support.originalCoordinates
|
|
30
31
|
: configuration.support;
|
|
31
|
-
const
|
|
32
|
+
const pluginManager = await (0, plugins_1.initializeForRunCucumber)(logger, {
|
|
33
|
+
...configuration,
|
|
34
|
+
support: supportCoordinates,
|
|
35
|
+
}, mergedEnvironment);
|
|
36
|
+
const resolvedPaths = await (0, paths_1.resolvePaths)(logger, cwd, configuration.sources, supportCoordinates);
|
|
37
|
+
pluginManager.emit('paths:resolve', resolvedPaths);
|
|
38
|
+
const { sourcePaths, requirePaths, importPaths } = resolvedPaths;
|
|
32
39
|
const supportCodeLibrary = 'World' in configuration.support
|
|
33
40
|
? configuration.support
|
|
34
41
|
: await (0, support_1.getSupportCodeLibrary)({
|
|
@@ -38,12 +45,11 @@ async function runCucumber(configuration, environment = {}, onMessage) {
|
|
|
38
45
|
importPaths,
|
|
39
46
|
requireModules: supportCoordinates.requireModules,
|
|
40
47
|
});
|
|
41
|
-
const plugins = await (0, plugins_1.initializePlugins)(logger, configuration, environment);
|
|
42
48
|
const eventBroadcaster = new node_events_1.EventEmitter();
|
|
43
49
|
if (onMessage) {
|
|
44
50
|
eventBroadcaster.on('envelope', onMessage);
|
|
45
51
|
}
|
|
46
|
-
eventBroadcaster.on('envelope', (value) =>
|
|
52
|
+
eventBroadcaster.on('envelope', (value) => pluginManager.emit('message', value));
|
|
47
53
|
const eventDataCollector = new helpers_1.EventDataCollector(eventBroadcaster);
|
|
48
54
|
let formatterStreamError = false;
|
|
49
55
|
const cleanupFormatters = await (0, formatters_1.initializeFormatters)({
|
|
@@ -61,17 +67,17 @@ async function runCucumber(configuration, environment = {}, onMessage) {
|
|
|
61
67
|
await (0, helpers_2.emitMetaMessage)(eventBroadcaster, env);
|
|
62
68
|
let pickleIds = [];
|
|
63
69
|
let parseErrors = [];
|
|
64
|
-
if (
|
|
65
|
-
const gherkinResult = await (0, gherkin_1.
|
|
70
|
+
if (sourcePaths.length > 0) {
|
|
71
|
+
const gherkinResult = await (0, gherkin_1.getPicklesAndErrors)({
|
|
66
72
|
newId,
|
|
67
73
|
cwd,
|
|
68
|
-
|
|
69
|
-
unexpandedFeaturePaths,
|
|
70
|
-
featurePaths,
|
|
74
|
+
sourcePaths,
|
|
71
75
|
coordinates: configuration.sources,
|
|
72
76
|
onEnvelope: (envelope) => eventBroadcaster.emit('envelope', envelope),
|
|
73
77
|
});
|
|
74
|
-
|
|
78
|
+
const filteredPickles = await pluginManager.transform('pickles:filter', gherkinResult.filterablePickles);
|
|
79
|
+
const orderedPickles = await pluginManager.transform('pickles:order', filteredPickles);
|
|
80
|
+
pickleIds = orderedPickles.map(({ pickle }) => pickle.id);
|
|
75
81
|
parseErrors = gherkinResult.parseErrors;
|
|
76
82
|
}
|
|
77
83
|
if (parseErrors.length) {
|
|
@@ -79,7 +85,7 @@ async function runCucumber(configuration, environment = {}, onMessage) {
|
|
|
79
85
|
logger.error(`Parse error in "${parseError.source.uri}" ${parseError.message}`);
|
|
80
86
|
});
|
|
81
87
|
await cleanupFormatters();
|
|
82
|
-
await
|
|
88
|
+
await pluginManager.cleanup();
|
|
83
89
|
return {
|
|
84
90
|
success: false,
|
|
85
91
|
support: supportCodeLibrary,
|
|
@@ -105,7 +111,7 @@ async function runCucumber(configuration, environment = {}, onMessage) {
|
|
|
105
111
|
});
|
|
106
112
|
const success = await runtime.start();
|
|
107
113
|
await cleanupFormatters();
|
|
108
|
-
await
|
|
114
|
+
await pluginManager.cleanup();
|
|
109
115
|
return {
|
|
110
116
|
success: success && !formatterStreamError,
|
|
111
117
|
support: supportCodeLibrary,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run_cucumber.js","sourceRoot":"","sources":["../../src/api/run_cucumber.ts"],"names":[],"mappings":";;;AAAA,6CAA0C;AAC1C,iDAAsE;AACtE,kDAAyD;AACzD,4CAAyE;
|
|
1
|
+
{"version":3,"file":"run_cucumber.js","sourceRoot":"","sources":["../../src/api/run_cucumber.ts"],"names":[],"mappings":"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","sourcesContent":["import { EventEmitter } from 'node:events'\nimport { Envelope, IdGenerator, ParseError } from '@cucumber/messages'\nimport { EventDataCollector } from '../formatter/helpers'\nimport { emitMetaMessage, emitSupportCodeMessages } from '../cli/helpers'\nimport { ILogger } from '../logger'\nimport { resolvePaths } from '../paths'\nimport { IRunOptions, IRunEnvironment, IRunResult } from './types'\nimport { makeRuntime } from './runtime'\nimport { initializeFormatters } from './formatters'\nimport { getSupportCodeLibrary } from './support'\nimport { mergeEnvironment } from './environment'\nimport { getPicklesAndErrors } from './gherkin'\nimport { initializeForRunCucumber } from './plugins'\nimport { ConsoleLogger } from './console_logger'\n\n/**\n * Execute a Cucumber test run.\n *\n * @public\n * @param configuration - Configuration loaded from `loadConfiguration`.\n * @param environment - Project environment.\n * @param onMessage - Callback fired each time Cucumber emits a message.\n */\nexport async function runCucumber(\n configuration: IRunOptions,\n environment: IRunEnvironment = {},\n onMessage?: (message: Envelope) => void\n): Promise<IRunResult> {\n const mergedEnvironment = mergeEnvironment(environment)\n const { cwd, stdout, stderr, env, debug } = mergedEnvironment\n const logger: ILogger = new ConsoleLogger(stderr, debug)\n\n const newId = IdGenerator.uuid()\n\n const supportCoordinates =\n 'World' in configuration.support\n ? configuration.support.originalCoordinates\n : configuration.support\n\n const pluginManager = await initializeForRunCucumber(\n logger,\n {\n ...configuration,\n support: supportCoordinates,\n },\n mergedEnvironment\n )\n\n const resolvedPaths = await resolvePaths(\n logger,\n cwd,\n configuration.sources,\n supportCoordinates\n )\n pluginManager.emit('paths:resolve', resolvedPaths)\n const { sourcePaths, requirePaths, importPaths } = resolvedPaths\n\n const supportCodeLibrary =\n 'World' in configuration.support\n ? configuration.support\n : await getSupportCodeLibrary({\n cwd,\n newId,\n requirePaths,\n importPaths,\n requireModules: supportCoordinates.requireModules,\n })\n\n const eventBroadcaster = new EventEmitter()\n if (onMessage) {\n eventBroadcaster.on('envelope', onMessage)\n }\n eventBroadcaster.on('envelope', (value) =>\n pluginManager.emit('message', value)\n )\n const eventDataCollector = new EventDataCollector(eventBroadcaster)\n\n let formatterStreamError = false\n const cleanupFormatters = await initializeFormatters({\n env,\n cwd,\n stdout,\n stderr,\n logger,\n onStreamError: () => (formatterStreamError = true),\n eventBroadcaster,\n eventDataCollector,\n configuration: configuration.formats,\n supportCodeLibrary,\n })\n await emitMetaMessage(eventBroadcaster, env)\n\n let pickleIds: string[] = []\n let parseErrors: ParseError[] = []\n if (sourcePaths.length > 0) {\n const gherkinResult = await getPicklesAndErrors({\n newId,\n cwd,\n sourcePaths,\n coordinates: configuration.sources,\n onEnvelope: (envelope) => eventBroadcaster.emit('envelope', envelope),\n })\n const filteredPickles = await pluginManager.transform(\n 'pickles:filter',\n gherkinResult.filterablePickles\n )\n const orderedPickles = await pluginManager.transform(\n 'pickles:order',\n filteredPickles\n )\n pickleIds = orderedPickles.map(({ pickle }) => pickle.id)\n parseErrors = gherkinResult.parseErrors\n }\n if (parseErrors.length) {\n parseErrors.forEach((parseError) => {\n logger.error(\n `Parse error in \"${parseError.source.uri}\" ${parseError.message}`\n )\n })\n await cleanupFormatters()\n await pluginManager.cleanup()\n return {\n success: false,\n support: supportCodeLibrary,\n }\n }\n\n emitSupportCodeMessages({\n eventBroadcaster,\n supportCodeLibrary,\n newId,\n })\n\n const runtime = makeRuntime({\n cwd,\n logger,\n eventBroadcaster,\n eventDataCollector,\n pickleIds,\n newId,\n supportCodeLibrary,\n requireModules: supportCoordinates.requireModules,\n requirePaths,\n importPaths,\n options: configuration.runtime,\n })\n const success = await runtime.start()\n await cleanupFormatters()\n await pluginManager.cleanup()\n\n return {\n success: success && !formatterStreamError,\n support: supportCodeLibrary,\n }\n}\n"]}
|
package/lib/cli/run.js
CHANGED
|
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
/* eslint-disable no-console */
|
|
7
7
|
/* This is one rare place where we're fine to use process/console directly,
|
|
8
8
|
* but other code abstracts those to remain composable and testable. */
|
|
9
|
-
const verror_1 = __importDefault(require("verror"));
|
|
10
9
|
const validate_node_engine_version_1 = require("./validate_node_engine_version");
|
|
11
10
|
const _1 = __importDefault(require("./"));
|
|
12
11
|
function logErrorMessageAndExit(message) {
|
|
@@ -30,7 +29,7 @@ async function run() {
|
|
|
30
29
|
result = await cli.run();
|
|
31
30
|
}
|
|
32
31
|
catch (error) {
|
|
33
|
-
logErrorMessageAndExit(
|
|
32
|
+
logErrorMessageAndExit(error);
|
|
34
33
|
}
|
|
35
34
|
const exitCode = result.success ? 0 : 1;
|
|
36
35
|
if (result.shouldExitImmediately) {
|
package/lib/cli/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":";;;;;AAAA,+BAA+B;AAC/B;uEACuE;AACvE,
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":";;;;;AAAA,+BAA+B;AAC/B;uEACuE;AACvE,iFAA0E;AAC1E,0CAAuC;AAEvC,SAAS,sBAAsB,CAAC,OAAe;IAC7C,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC;AAEc,KAAK,UAAU,GAAG;IAC/B,IAAA,wDAAyB,EACvB,OAAO,CAAC,OAAO,EACf,CAAC,KAAK,EAAE,EAAE;QACR,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,EACD,OAAO,CAAC,IAAI,CACb,CAAA;IAED,MAAM,GAAG,GAAG,IAAI,UAAG,CAAC;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC,CAAA;IAEF,IAAI,MAAqB,CAAA;IACzB,IAAI;QACF,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,CAAA;KACzB;IAAC,OAAO,KAAK,EAAE;QACd,sBAAsB,CAAC,KAAK,CAAC,CAAA;KAC9B;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACvC,IAAI,MAAM,CAAC,qBAAqB,EAAE;QAChC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;KACvB;SAAM;QACL,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAA;KAC5B;AACH,CAAC;AA/BD,sBA+BC","sourcesContent":["/* eslint-disable no-console */\n/* This is one rare place where we're fine to use process/console directly,\n * but other code abstracts those to remain composable and testable. */\nimport { validateNodeEngineVersion } from './validate_node_engine_version'\nimport Cli, { ICliRunResult } from './'\n\nfunction logErrorMessageAndExit(message: string): void {\n console.error(message)\n process.exit(1)\n}\n\nexport default async function run(): Promise<void> {\n validateNodeEngineVersion(\n process.version,\n (error) => {\n console.error(error)\n process.exit(1)\n },\n console.warn\n )\n\n const cli = new Cli({\n argv: process.argv,\n cwd: process.cwd(),\n stdout: process.stdout,\n stderr: process.stderr,\n env: process.env,\n })\n\n let result: ICliRunResult\n try {\n result = await cli.run()\n } catch (error) {\n logErrorMessageAndExit(error)\n }\n\n const exitCode = result.success ? 0 : 1\n if (result.shouldExitImmediately) {\n process.exit(exitCode)\n } else {\n process.exitCode = exitCode\n }\n}\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { JsonObject } from 'type-fest';
|
|
1
2
|
import { FormatOptions } from '../formatter';
|
|
2
3
|
import { PickleOrder } from '../models/pickle_order';
|
|
3
4
|
type FormatsConfiguration = Array<string | [string, string?]>;
|
|
@@ -25,6 +26,6 @@ export interface IConfiguration {
|
|
|
25
26
|
retryTagFilter: string;
|
|
26
27
|
strict: boolean;
|
|
27
28
|
tags: string;
|
|
28
|
-
worldParameters:
|
|
29
|
+
worldParameters: JsonObject;
|
|
29
30
|
}
|
|
30
31
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/configuration/types.ts"],"names":[],"mappings":"","sourcesContent":["import { FormatOptions } from '../formatter'\nimport { PickleOrder } from '../models/pickle_order'\n\ntype FormatsConfiguration = Array<string | [string, string?]>\n\nexport interface IConfiguration {\n backtrace: boolean\n dryRun: boolean\n forceExit: boolean\n failFast: boolean\n format: FormatsConfiguration\n formatOptions: FormatOptions\n import: string[]\n language: string\n name: string[]\n order: PickleOrder\n paths: string[]\n parallel: number\n publish: boolean\n /**\n * @deprecated no longer needed; see <https://github.com/cucumber/cucumber-js/blob/main/docs/deprecations.md>\n */\n publishQuiet: boolean\n require: string[]\n requireModule: string[]\n retry: number\n retryTagFilter: string\n strict: boolean\n tags: string\n worldParameters:
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/configuration/types.ts"],"names":[],"mappings":"","sourcesContent":["import { JsonObject } from 'type-fest'\nimport { FormatOptions } from '../formatter'\nimport { PickleOrder } from '../models/pickle_order'\n\ntype FormatsConfiguration = Array<string | [string, string?]>\n\nexport interface IConfiguration {\n backtrace: boolean\n dryRun: boolean\n forceExit: boolean\n failFast: boolean\n format: FormatsConfiguration\n formatOptions: FormatOptions\n import: string[]\n language: string\n name: string[]\n order: PickleOrder\n paths: string[]\n parallel: number\n publish: boolean\n /**\n * @deprecated no longer needed; see <https://github.com/cucumber/cucumber-js/blob/main/docs/deprecations.md>\n */\n publishQuiet: boolean\n require: string[]\n requireModule: string[]\n retry: number\n retryTagFilter: string\n strict: boolean\n tags: string\n worldParameters: JsonObject\n}\n"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.filterPlugin = void 0;
|
|
7
|
+
const pickle_filter_1 = __importDefault(require("../pickle_filter"));
|
|
8
|
+
const helpers_1 = require("../cli/helpers");
|
|
9
|
+
exports.filterPlugin = {
|
|
10
|
+
type: 'plugin',
|
|
11
|
+
coordinator: async ({ on, options, logger, environment }) => {
|
|
12
|
+
let unexpandedSourcePaths = [];
|
|
13
|
+
on('paths:resolve', (paths) => {
|
|
14
|
+
unexpandedSourcePaths = paths.unexpandedSourcePaths;
|
|
15
|
+
});
|
|
16
|
+
on('pickles:filter', async (allPickles) => {
|
|
17
|
+
const pickleFilter = new pickle_filter_1.default({
|
|
18
|
+
cwd: environment.cwd,
|
|
19
|
+
featurePaths: unexpandedSourcePaths,
|
|
20
|
+
names: options.names,
|
|
21
|
+
tagExpression: options.tagExpression,
|
|
22
|
+
});
|
|
23
|
+
return allPickles.filter((pickle) => pickleFilter.matches(pickle));
|
|
24
|
+
});
|
|
25
|
+
on('pickles:order', async (unorderedPickles) => {
|
|
26
|
+
const orderedPickles = [...unorderedPickles];
|
|
27
|
+
(0, helpers_1.orderPickles)(orderedPickles, options.order, logger);
|
|
28
|
+
return orderedPickles;
|
|
29
|
+
});
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=filter_plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter_plugin.js","sourceRoot":"","sources":["../../src/filter/filter_plugin.ts"],"names":[],"mappings":";;;;;;AAEA,qEAA2C;AAC3C,4CAA6C;AAEhC,QAAA,YAAY,GAAwC;IAC/D,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE;QAC1D,IAAI,qBAAqB,GAAa,EAAE,CAAA;QACxC,EAAE,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE;YAC5B,qBAAqB,GAAG,KAAK,CAAC,qBAAqB,CAAA;QACrD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,gBAAgB,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;YACxC,MAAM,YAAY,GAAG,IAAI,uBAAY,CAAC;gBACpC,GAAG,EAAE,WAAW,CAAC,GAAG;gBACpB,YAAY,EAAE,qBAAqB;gBACnC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,aAAa,EAAE,OAAO,CAAC,aAAa;aACrC,CAAC,CAAA;YAEF,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;QACpE,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE;YAC7C,MAAM,cAAc,GAAG,CAAC,GAAG,gBAAgB,CAAC,CAAA;YAC5C,IAAA,sBAAY,EAAC,cAAc,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YACnD,OAAO,cAAc,CAAA;QACvB,CAAC,CAAC,CAAA;IACJ,CAAC;CACF,CAAA","sourcesContent":["import { InternalPlugin } from '../plugin'\nimport { ISourcesCoordinates } from '../api'\nimport PickleFilter from '../pickle_filter'\nimport { orderPickles } from '../cli/helpers'\n\nexport const filterPlugin: InternalPlugin<ISourcesCoordinates> = {\n type: 'plugin',\n coordinator: async ({ on, options, logger, environment }) => {\n let unexpandedSourcePaths: string[] = []\n on('paths:resolve', (paths) => {\n unexpandedSourcePaths = paths.unexpandedSourcePaths\n })\n\n on('pickles:filter', async (allPickles) => {\n const pickleFilter = new PickleFilter({\n cwd: environment.cwd,\n featurePaths: unexpandedSourcePaths,\n names: options.names,\n tagExpression: options.tagExpression,\n })\n\n return allPickles.filter((pickle) => pickleFilter.matches(pickle))\n })\n\n on('pickles:order', async (unorderedPickles) => {\n const orderedPickles = [...unorderedPickles]\n orderPickles(orderedPickles, options.order, logger)\n return orderedPickles\n })\n },\n}\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
const filter_plugin_1 = require("./filter_plugin");
|
|
18
|
+
__exportStar(require("./types"), exports);
|
|
19
|
+
exports.default = filter_plugin_1.filterPlugin;
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/filter/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAA8C;AAC9C,0CAAuB;AAEvB,kBAAe,4BAAY,CAAA","sourcesContent":["import { filterPlugin } from './filter_plugin'\nexport * from './types'\n\nexport default filterPlugin\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/filter/types.ts"],"names":[],"mappings":"","sourcesContent":["import { GherkinDocument, Location, Pickle } from '@cucumber/messages'\n\nexport interface IFilterablePickle {\n pickle: Pickle\n gherkinDocument: GherkinDocument\n location: Location\n}\n"]}
|
package/lib/index.d.ts
CHANGED
|
@@ -20,10 +20,10 @@ export { default as UsageFormatter } from './formatter/usage_formatter';
|
|
|
20
20
|
export { default as UsageJsonFormatter } from './formatter/usage_json_formatter';
|
|
21
21
|
export { formatterHelpers };
|
|
22
22
|
export declare const After: (<WorldType = import("./support_code_library_builder/world").IWorld<any>>(code: import("./support_code_library_builder/types").TestCaseHookFunction<WorldType>) => void) & (<WorldType_1 = import("./support_code_library_builder/world").IWorld<any>>(tags: string, code: import("./support_code_library_builder/types").TestCaseHookFunction<WorldType_1>) => void) & (<WorldType_2 = import("./support_code_library_builder/world").IWorld<any>>(options: import("./support_code_library_builder/types").IDefineTestCaseHookOptions, code: import("./support_code_library_builder/types").TestCaseHookFunction<WorldType_2>) => void);
|
|
23
|
-
export declare const AfterAll: ((code:
|
|
23
|
+
export declare const AfterAll: ((code: import("./support_code_library_builder/types").TestRunHookFunction) => void) & ((options: import("./support_code_library_builder/types").IDefineTestRunHookOptions, code: import("./support_code_library_builder/types").TestRunHookFunction) => void);
|
|
24
24
|
export declare const AfterStep: (<WorldType = import("./support_code_library_builder/world").IWorld<any>>(code: import("./support_code_library_builder/types").TestStepHookFunction<WorldType>) => void) & (<WorldType_1 = import("./support_code_library_builder/world").IWorld<any>>(tags: string, code: import("./support_code_library_builder/types").TestStepHookFunction<WorldType_1>) => void) & (<WorldType_2 = import("./support_code_library_builder/world").IWorld<any>>(options: import("./support_code_library_builder/types").IDefineTestStepHookOptions, code: import("./support_code_library_builder/types").TestStepHookFunction<WorldType_2>) => void);
|
|
25
25
|
export declare const Before: (<WorldType = import("./support_code_library_builder/world").IWorld<any>>(code: import("./support_code_library_builder/types").TestCaseHookFunction<WorldType>) => void) & (<WorldType_1 = import("./support_code_library_builder/world").IWorld<any>>(tags: string, code: import("./support_code_library_builder/types").TestCaseHookFunction<WorldType_1>) => void) & (<WorldType_2 = import("./support_code_library_builder/world").IWorld<any>>(options: import("./support_code_library_builder/types").IDefineTestCaseHookOptions, code: import("./support_code_library_builder/types").TestCaseHookFunction<WorldType_2>) => void);
|
|
26
|
-
export declare const BeforeAll: ((code:
|
|
26
|
+
export declare const BeforeAll: ((code: import("./support_code_library_builder/types").TestRunHookFunction) => void) & ((options: import("./support_code_library_builder/types").IDefineTestRunHookOptions, code: import("./support_code_library_builder/types").TestRunHookFunction) => void);
|
|
27
27
|
export declare const BeforeStep: (<WorldType = import("./support_code_library_builder/world").IWorld<any>>(code: import("./support_code_library_builder/types").TestStepHookFunction<WorldType>) => void) & (<WorldType_1 = import("./support_code_library_builder/world").IWorld<any>>(tags: string, code: import("./support_code_library_builder/types").TestStepHookFunction<WorldType_1>) => void) & (<WorldType_2 = import("./support_code_library_builder/world").IWorld<any>>(options: import("./support_code_library_builder/types").IDefineTestStepHookOptions, code: import("./support_code_library_builder/types").TestStepHookFunction<WorldType_2>) => void);
|
|
28
28
|
export declare const defineStep: import("./support_code_library_builder/types").IDefineStep;
|
|
29
29
|
export declare const defineParameterType: (options: import("./support_code_library_builder/types").IParameterTypeDefinition<any>) => void;
|