@datadog/datadog-ci 1.16.0 → 2.0.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/LICENSE-3rdparty.csv +14 -9
- package/README.md +105 -109
- package/dist/cli.js +1 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/dsyms/__tests__/upload.test.js +2 -3
- package/dist/commands/dsyms/__tests__/upload.test.js.map +1 -1
- package/dist/commands/dsyms/__tests__/utils.test.js.map +1 -1
- package/dist/commands/dsyms/renderer.js +1 -1
- package/dist/commands/dsyms/renderer.js.map +1 -1
- package/dist/commands/dsyms/upload.js +2 -2
- package/dist/commands/dsyms/upload.js.map +1 -1
- package/dist/commands/dsyms/utils.js +1 -1
- package/dist/commands/dsyms/utils.js.map +1 -1
- package/dist/commands/flutter-symbols/__tests__/upload.test.js +3 -7
- package/dist/commands/flutter-symbols/__tests__/upload.test.js.map +1 -1
- package/dist/commands/flutter-symbols/helpers.js.map +1 -1
- package/dist/commands/flutter-symbols/renderer.js.map +1 -1
- package/dist/commands/flutter-symbols/upload.js.map +1 -1
- package/dist/commands/git-metadata/__tests__/git.test.js.map +1 -1
- package/dist/commands/git-metadata/__tests__/library.test.js.map +1 -1
- package/dist/commands/git-metadata/__tests__/upload.test.js +0 -1
- package/dist/commands/git-metadata/__tests__/upload.test.js.map +1 -1
- package/dist/commands/git-metadata/git.js +1 -1
- package/dist/commands/git-metadata/git.js.map +1 -1
- package/dist/commands/git-metadata/library.js.map +1 -1
- package/dist/commands/git-metadata/renderer.js.map +1 -1
- package/dist/commands/git-metadata/upload.js.map +1 -1
- package/dist/commands/junit/__tests__/upload.test.js +56 -21
- package/dist/commands/junit/__tests__/upload.test.js.map +1 -1
- package/dist/commands/junit/api.d.ts +1 -1
- package/dist/commands/junit/api.js +13 -10
- package/dist/commands/junit/api.js.map +1 -1
- package/dist/commands/junit/interfaces.d.ts +2 -1
- package/dist/commands/junit/renderer.js +1 -1
- package/dist/commands/junit/renderer.js.map +1 -1
- package/dist/commands/junit/upload.d.ts +3 -0
- package/dist/commands/junit/upload.js +43 -13
- package/dist/commands/junit/upload.js.map +1 -1
- package/dist/commands/lambda/__tests__/fixtures.js +1 -1
- package/dist/commands/lambda/__tests__/fixtures.js.map +1 -1
- package/dist/commands/lambda/__tests__/functions/commons.test.js +3 -5
- package/dist/commands/lambda/__tests__/functions/commons.test.js.map +1 -1
- package/dist/commands/lambda/__tests__/functions/instrument.part1.test.js.map +1 -1
- package/dist/commands/lambda/__tests__/functions/uninstrument.test.js +4 -4
- package/dist/commands/lambda/__tests__/functions/uninstrument.test.js.map +1 -1
- package/dist/commands/lambda/__tests__/instrument.test.js +5 -7
- package/dist/commands/lambda/__tests__/instrument.test.js.map +1 -1
- package/dist/commands/lambda/__tests__/loggroup.test.js.map +1 -1
- package/dist/commands/lambda/__tests__/prompt.test.js +36 -13
- package/dist/commands/lambda/__tests__/prompt.test.js.map +1 -1
- package/dist/commands/lambda/__tests__/tags.test.js +0 -1
- package/dist/commands/lambda/__tests__/tags.test.js.map +1 -1
- package/dist/commands/lambda/__tests__/uninstrument.test.js +1 -2
- package/dist/commands/lambda/__tests__/uninstrument.test.js.map +1 -1
- package/dist/commands/lambda/constants.d.ts +1 -1
- package/dist/commands/lambda/constants.js +3 -9
- package/dist/commands/lambda/constants.js.map +1 -1
- package/dist/commands/lambda/functions/commons.js +6 -5
- package/dist/commands/lambda/functions/commons.js.map +1 -1
- package/dist/commands/lambda/functions/instrument.js +2 -1
- package/dist/commands/lambda/functions/instrument.js.map +1 -1
- package/dist/commands/lambda/functions/uninstrument.js.map +1 -1
- package/dist/commands/lambda/instrument.js +1 -1
- package/dist/commands/lambda/instrument.js.map +1 -1
- package/dist/commands/lambda/loggroup.js.map +1 -1
- package/dist/commands/lambda/prompt.js +40 -32
- package/dist/commands/lambda/prompt.js.map +1 -1
- package/dist/commands/lambda/tags.js +0 -1
- package/dist/commands/lambda/tags.js.map +1 -1
- package/dist/commands/lambda/uninstrument.js +1 -3
- package/dist/commands/lambda/uninstrument.js.map +1 -1
- package/dist/commands/metric/metric.js +3 -3
- package/dist/commands/metric/metric.js.map +1 -1
- package/dist/commands/react-native/__tests__/codepush.test.js +1 -2
- package/dist/commands/react-native/__tests__/codepush.test.js.map +1 -1
- package/dist/commands/react-native/__tests__/interfaces.test.js +28 -3
- package/dist/commands/react-native/__tests__/interfaces.test.js.map +1 -1
- package/dist/commands/react-native/__tests__/upload.test.js +0 -1
- package/dist/commands/react-native/__tests__/upload.test.js.map +1 -1
- package/dist/commands/react-native/__tests__/xcode.test.js +156 -3
- package/dist/commands/react-native/__tests__/xcode.test.js.map +1 -1
- package/dist/commands/react-native/codepush.d.ts +1 -0
- package/dist/commands/react-native/codepush.js +4 -0
- package/dist/commands/react-native/codepush.js.map +1 -1
- package/dist/commands/react-native/errors.js +5 -5
- package/dist/commands/react-native/errors.js.map +1 -1
- package/dist/commands/react-native/interfaces.d.ts +1 -0
- package/dist/commands/react-native/interfaces.js +8 -0
- package/dist/commands/react-native/interfaces.js.map +1 -1
- package/dist/commands/react-native/renderer.d.ts +2 -0
- package/dist/commands/react-native/renderer.js +14 -2
- package/dist/commands/react-native/renderer.js.map +1 -1
- package/dist/commands/react-native/upload.d.ts +1 -0
- package/dist/commands/react-native/upload.js +11 -0
- package/dist/commands/react-native/upload.js.map +1 -1
- package/dist/commands/react-native/validation.js.map +1 -1
- package/dist/commands/react-native/xcode.d.ts +9 -0
- package/dist/commands/react-native/xcode.js +112 -26
- package/dist/commands/react-native/xcode.js.map +1 -1
- package/dist/commands/sourcemaps/__tests__/upload.test.js +0 -1
- package/dist/commands/sourcemaps/__tests__/upload.test.js.map +1 -1
- package/dist/commands/sourcemaps/interfaces.js.map +1 -1
- package/dist/commands/sourcemaps/renderer.js.map +1 -1
- package/dist/commands/sourcemaps/upload.js +4 -5
- package/dist/commands/sourcemaps/upload.js.map +1 -1
- package/dist/commands/sourcemaps/validation.js.map +1 -1
- package/dist/commands/synthetics/__tests__/api.test.js +18 -0
- package/dist/commands/synthetics/__tests__/api.test.js.map +1 -1
- package/dist/commands/synthetics/__tests__/cli.test.js +48 -15
- package/dist/commands/synthetics/__tests__/cli.test.js.map +1 -1
- package/dist/commands/synthetics/__tests__/fixtures.d.ts +5 -0
- package/dist/commands/synthetics/__tests__/fixtures.js +9 -1
- package/dist/commands/synthetics/__tests__/fixtures.js.map +1 -1
- package/dist/commands/synthetics/__tests__/reporters/default.test.js.map +1 -1
- package/dist/commands/synthetics/__tests__/reporters/junit.test.js +0 -1
- package/dist/commands/synthetics/__tests__/reporters/junit.test.js.map +1 -1
- package/dist/commands/synthetics/__tests__/run-test.test.js +10 -32
- package/dist/commands/synthetics/__tests__/run-test.test.js.map +1 -1
- package/dist/commands/synthetics/__tests__/{crypto.test.d.ts → tunnel/crypto.test.d.ts} +0 -0
- package/dist/commands/synthetics/__tests__/{crypto.test.js → tunnel/crypto.test.js} +1 -1
- package/dist/commands/synthetics/__tests__/tunnel/crypto.test.js.map +1 -0
- package/dist/commands/synthetics/__tests__/{tunnel.test.d.ts → tunnel/tunnel.test.d.ts} +0 -0
- package/dist/commands/synthetics/__tests__/{tunnel.test.js → tunnel/tunnel.test.js} +16 -16
- package/dist/commands/synthetics/__tests__/tunnel/tunnel.test.js.map +1 -0
- package/dist/commands/synthetics/__tests__/{websocket.test.d.ts → tunnel/websocket.test.d.ts} +0 -0
- package/dist/commands/synthetics/__tests__/{websocket.test.js → tunnel/websocket.test.js} +5 -6
- package/dist/commands/synthetics/__tests__/tunnel/websocket.test.js.map +1 -0
- package/dist/commands/synthetics/__tests__/utils.test.js +25 -62
- package/dist/commands/synthetics/__tests__/utils.test.js.map +1 -1
- package/dist/commands/synthetics/api.js +2 -2
- package/dist/commands/synthetics/api.js.map +1 -1
- package/dist/commands/synthetics/command.js +16 -1
- package/dist/commands/synthetics/command.js.map +1 -1
- package/dist/commands/synthetics/errors.d.ts +1 -1
- package/dist/commands/synthetics/errors.js +1 -1
- package/dist/commands/synthetics/errors.js.map +1 -1
- package/dist/commands/synthetics/interfaces.d.ts +0 -16
- package/dist/commands/synthetics/interfaces.js.map +1 -1
- package/dist/commands/synthetics/reporters/default.d.ts +2 -0
- package/dist/commands/synthetics/reporters/default.js +7 -1
- package/dist/commands/synthetics/reporters/default.js.map +1 -1
- package/dist/commands/synthetics/reporters/junit.d.ts +1 -1
- package/dist/commands/synthetics/reporters/junit.js +1 -1
- package/dist/commands/synthetics/reporters/junit.js.map +1 -1
- package/dist/commands/synthetics/run-test.js +10 -6
- package/dist/commands/synthetics/run-test.js.map +1 -1
- package/dist/commands/synthetics/{crypto.d.ts → tunnel/crypto.d.ts} +0 -0
- package/dist/commands/synthetics/{crypto.js → tunnel/crypto.js} +0 -0
- package/dist/commands/synthetics/tunnel/crypto.js.map +1 -0
- package/dist/commands/synthetics/tunnel/index.d.ts +1 -0
- package/dist/commands/synthetics/tunnel/index.js +6 -0
- package/dist/commands/synthetics/tunnel/index.js.map +1 -0
- package/dist/commands/synthetics/{tunnel.d.ts → tunnel/tunnel.d.ts} +12 -10
- package/dist/commands/synthetics/{tunnel.js → tunnel/tunnel.js} +36 -32
- package/dist/commands/synthetics/tunnel/tunnel.js.map +1 -0
- package/dist/commands/synthetics/{websocket.d.ts → tunnel/websocket.d.ts} +3 -3
- package/dist/commands/synthetics/{websocket.js → tunnel/websocket.js} +5 -8
- package/dist/commands/synthetics/tunnel/websocket.js.map +1 -0
- package/dist/commands/synthetics/utils.js +11 -63
- package/dist/commands/synthetics/utils.js.map +1 -1
- package/dist/commands/tag/tag.js +3 -3
- package/dist/commands/tag/tag.js.map +1 -1
- package/dist/commands/trace/__tests__/trace.test.js +1 -1
- package/dist/commands/trace/__tests__/trace.test.js.map +1 -1
- package/dist/commands/trace/api.js.map +1 -1
- package/dist/commands/trace/trace.js +2 -2
- package/dist/commands/trace/trace.js.map +1 -1
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +11 -0
- package/dist/constants.js.map +1 -0
- package/dist/helpers/__tests__/ci.test.js.map +1 -1
- package/dist/helpers/__tests__/plist.test.d.ts +1 -0
- package/dist/helpers/__tests__/plist.test.js +31 -0
- package/dist/helpers/__tests__/plist.test.js.map +1 -0
- package/dist/helpers/__tests__/retry.test.js.map +1 -1
- package/dist/helpers/__tests__/upload.test.js +1 -1
- package/dist/helpers/__tests__/upload.test.js.map +1 -1
- package/dist/helpers/__tests__/user-provided-git.test.js.map +1 -1
- package/dist/helpers/__tests__/utils.test.js +4 -4
- package/dist/helpers/__tests__/utils.test.js.map +1 -1
- package/dist/helpers/__tests__/validation.test.d.ts +1 -0
- package/dist/helpers/__tests__/validation.test.js +19 -0
- package/dist/helpers/__tests__/validation.test.js.map +1 -0
- package/dist/helpers/apikey.js.map +1 -1
- package/dist/helpers/ci.d.ts +5 -0
- package/dist/helpers/ci.js +25 -4
- package/dist/helpers/ci.js.map +1 -1
- package/dist/helpers/git/__tests__/format-git-span-data.test.js.map +1 -1
- package/dist/helpers/git/format-git-sourcemaps-data.js +4 -4
- package/dist/helpers/git/format-git-sourcemaps-data.js.map +1 -1
- package/dist/helpers/git/format-git-span-data.js.map +1 -1
- package/dist/helpers/git/get-git-data.js.map +1 -1
- package/dist/helpers/plist.d.ts +44 -0
- package/dist/helpers/plist.js +75 -0
- package/dist/helpers/plist.js.map +1 -0
- package/dist/helpers/upload.d.ts +1 -1
- package/dist/helpers/upload.js.map +1 -1
- package/dist/helpers/utils.d.ts +3 -3
- package/dist/helpers/utils.js +2 -2
- package/dist/helpers/utils.js.map +1 -1
- package/dist/helpers/validation.d.ts +1 -0
- package/dist/helpers/validation.js +6 -1
- package/dist/helpers/validation.js.map +1 -1
- package/package.json +22 -17
- package/dist/commands/synthetics/__tests__/crypto.test.js.map +0 -1
- package/dist/commands/synthetics/__tests__/tunnel.test.js.map +0 -1
- package/dist/commands/synthetics/__tests__/websocket.test.js.map +0 -1
- package/dist/commands/synthetics/crypto.js.map +0 -1
- package/dist/commands/synthetics/tunnel.js.map +0 -1
- package/dist/commands/synthetics/websocket.js.map +0 -1
|
@@ -10,11 +10,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.getTestsList = exports.executeTests = void 0;
|
|
13
|
+
const utils_1 = require("../../helpers/utils");
|
|
13
14
|
const api_1 = require("./api");
|
|
14
15
|
const command_1 = require("./command");
|
|
15
16
|
const errors_1 = require("./errors");
|
|
17
|
+
const default_1 = require("./reporters/default");
|
|
16
18
|
const tunnel_1 = require("./tunnel");
|
|
17
|
-
const
|
|
19
|
+
const utils_2 = require("./utils");
|
|
18
20
|
const executeTests = (reporter, config, suites) => __awaiter(void 0, void 0, void 0, function* () {
|
|
19
21
|
const api = api_1.getApiHelper(config);
|
|
20
22
|
const publicIdsFromCli = config.publicIds.map((id) => {
|
|
@@ -48,7 +50,7 @@ const executeTests = (reporter, config, suites) => __awaiter(void 0, void 0, voi
|
|
|
48
50
|
let testsToTriggerResult;
|
|
49
51
|
try {
|
|
50
52
|
const triggerFromSearch = !!config.testSearchQuery;
|
|
51
|
-
testsToTriggerResult = yield
|
|
53
|
+
testsToTriggerResult = yield utils_2.getTestsToTrigger(api, testsToTrigger, reporter, triggerFromSearch, config.failOnMissingTests);
|
|
52
54
|
}
|
|
53
55
|
catch (error) {
|
|
54
56
|
if (error instanceof errors_1.CiError) {
|
|
@@ -73,7 +75,9 @@ const executeTests = (reporter, config, suites) => __awaiter(void 0, void 0, voi
|
|
|
73
75
|
}
|
|
74
76
|
// Open a tunnel to Datadog
|
|
75
77
|
try {
|
|
76
|
-
|
|
78
|
+
const tunnelProxyAgent = utils_1.getProxyAgent(config.proxy);
|
|
79
|
+
const tunnelReporter = default_1.getTunnelReporter(reporter);
|
|
80
|
+
tunnel = new tunnel_1.Tunnel(presignedURL, publicIdsToTrigger, tunnelProxyAgent, tunnelReporter);
|
|
77
81
|
const tunnelInfo = yield tunnel.start();
|
|
78
82
|
overriddenTestsToTrigger.forEach((testToTrigger) => {
|
|
79
83
|
testToTrigger.tunnel = tunnelInfo;
|
|
@@ -86,7 +90,7 @@ const executeTests = (reporter, config, suites) => __awaiter(void 0, void 0, voi
|
|
|
86
90
|
}
|
|
87
91
|
let trigger;
|
|
88
92
|
try {
|
|
89
|
-
trigger = yield
|
|
93
|
+
trigger = yield utils_2.runTests(api, overriddenTestsToTrigger);
|
|
90
94
|
}
|
|
91
95
|
catch (error) {
|
|
92
96
|
yield stopTunnel();
|
|
@@ -94,7 +98,7 @@ const executeTests = (reporter, config, suites) => __awaiter(void 0, void 0, voi
|
|
|
94
98
|
}
|
|
95
99
|
try {
|
|
96
100
|
const maxPollingTimeout = Math.max(...testsToTrigger.map((t) => t.config.pollingTimeout || config.pollingTimeout));
|
|
97
|
-
const results = yield
|
|
101
|
+
const results = yield utils_2.waitForResults(api, trigger, tests, {
|
|
98
102
|
failOnCriticalErrors: config.failOnCriticalErrors,
|
|
99
103
|
failOnTimeout: config.failOnTimeout,
|
|
100
104
|
maxPollingTimeout,
|
|
@@ -130,7 +134,7 @@ const getTestsList = (api, config, reporter, suites = []) => __awaiter(void 0, v
|
|
|
130
134
|
}
|
|
131
135
|
return testsToTriggerBySearchQuery;
|
|
132
136
|
}
|
|
133
|
-
const suitesFromFiles = (yield Promise.all(config.files.map((glob) =>
|
|
137
|
+
const suitesFromFiles = (yield Promise.all(config.files.map((glob) => utils_2.getSuites(glob, reporter))))
|
|
134
138
|
.reduce((acc, val) => acc.concat(val), [])
|
|
135
139
|
.filter((suite) => !!suite.content.tests);
|
|
136
140
|
suites.push(...suitesFromFiles);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-test.js","sourceRoot":"","sources":["../../../src/commands/synthetics/run-test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"run-test.js","sourceRoot":"","sources":["../../../src/commands/synthetics/run-test.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../../../src/commands/synthetics/tunnel/crypto.ts"],"names":[],"mappings":";;;AAAA,mCAA0C;AAE1C,+BAA0B;AAE1B,iCAA+C;AAE/C,yFAAyF;AAClF,MAAM,mBAAmB,GAAG,GAAG,EAAE;IACtC,MAAM,MAAM,GAAG,KAAK,CAAA;IACpB,MAAM,EAAC,SAAS,EAAE,UAAU,EAAC,GAAG,4BAAmB,CAAC,IAAI,EAAE;QACxD,UAAU,EAAE,OAAO;QACnB,kBAAkB,EAAE;YAClB,MAAM;YACN,IAAI,EAAE,OAAO;SACd;QACD,iBAAiB,EAAE;YACjB,MAAM;YACN,IAAI,EAAE,MAAM;SACb;KACF,CAAC,CAAA;IACF,MAAM,gBAAgB,GAAG,gBAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC1F,MAAM,iBAAiB,GAAG,uBAAe,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAEnG,OAAO;QACL,UAAU,EAAE,iBAAiB;QAC7B,SAAS,EAAE,gBAAgB;KAC5B,CAAA;AACH,CAAC,CAAA;AApBY,QAAA,mBAAmB,uBAoB/B;AAED,gCAAgC;AACzB,MAAM,WAAW,GAAG,CAAC,GAAW,EAAa,EAAE;IACpD,MAAM,SAAS,GAAG,YAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;IAErC,IAAI,CAAC,SAAS,EAAE;QACd,MAAM,IAAI,KAAK,CAAC,eAAe,GAAG,EAAE,CAAC,CAAA;KACtC;IAED,IAAI,SAAS,YAAY,KAAK,EAAE;QAC9B,MAAM,SAAS,CAAA;KAChB;IAED,IAAI,SAAS,YAAY,KAAK,EAAE;QAC9B,mFAAmF;QACnF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,eAAe,GAAG,EAAE,CAAC,CAAA;SACtC;QAED,OAAO,SAAS,CAAC,CAAC,CAAC,CAAA;KACpB;IAED,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AArBY,QAAA,WAAW,eAqBvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Tunnel, TunnelInfo, TunnelReporter } from './tunnel';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Tunnel = void 0;
|
|
4
|
+
var tunnel_1 = require("./tunnel");
|
|
5
|
+
Object.defineProperty(exports, "Tunnel", { enumerable: true, get: function () { return tunnel_1.Tunnel; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/synthetics/tunnel/index.ts"],"names":[],"mappings":";;;AAAA,mCAA2D;AAAnD,gGAAA,MAAM,OAAA"}
|
|
@@ -1,25 +1,27 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { MainReporter } from './interfaces';
|
|
1
|
+
import type ProxyAgent from 'proxy-agent';
|
|
3
2
|
export interface TunnelInfo {
|
|
4
3
|
host: string;
|
|
5
4
|
id: string;
|
|
6
5
|
privateKey: string;
|
|
7
6
|
}
|
|
7
|
+
export interface TunnelReporter {
|
|
8
|
+
error(message: string): void;
|
|
9
|
+
log(message: string): void;
|
|
10
|
+
warn(message: string): void;
|
|
11
|
+
}
|
|
8
12
|
export declare class Tunnel {
|
|
9
13
|
private url;
|
|
10
14
|
private testIDs;
|
|
11
|
-
private
|
|
12
|
-
private forwardedSockets;
|
|
15
|
+
private reporter?;
|
|
13
16
|
private FORWARDING_TIMEOUT;
|
|
14
|
-
private
|
|
15
|
-
private logError;
|
|
16
|
-
private logWarning;
|
|
17
|
-
private multiplexer?;
|
|
17
|
+
private sshConfig;
|
|
18
18
|
private privateKey;
|
|
19
19
|
private publicKey;
|
|
20
|
-
private
|
|
20
|
+
private connected;
|
|
21
21
|
private ws;
|
|
22
|
-
|
|
22
|
+
private multiplexer?;
|
|
23
|
+
private forwardedSockets;
|
|
24
|
+
constructor(url: string, testIDs: string[], proxyAgent?: ReturnType<typeof ProxyAgent>, reporter?: TunnelReporter | undefined);
|
|
23
25
|
/**
|
|
24
26
|
* keepAlive will return a promise that tracks the state of the tunnel (and reject in case of error)
|
|
25
27
|
*/
|
|
@@ -8,33 +8,27 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
12
|
exports.Tunnel = void 0;
|
|
16
13
|
const crypto_1 = require("crypto");
|
|
17
14
|
const net_1 = require("net");
|
|
18
15
|
const stream_1 = require("stream");
|
|
19
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
20
16
|
const ssh2_1 = require("ssh2");
|
|
21
17
|
const yamux_js_1 = require("yamux-js");
|
|
22
|
-
// tslint:disable-next-line:no-var-requires - SW-1310
|
|
23
|
-
const { KexInit } = require('ssh2/lib/protocol/kex');
|
|
24
|
-
// tslint:disable-next-line:no-var-requires - SW-1310
|
|
25
|
-
const SSH_CONSTANTS = require('ssh2/lib/protocol/constants');
|
|
26
18
|
const crypto_2 = require("./crypto");
|
|
27
19
|
const websocket_1 = require("./websocket");
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-var-requires -- SW-1310
|
|
21
|
+
const SSH_CONSTANTS = require('ssh2/lib/protocol/constants');
|
|
22
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-var-requires -- SW-1310
|
|
23
|
+
const { KexInit } = require('ssh2/lib/protocol/kex');
|
|
28
24
|
class Tunnel {
|
|
29
|
-
constructor(url, testIDs,
|
|
25
|
+
constructor(url, testIDs, proxyAgent, reporter) {
|
|
30
26
|
this.url = url;
|
|
31
27
|
this.testIDs = testIDs;
|
|
28
|
+
this.reporter = reporter;
|
|
29
|
+
this.FORWARDING_TIMEOUT = 40000;
|
|
32
30
|
this.connected = false;
|
|
33
31
|
this.forwardedSockets = new Set();
|
|
34
|
-
this.FORWARDING_TIMEOUT = 40000;
|
|
35
|
-
this.log = (message) => reporter.log(`[${chalk_1.default.bold.blue('Tunnel')}] ${message}\n`);
|
|
36
|
-
this.logError = (message) => reporter.error(`[${chalk_1.default.bold.red('Tunnel')}] ${message}\n`);
|
|
37
|
-
this.logWarning = (message) => reporter.log(`[${chalk_1.default.bold.yellow('Tunnel')}] ${message}\n`);
|
|
38
32
|
// Setup SSH
|
|
39
33
|
const { privateKey: hostPrivateKey } = crypto_2.generateOpenSSHKeys();
|
|
40
34
|
const parsedHostPrivateKey = crypto_2.parseSSHKey(hostPrivateKey);
|
|
@@ -49,14 +43,14 @@ class Tunnel {
|
|
|
49
43
|
highWaterMark: 255 * 1024,
|
|
50
44
|
hostKeys: [hostPrivateKey],
|
|
51
45
|
};
|
|
52
|
-
this.ws = new websocket_1.WebSocket(this.url,
|
|
46
|
+
this.ws = new websocket_1.WebSocket(this.url, proxyAgent);
|
|
53
47
|
}
|
|
54
48
|
/**
|
|
55
49
|
* keepAlive will return a promise that tracks the state of the tunnel (and reject in case of error)
|
|
56
50
|
*/
|
|
57
51
|
keepAlive() {
|
|
58
52
|
return __awaiter(this, void 0, void 0, function* () {
|
|
59
|
-
if (!this.ws
|
|
53
|
+
if (!this.ws) {
|
|
60
54
|
throw new Error('No WebSocket connection');
|
|
61
55
|
}
|
|
62
56
|
return this.ws.keepAlive();
|
|
@@ -69,9 +63,10 @@ class Tunnel {
|
|
|
69
63
|
* - establish a WebSocket connection to the tunnel service
|
|
70
64
|
*/
|
|
71
65
|
start() {
|
|
66
|
+
var _a, _b, _c;
|
|
72
67
|
return __awaiter(this, void 0, void 0, function* () {
|
|
73
|
-
this.log(`Opening tunnel for ${
|
|
74
|
-
this.log('Generating encryption key, setting up SSH and opening WebSocket connection…');
|
|
68
|
+
(_a = this.reporter) === null || _a === void 0 ? void 0 : _a.log(`Opening tunnel for ${this.testIDs.length} tests…`);
|
|
69
|
+
(_b = this.reporter) === null || _b === void 0 ? void 0 : _b.log('Generating encryption key, setting up SSH and opening WebSocket connection…');
|
|
75
70
|
try {
|
|
76
71
|
// Establish a WebSocket connection to the tunnel service
|
|
77
72
|
yield this.ws.connect();
|
|
@@ -80,7 +75,7 @@ class Tunnel {
|
|
|
80
75
|
return connectionInfo;
|
|
81
76
|
}
|
|
82
77
|
catch (err) {
|
|
83
|
-
this.
|
|
78
|
+
(_c = this.reporter) === null || _c === void 0 ? void 0 : _c.error('Tunnel setup failed, cleaning up and exiting…');
|
|
84
79
|
yield this.stop(); // Clean up
|
|
85
80
|
throw err;
|
|
86
81
|
}
|
|
@@ -90,8 +85,9 @@ class Tunnel {
|
|
|
90
85
|
* stop the tunnel
|
|
91
86
|
*/
|
|
92
87
|
stop() {
|
|
88
|
+
var _a;
|
|
93
89
|
return __awaiter(this, void 0, void 0, function* () {
|
|
94
|
-
this.log('Shutting down tunnel…');
|
|
90
|
+
(_a = this.reporter) === null || _a === void 0 ? void 0 : _a.log('Shutting down tunnel…');
|
|
95
91
|
this.forwardedSockets.forEach((socket) => {
|
|
96
92
|
if (!!socket) {
|
|
97
93
|
socket.destroy();
|
|
@@ -105,6 +101,7 @@ class Tunnel {
|
|
|
105
101
|
}
|
|
106
102
|
// Authenticate SSH with key authentication - username should be the test ID
|
|
107
103
|
authenticateSSHConnection(ctx) {
|
|
104
|
+
var _a;
|
|
108
105
|
const allowedUsers = this.testIDs.map((testId) => Buffer.from(testId));
|
|
109
106
|
// Ensure username is allowed
|
|
110
107
|
const user = Buffer.from(ctx.username);
|
|
@@ -131,7 +128,7 @@ class Tunnel {
|
|
|
131
128
|
if (!this.connected) {
|
|
132
129
|
// Limit to one log per tunnel
|
|
133
130
|
this.connected = true;
|
|
134
|
-
this.log('Successfully connected');
|
|
131
|
+
(_a = this.reporter) === null || _a === void 0 ? void 0 : _a.log('Successfully connected');
|
|
135
132
|
}
|
|
136
133
|
ctx.accept();
|
|
137
134
|
}
|
|
@@ -150,7 +147,8 @@ class Tunnel {
|
|
|
150
147
|
dest.setTimeout(this.FORWARDING_TIMEOUT);
|
|
151
148
|
this.forwardedSockets.add(dest);
|
|
152
149
|
dest.on('timeout', () => {
|
|
153
|
-
|
|
150
|
+
var _a;
|
|
151
|
+
(_a = this.reporter) === null || _a === void 0 ? void 0 : _a.warn(`Connection timeout (${destIP})`);
|
|
154
152
|
if (src) {
|
|
155
153
|
src.destroy();
|
|
156
154
|
}
|
|
@@ -174,16 +172,17 @@ class Tunnel {
|
|
|
174
172
|
});
|
|
175
173
|
});
|
|
176
174
|
dest.on('error', (error) => {
|
|
175
|
+
var _a, _b, _c;
|
|
177
176
|
if (src) {
|
|
178
|
-
this.
|
|
177
|
+
(_a = this.reporter) === null || _a === void 0 ? void 0 : _a.warn(`Error on opened connection (${destIP}): ${error.code}`);
|
|
179
178
|
src.close();
|
|
180
179
|
}
|
|
181
180
|
else {
|
|
182
181
|
if ('code' in error && error.code === 'ENOTFOUND') {
|
|
183
|
-
this.
|
|
182
|
+
(_b = this.reporter) === null || _b === void 0 ? void 0 : _b.warn(`Unable to resolve host (${destIP})`);
|
|
184
183
|
}
|
|
185
184
|
else {
|
|
186
|
-
this.
|
|
185
|
+
(_c = this.reporter) === null || _c === void 0 ? void 0 : _c.warn(`Connection error (${destIP}): ${error.code}`);
|
|
187
186
|
}
|
|
188
187
|
reject();
|
|
189
188
|
this.forwardedSockets.delete(dest);
|
|
@@ -209,9 +208,10 @@ class Tunnel {
|
|
|
209
208
|
});
|
|
210
209
|
}
|
|
211
210
|
forwardWebSocketToSSH() {
|
|
211
|
+
var _a;
|
|
212
212
|
return __awaiter(this, void 0, void 0, function* () {
|
|
213
213
|
const connectionInfo = yield this.getConnectionInfo();
|
|
214
|
-
this.log(`Websocket connection to tunnel ${connectionInfo.id} opened, proxy is ready!`);
|
|
214
|
+
(_a = this.reporter) === null || _a === void 0 ? void 0 : _a.log(`Websocket connection to tunnel ${connectionInfo.id} opened, proxy is ready!`);
|
|
215
215
|
// Stop any existing multiplexing
|
|
216
216
|
if (this.multiplexer) {
|
|
217
217
|
this.multiplexer.close();
|
|
@@ -225,22 +225,25 @@ class Tunnel {
|
|
|
225
225
|
};
|
|
226
226
|
this.multiplexer = new yamux_js_1.Server((stream) => {
|
|
227
227
|
stream.on('error', (error) => {
|
|
228
|
-
|
|
228
|
+
var _a;
|
|
229
|
+
(_a = this.reporter) === null || _a === void 0 ? void 0 : _a.error(`Error in multiplexing: ${error}`);
|
|
229
230
|
});
|
|
230
|
-
this.processSSHStream(stream);
|
|
231
|
+
void this.processSSHStream(stream);
|
|
231
232
|
}, multiplexerConfig);
|
|
232
233
|
// Pipe WebSocket to multiplexing
|
|
233
234
|
const duplex = this.ws.duplex();
|
|
234
|
-
this.multiplexer.on('error', (error) => this.
|
|
235
|
-
duplex.on('error', (error) => this.
|
|
235
|
+
this.multiplexer.on('error', (error) => { var _a; return (_a = this.reporter) === null || _a === void 0 ? void 0 : _a.error(`Multiplexer error: ${error.message}`); });
|
|
236
|
+
duplex.on('error', (error) => { var _a; return (_a = this.reporter) === null || _a === void 0 ? void 0 : _a.error(`Websocket error: ${error.message}`); });
|
|
236
237
|
stream_1.pipeline([duplex, this.multiplexer], (err) => {
|
|
238
|
+
var _a;
|
|
237
239
|
if (err) {
|
|
238
|
-
this.
|
|
240
|
+
(_a = this.reporter) === null || _a === void 0 ? void 0 : _a.warn(`Error on duplex connection close: ${err}`);
|
|
239
241
|
}
|
|
240
242
|
});
|
|
241
243
|
stream_1.pipeline([this.multiplexer, duplex], (err) => {
|
|
244
|
+
var _a;
|
|
242
245
|
if (err) {
|
|
243
|
-
this.
|
|
246
|
+
(_a = this.reporter) === null || _a === void 0 ? void 0 : _a.warn(`Error on Multiplexer connection close: ${err}`);
|
|
244
247
|
}
|
|
245
248
|
});
|
|
246
249
|
return connectionInfo;
|
|
@@ -291,7 +294,8 @@ class Tunnel {
|
|
|
291
294
|
server.close();
|
|
292
295
|
})
|
|
293
296
|
.on('error', (err) => {
|
|
294
|
-
|
|
297
|
+
var _a;
|
|
298
|
+
(_a = this.reporter) === null || _a === void 0 ? void 0 : _a.error(`SSH error in proxy: ${err.message}`);
|
|
295
299
|
});
|
|
296
300
|
});
|
|
297
301
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tunnel.js","sourceRoot":"","sources":["../../../../src/commands/synthetics/tunnel/tunnel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { EventEmitter } from 'events';
|
|
3
|
+
import type ProxyAgent from 'proxy-agent';
|
|
3
4
|
import { default as WebSocketModule } from 'ws';
|
|
4
|
-
import { ProxyConfiguration } from '../../helpers/utils';
|
|
5
5
|
export declare class WebSocket extends EventEmitter {
|
|
6
6
|
private url;
|
|
7
|
-
private
|
|
7
|
+
private proxyAgent;
|
|
8
8
|
private firstMessage?;
|
|
9
9
|
private keepAliveWebsocket?;
|
|
10
10
|
private websocket?;
|
|
11
|
-
constructor(url: string,
|
|
11
|
+
constructor(url: string, proxyAgent: ReturnType<typeof ProxyAgent> | undefined);
|
|
12
12
|
/**
|
|
13
13
|
* close will terminate the WebSocket connection
|
|
14
14
|
*/
|
|
@@ -31,12 +31,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
31
31
|
exports.WebSocket = void 0;
|
|
32
32
|
const events_1 = require("events");
|
|
33
33
|
const ws_1 = __importStar(require("ws"));
|
|
34
|
-
const utils_1 = require("../../helpers/utils");
|
|
35
34
|
class WebSocket extends events_1.EventEmitter {
|
|
36
|
-
constructor(url,
|
|
35
|
+
constructor(url, proxyAgent) {
|
|
37
36
|
super();
|
|
38
37
|
this.url = url;
|
|
39
|
-
this.
|
|
38
|
+
this.proxyAgent = proxyAgent;
|
|
40
39
|
}
|
|
41
40
|
/**
|
|
42
41
|
* close will terminate the WebSocket connection
|
|
@@ -118,11 +117,9 @@ class WebSocket extends events_1.EventEmitter {
|
|
|
118
117
|
}
|
|
119
118
|
establishWebsocketConnection(resolve, reject) {
|
|
120
119
|
if (!this.websocket) {
|
|
121
|
-
const options = {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
options.agent = proxyAgent;
|
|
125
|
-
}
|
|
120
|
+
const options = {
|
|
121
|
+
agent: this.proxyAgent,
|
|
122
|
+
};
|
|
126
123
|
this.websocket = new ws_1.default(this.url, options);
|
|
127
124
|
}
|
|
128
125
|
this.firstMessage = new Promise((firstMessageResolve, firstMessageReject) => {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../../../src/commands/synthetics/tunnel/websocket.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,14 +33,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
33
33
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
34
34
|
exports.pluralize = exports.getDatadogHost = exports.renderResults = exports.sortResultsByOutcome = exports.getResultUrl = exports.getBatchUrl = exports.getAppBaseURL = exports.parseVariablesFromCli = exports.retry = exports.fetchTest = exports.runTests = exports.getTestsToTrigger = exports.isDeviceIdSet = exports.getTestAndOverrideConfig = exports.getReporter = exports.getResultDuration = exports.createInitialSummary = exports.waitForResults = exports.wait = exports.getFilePathRelativeToRepo = exports.getSuites = exports.getResultOutcome = exports.hasResultPassed = exports.getStrictestExecutionRule = exports.getExecutionRule = exports.setCiTriggerApp = exports.getOverriddenConfig = exports.ciTriggerApp = exports.readableOperation = void 0;
|
|
35
35
|
const child_process_1 = require("child_process");
|
|
36
|
-
const deep_extend_1 = __importDefault(require("deep-extend"));
|
|
37
36
|
const fs = __importStar(require("fs"));
|
|
38
37
|
const path = __importStar(require("path"));
|
|
39
|
-
const
|
|
38
|
+
const process_1 = __importDefault(require("process"));
|
|
40
39
|
const util_1 = require("util");
|
|
41
40
|
const chalk_1 = __importDefault(require("chalk"));
|
|
41
|
+
const deep_extend_1 = __importDefault(require("deep-extend"));
|
|
42
42
|
const glob_1 = __importDefault(require("glob"));
|
|
43
|
-
const process_1 = __importDefault(require("process"));
|
|
44
43
|
const ci_1 = require("../../helpers/ci");
|
|
45
44
|
const tags_1 = require("../../helpers/tags");
|
|
46
45
|
const utils_1 = require("../../helpers/utils");
|
|
@@ -51,7 +50,6 @@ const interfaces_1 = require("./interfaces");
|
|
|
51
50
|
const mobile_1 = require("./mobile");
|
|
52
51
|
const POLLING_INTERVAL = 5000; // In ms
|
|
53
52
|
const PUBLIC_ID_REGEX = /^[\d\w]{3}-[\d\w]{3}-[\d\w]{3}$/;
|
|
54
|
-
const SUBDOMAIN_REGEX = /(.*?)\.(?=[^\/]*\..{2,5})/;
|
|
55
53
|
const TEMPLATE_REGEX = /{{\s*([^{}]*?)\s*}}/g;
|
|
56
54
|
exports.readableOperation = {
|
|
57
55
|
[interfaces_1.Operator.contains]: 'should contain',
|
|
@@ -98,11 +96,7 @@ const getOverriddenConfig = (test, publicId, reporter, config) => {
|
|
|
98
96
|
'variables',
|
|
99
97
|
]));
|
|
100
98
|
if ((test.type === 'browser' || test.subtype === 'http') && config.startUrl) {
|
|
101
|
-
|
|
102
|
-
if (URL_VARIABLES.some((v) => { var _a; return (_a = config.startUrl) === null || _a === void 0 ? void 0 : _a.includes(v); })) {
|
|
103
|
-
reporter.error('[DEPRECATION] The usage of URL variables is deprecated, see explanation in the README\n\n');
|
|
104
|
-
}
|
|
105
|
-
overriddenConfig.startUrl = template(config.startUrl, context);
|
|
99
|
+
overriddenConfig.startUrl = template(config.startUrl, Object.assign({}, process_1.default.env));
|
|
106
100
|
}
|
|
107
101
|
return overriddenConfig;
|
|
108
102
|
};
|
|
@@ -111,56 +105,6 @@ const setCiTriggerApp = (source) => {
|
|
|
111
105
|
exports.ciTriggerApp = source;
|
|
112
106
|
};
|
|
113
107
|
exports.setCiTriggerApp = setCiTriggerApp;
|
|
114
|
-
const parseUrlVariables = (url, reporter) => {
|
|
115
|
-
const context = Object.assign(Object.assign({}, process_1.default.env), { URL: url });
|
|
116
|
-
let objUrl;
|
|
117
|
-
try {
|
|
118
|
-
objUrl = new url_1.URL(url);
|
|
119
|
-
}
|
|
120
|
-
catch (_a) {
|
|
121
|
-
reporter.error(`The start url ${url} contains variables, CI overrides will be ignored\n`);
|
|
122
|
-
return context;
|
|
123
|
-
}
|
|
124
|
-
warnOnReservedEnvVarNames(context, reporter);
|
|
125
|
-
const subdomainMatch = objUrl.hostname.match(SUBDOMAIN_REGEX);
|
|
126
|
-
const domain = subdomainMatch ? objUrl.hostname.replace(`${subdomainMatch[1]}.`, '') : objUrl.hostname;
|
|
127
|
-
context.DOMAIN = domain;
|
|
128
|
-
context.HASH = objUrl.hash;
|
|
129
|
-
context.HOST = objUrl.host;
|
|
130
|
-
context.HOSTNAME = objUrl.hostname;
|
|
131
|
-
context.ORIGIN = objUrl.origin;
|
|
132
|
-
context.PARAMS = objUrl.search;
|
|
133
|
-
context.PATHNAME = objUrl.pathname;
|
|
134
|
-
context.PORT = objUrl.port;
|
|
135
|
-
context.PROTOCOL = objUrl.protocol;
|
|
136
|
-
context.SUBDOMAIN = subdomainMatch ? subdomainMatch[1] : undefined;
|
|
137
|
-
return context;
|
|
138
|
-
};
|
|
139
|
-
const URL_VARIABLES = [
|
|
140
|
-
'DOMAIN',
|
|
141
|
-
'HASH',
|
|
142
|
-
'HOST',
|
|
143
|
-
'HOSTNAME',
|
|
144
|
-
'ORIGIN',
|
|
145
|
-
'PARAMS',
|
|
146
|
-
'PATHNAME',
|
|
147
|
-
'PORT',
|
|
148
|
-
'PROTOCOL',
|
|
149
|
-
'SUBDOMAIN',
|
|
150
|
-
];
|
|
151
|
-
const warnOnReservedEnvVarNames = (context, reporter) => {
|
|
152
|
-
const reservedVarNames = new Set(URL_VARIABLES);
|
|
153
|
-
const usedEnvVarNames = Object.keys(context).filter((name) => reservedVarNames.has(name));
|
|
154
|
-
if (usedEnvVarNames.length > 0) {
|
|
155
|
-
const names = usedEnvVarNames.join(', ');
|
|
156
|
-
const plural = usedEnvVarNames.length > 1;
|
|
157
|
-
reporter.log(`Detected ${names} environment variable${plural ? 's' : ''}. ${names} ${plural ? 'are' : 'is a'} Datadog ` +
|
|
158
|
-
`reserved variable${plural ? 's' : ''} used to parse your original test URL, read more about it on ` +
|
|
159
|
-
'our documentation https://docs.datadoghq.com/synthetics/ci/?tab=apitest#start-url. ' +
|
|
160
|
-
'If you want to override your startUrl parameter using environment variables, ' +
|
|
161
|
-
`use ${plural ? '' : 'a '}different namespace${plural ? 's' : ''}.\n\n`);
|
|
162
|
-
}
|
|
163
|
-
};
|
|
164
108
|
const getExecutionRule = (test, configOverride) => {
|
|
165
109
|
var _a, _b, _c, _d;
|
|
166
110
|
if (configOverride && configOverride.executionRule) {
|
|
@@ -334,7 +278,10 @@ const waitForResults = (api, trigger, tests, options, reporter, tunnel) => __awa
|
|
|
334
278
|
return hasTunnel ? 'Tunneled' : locationNames[dcId] || dcId;
|
|
335
279
|
};
|
|
336
280
|
const pollResultMap = yield getPollResultMap(api, batch);
|
|
337
|
-
const results = batch.results.map((resultInBatch) =>
|
|
281
|
+
const results = batch.results.map((resultInBatch) => {
|
|
282
|
+
var _a, _b;
|
|
283
|
+
return getResultFromBatch(getLocation, hasExceededMaxPollingDate, (_a = options.failOnCriticalErrors) !== null && _a !== void 0 ? _a : false, (_b = options.failOnTimeout) !== null && _b !== void 0 ? _b : false, pollResultMap, resultInBatch, tests);
|
|
284
|
+
});
|
|
338
285
|
return results;
|
|
339
286
|
});
|
|
340
287
|
exports.waitForResults = waitForResults;
|
|
@@ -432,6 +379,7 @@ const getReporter = (reporters) => ({
|
|
|
432
379
|
});
|
|
433
380
|
exports.getReporter = getReporter;
|
|
434
381
|
const getTest = (api, { id, suite }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
382
|
+
var _d;
|
|
435
383
|
try {
|
|
436
384
|
const test = Object.assign(Object.assign({}, (yield api.getTest(id))), { suite });
|
|
437
385
|
return { test };
|
|
@@ -441,7 +389,7 @@ const getTest = (api, { id, suite }) => __awaiter(void 0, void 0, void 0, functi
|
|
|
441
389
|
const errorMessage = api_1.formatBackendErrors(error);
|
|
442
390
|
return { errorMessage: `[${chalk_1.default.bold.dim(id)}] ${chalk_1.default.yellow.bold('Test not found')}: ${errorMessage}` };
|
|
443
391
|
}
|
|
444
|
-
throw error;
|
|
392
|
+
throw new api_1.EndpointError(`Failed to get test: ${api_1.formatBackendErrors(error)}\n`, (_d = error.response) === null || _d === void 0 ? void 0 : _d.status);
|
|
445
393
|
}
|
|
446
394
|
});
|
|
447
395
|
const getTestAndOverrideConfig = (api, { config, id, suite }, reporter, summary) => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -521,7 +469,7 @@ const getTestsToTrigger = (api, triggerConfigs, reporter, triggerFromSearch, fai
|
|
|
521
469
|
});
|
|
522
470
|
exports.getTestsToTrigger = getTestsToTrigger;
|
|
523
471
|
const runTests = (api, testsToTrigger) => __awaiter(void 0, void 0, void 0, function* () {
|
|
524
|
-
var
|
|
472
|
+
var _e;
|
|
525
473
|
const payload = { tests: testsToTrigger };
|
|
526
474
|
const tagsToLimit = {
|
|
527
475
|
[tags_1.GIT_COMMIT_MESSAGE]: 500,
|
|
@@ -537,7 +485,7 @@ const runTests = (api, testsToTrigger) => __awaiter(void 0, void 0, void 0, func
|
|
|
537
485
|
const errorMessage = api_1.formatBackendErrors(e);
|
|
538
486
|
const testIds = testsToTrigger.map((t) => t.public_id).join(',');
|
|
539
487
|
// Rewrite error message
|
|
540
|
-
throw new api_1.EndpointError(`[${testIds}] Failed to trigger tests: ${errorMessage}\n`, (
|
|
488
|
+
throw new api_1.EndpointError(`[${testIds}] Failed to trigger tests: ${errorMessage}\n`, (_e = e.response) === null || _e === void 0 ? void 0 : _e.status);
|
|
541
489
|
}
|
|
542
490
|
});
|
|
543
491
|
exports.runTests = runTests;
|