@salesforce/apex-node 2.1.4 → 2.1.5

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 (38) hide show
  1. package/lib/src/common/cancellation.js +6 -17
  2. package/lib/src/common/cancellation.js.map +1 -1
  3. package/lib/src/execute/executeService.js +52 -69
  4. package/lib/src/execute/executeService.js.map +1 -1
  5. package/lib/src/i18n/index.js.map +1 -1
  6. package/lib/src/i18n/localization.js.map +1 -1
  7. package/lib/src/logs/logService.js +73 -101
  8. package/lib/src/logs/logService.js.map +1 -1
  9. package/lib/src/reporters/coverageReporter.js +4 -6
  10. package/lib/src/reporters/coverageReporter.js.map +1 -1
  11. package/lib/src/reporters/humanReporter.js.map +1 -1
  12. package/lib/src/reporters/junitReporter.js.map +1 -1
  13. package/lib/src/reporters/tapReporter.js +1 -1
  14. package/lib/src/reporters/tapReporter.js.map +1 -1
  15. package/lib/src/streaming/streamingClient.js +98 -119
  16. package/lib/src/streaming/streamingClient.js.map +1 -1
  17. package/lib/src/tests/asyncTests.js +234 -247
  18. package/lib/src/tests/asyncTests.js.map +1 -1
  19. package/lib/src/tests/codeCoverage.js +85 -99
  20. package/lib/src/tests/codeCoverage.js.map +1 -1
  21. package/lib/src/tests/diagnosticUtil.js +1 -2
  22. package/lib/src/tests/diagnosticUtil.js.map +1 -1
  23. package/lib/src/tests/syncTests.js +83 -85
  24. package/lib/src/tests/syncTests.js.map +1 -1
  25. package/lib/src/tests/testService.js +235 -273
  26. package/lib/src/tests/testService.js.map +1 -1
  27. package/lib/src/tests/utils.d.ts +2 -0
  28. package/lib/src/tests/utils.js +29 -24
  29. package/lib/src/tests/utils.js.map +1 -1
  30. package/lib/src/utils/authUtil.js +3 -14
  31. package/lib/src/utils/authUtil.js.map +1 -1
  32. package/lib/src/utils/dateUtil.js.map +1 -1
  33. package/lib/src/utils/fileSystemHandler.js +7 -18
  34. package/lib/src/utils/fileSystemHandler.js.map +1 -1
  35. package/lib/src/utils/table.js.map +1 -1
  36. package/lib/src/utils/traceFlags.js +95 -122
  37. package/lib/src/utils/traceFlags.js.map +1 -1
  38. package/package.json +3 -3
@@ -5,15 +5,6 @@
5
5
  * Licensed under the BSD 3-Clause license.
6
6
  * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
7
7
  */
8
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
9
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10
- return new (P || (P = Promise))(function (resolve, reject) {
11
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
12
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
13
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
14
- step((generator = generator.apply(thisArg, _arguments || [])).next());
15
- });
16
- };
17
8
  Object.defineProperty(exports, "__esModule", { value: true });
18
9
  exports.AsyncTests = void 0;
19
10
  const i18n_1 = require("../i18n");
@@ -37,33 +28,31 @@ class AsyncTests {
37
28
  * @param progress progress reporter
38
29
  * @param token cancellation token
39
30
  */
40
- runTests(options, codeCoverage = false, exitOnTestRunId = false, progress, token) {
41
- return __awaiter(this, void 0, void 0, function* () {
42
- try {
43
- const sClient = new streaming_1.StreamingClient(this.connection, progress);
44
- yield sClient.init();
45
- yield sClient.handshake();
46
- token &&
47
- token.onCancellationRequested(() => __awaiter(this, void 0, void 0, function* () {
48
- const testRunId = yield sClient.subscribedTestRunIdPromise;
49
- yield this.abortTestRun(testRunId, progress);
50
- sClient.disconnect();
51
- }));
52
- const testRunId = yield this.getTestRunRequestAction(options)();
53
- if (exitOnTestRunId) {
54
- return { testRunId };
55
- }
56
- if (token && token.isCancellationRequested) {
57
- return null;
58
- }
59
- const asyncRunResult = yield sClient.subscribe(undefined, testRunId);
60
- const testRunSummary = yield this.checkRunStatus(asyncRunResult.runId);
61
- return yield this.formatAsyncResults(asyncRunResult, (0, utils_1.getCurrentTime)(), codeCoverage, testRunSummary, progress);
31
+ async runTests(options, codeCoverage = false, exitOnTestRunId = false, progress, token) {
32
+ try {
33
+ const sClient = new streaming_1.StreamingClient(this.connection, progress);
34
+ await sClient.init();
35
+ await sClient.handshake();
36
+ token &&
37
+ token.onCancellationRequested(async () => {
38
+ const testRunId = await sClient.subscribedTestRunIdPromise;
39
+ await this.abortTestRun(testRunId, progress);
40
+ sClient.disconnect();
41
+ });
42
+ const testRunId = await this.getTestRunRequestAction(options)();
43
+ if (exitOnTestRunId) {
44
+ return { testRunId };
62
45
  }
63
- catch (e) {
64
- throw (0, diagnosticUtil_1.formatTestErrors)(e);
46
+ if (token && token.isCancellationRequested) {
47
+ return null;
65
48
  }
66
- });
49
+ const asyncRunResult = await sClient.subscribe(undefined, testRunId);
50
+ const testRunSummary = await this.checkRunStatus(asyncRunResult.runId);
51
+ return await this.formatAsyncResults(asyncRunResult, (0, utils_1.getCurrentTime)(), codeCoverage, testRunSummary, progress);
52
+ }
53
+ catch (e) {
54
+ throw (0, diagnosticUtil_1.formatTestErrors)(e);
55
+ }
67
56
  }
68
57
  /**
69
58
  * Report Asynchronous Test Run Results
@@ -71,69 +60,65 @@ class AsyncTests {
71
60
  * @param codeCoverage should report code coverages
72
61
  * @param token cancellation token
73
62
  */
74
- reportAsyncResults(testRunId, codeCoverage = false, token) {
75
- return __awaiter(this, void 0, void 0, function* () {
76
- try {
77
- const sClient = new streaming_1.StreamingClient(this.connection);
78
- yield sClient.init();
79
- yield sClient.handshake();
80
- let queueItem;
81
- let testRunSummary = yield this.checkRunStatus(testRunId);
82
- if (testRunSummary !== undefined) {
83
- queueItem = yield sClient.handler(undefined, testRunId);
84
- }
85
- else {
86
- queueItem = (yield sClient.subscribe(undefined, testRunId)).queueItem;
87
- testRunSummary = yield this.checkRunStatus(testRunId);
88
- }
89
- token &&
90
- token.onCancellationRequested(() => __awaiter(this, void 0, void 0, function* () {
91
- sClient.disconnect();
92
- }));
93
- if (token && token.isCancellationRequested) {
94
- return null;
95
- }
96
- return yield this.formatAsyncResults({ queueItem, runId: testRunId }, (0, utils_1.getCurrentTime)(), codeCoverage, testRunSummary);
97
- }
98
- catch (e) {
99
- throw (0, diagnosticUtil_1.formatTestErrors)(e);
100
- }
101
- });
102
- }
103
- checkRunStatus(testRunId, progress) {
104
- return __awaiter(this, void 0, void 0, function* () {
105
- if (!(0, utils_2.isValidTestRunID)(testRunId)) {
106
- throw new Error(i18n_1.nls.localize('invalidTestRunIdErr', testRunId));
63
+ async reportAsyncResults(testRunId, codeCoverage = false, token) {
64
+ try {
65
+ const sClient = new streaming_1.StreamingClient(this.connection);
66
+ await sClient.init();
67
+ await sClient.handshake();
68
+ let queueItem;
69
+ let testRunSummary = await this.checkRunStatus(testRunId);
70
+ if (testRunSummary !== undefined) {
71
+ queueItem = await sClient.handler(undefined, testRunId);
107
72
  }
108
- let testRunSummaryQuery = 'SELECT AsyncApexJobId, Status, ClassesCompleted, ClassesEnqueued, ';
109
- testRunSummaryQuery +=
110
- 'MethodsEnqueued, StartTime, EndTime, TestTime, UserId ';
111
- testRunSummaryQuery += `FROM ApexTestRunResult WHERE AsyncApexJobId = '${testRunId}'`;
112
- progress === null || progress === void 0 ? void 0 : progress.report({
113
- type: 'FormatTestResultProgress',
114
- value: 'retrievingTestRunSummary',
115
- message: i18n_1.nls.localize('retrievingTestRunSummary')
116
- });
117
- const testRunSummaryResults = (yield this.connection.tooling.query(testRunSummaryQuery, {
118
- autoFetch: true
119
- }));
120
- if (testRunSummaryResults.records.length === 0) {
121
- throw new Error(i18n_1.nls.localize('noTestResultSummary', testRunId));
73
+ else {
74
+ queueItem = (await sClient.subscribe(undefined, testRunId)).queueItem;
75
+ testRunSummary = await this.checkRunStatus(testRunId);
122
76
  }
123
- if (testRunSummaryResults.records[0].Status ===
124
- "Aborted" /* ApexTestRunResultStatus.Aborted */ ||
125
- testRunSummaryResults.records[0].Status ===
126
- "Failed" /* ApexTestRunResultStatus.Failed */ ||
127
- testRunSummaryResults.records[0].Status ===
128
- "Completed" /* ApexTestRunResultStatus.Completed */ ||
129
- testRunSummaryResults.records[0].Status ===
130
- "Passed" /* ApexTestRunResultStatus.Passed */ ||
131
- testRunSummaryResults.records[0].Status ===
132
- "Skipped" /* ApexTestRunResultStatus.Skipped */) {
133
- return testRunSummaryResults.records[0];
77
+ token &&
78
+ token.onCancellationRequested(async () => {
79
+ sClient.disconnect();
80
+ });
81
+ if (token && token.isCancellationRequested) {
82
+ return null;
134
83
  }
135
- return undefined;
84
+ return await this.formatAsyncResults({ queueItem, runId: testRunId }, (0, utils_1.getCurrentTime)(), codeCoverage, testRunSummary);
85
+ }
86
+ catch (e) {
87
+ throw (0, diagnosticUtil_1.formatTestErrors)(e);
88
+ }
89
+ }
90
+ async checkRunStatus(testRunId, progress) {
91
+ if (!(0, utils_2.isValidTestRunID)(testRunId)) {
92
+ throw new Error(i18n_1.nls.localize('invalidTestRunIdErr', testRunId));
93
+ }
94
+ let testRunSummaryQuery = 'SELECT AsyncApexJobId, Status, ClassesCompleted, ClassesEnqueued, ';
95
+ testRunSummaryQuery +=
96
+ 'MethodsEnqueued, StartTime, EndTime, TestTime, UserId ';
97
+ testRunSummaryQuery += `FROM ApexTestRunResult WHERE AsyncApexJobId = '${testRunId}'`;
98
+ progress?.report({
99
+ type: 'FormatTestResultProgress',
100
+ value: 'retrievingTestRunSummary',
101
+ message: i18n_1.nls.localize('retrievingTestRunSummary')
136
102
  });
103
+ const testRunSummaryResults = (await this.connection.tooling.query(testRunSummaryQuery, {
104
+ autoFetch: true
105
+ }));
106
+ if (testRunSummaryResults.records.length === 0) {
107
+ throw new Error(i18n_1.nls.localize('noTestResultSummary', testRunId));
108
+ }
109
+ if (testRunSummaryResults.records[0].Status ===
110
+ "Aborted" /* ApexTestRunResultStatus.Aborted */ ||
111
+ testRunSummaryResults.records[0].Status ===
112
+ "Failed" /* ApexTestRunResultStatus.Failed */ ||
113
+ testRunSummaryResults.records[0].Status ===
114
+ "Completed" /* ApexTestRunResultStatus.Completed */ ||
115
+ testRunSummaryResults.records[0].Status ===
116
+ "Passed" /* ApexTestRunResultStatus.Passed */ ||
117
+ testRunSummaryResults.records[0].Status ===
118
+ "Skipped" /* ApexTestRunResultStatus.Skipped */) {
119
+ return testRunSummaryResults.records[0];
120
+ }
121
+ return undefined;
137
122
  }
138
123
  /**
139
124
  * Format the results of a completed asynchronous test run
@@ -144,170 +129,172 @@ class AsyncTests {
144
129
  * @param progress progress reporter
145
130
  * @returns
146
131
  */
147
- formatAsyncResults(asyncRunResult, commandStartTime, codeCoverage = false, testRunSummary, progress) {
148
- var _a, _b;
149
- return __awaiter(this, void 0, void 0, function* () {
150
- const coveredApexClassIdSet = new Set();
151
- const apexTestResults = yield this.getAsyncTestResults(asyncRunResult.queueItem);
152
- const { apexTestClassIdSet, testResults, globalTests } = yield this.buildAsyncTestResults(apexTestResults);
153
- let outcome = testRunSummary.Status;
154
- if (globalTests.failed > 0) {
155
- outcome = "Failed" /* ApexTestRunResultStatus.Failed */;
156
- }
157
- else if (globalTests.passed === 0) {
158
- outcome = "Skipped" /* ApexTestRunResultStatus.Skipped */;
159
- }
160
- else if (testRunSummary.Status === "Completed" /* ApexTestRunResultStatus.Completed */) {
161
- outcome = "Passed" /* ApexTestRunResultStatus.Passed */;
162
- }
163
- // TODO: deprecate testTotalTime
164
- const result = {
165
- summary: {
166
- outcome,
167
- testsRan: testResults.length,
168
- passing: globalTests.passed,
169
- failing: globalTests.failed,
170
- skipped: globalTests.skipped,
171
- passRate: (0, utils_2.calculatePercentage)(globalTests.passed, testResults.length),
172
- failRate: (0, utils_2.calculatePercentage)(globalTests.failed, testResults.length),
173
- skipRate: (0, utils_2.calculatePercentage)(globalTests.skipped, testResults.length),
174
- testStartTime: (0, utils_1.formatStartTime)(testRunSummary.StartTime, 'ISO'),
175
- testExecutionTimeInMs: (_a = testRunSummary.TestTime) !== null && _a !== void 0 ? _a : 0,
176
- testTotalTimeInMs: (_b = testRunSummary.TestTime) !== null && _b !== void 0 ? _b : 0,
177
- commandTimeInMs: (0, utils_1.getCurrentTime)() - commandStartTime,
178
- hostname: this.connection.instanceUrl,
179
- orgId: this.connection.getAuthInfoFields().orgId,
180
- username: this.connection.getUsername(),
181
- testRunId: asyncRunResult.runId,
182
- userId: testRunSummary.UserId
183
- },
184
- tests: testResults
185
- };
186
- if (codeCoverage) {
187
- const perClassCovMap = yield this.codecoverage.getPerClassCodeCoverage(apexTestClassIdSet);
188
- result.tests.forEach((item) => {
189
- const keyCodeCov = `${item.apexClass.id}-${item.methodName}`;
190
- const perClassCov = perClassCovMap.get(keyCodeCov);
191
- // Skipped test is not in coverage map, check to see if perClassCov exists first
192
- if (perClassCov) {
193
- perClassCov.forEach((classCov) => coveredApexClassIdSet.add(classCov.apexClassOrTriggerId));
194
- item.perClassCoverage = perClassCov;
195
- }
196
- });
197
- progress === null || progress === void 0 ? void 0 : progress.report({
198
- type: 'FormatTestResultProgress',
199
- value: 'queryingForAggregateCodeCoverage',
200
- message: i18n_1.nls.localize('queryingForAggregateCodeCoverage')
201
- });
202
- const { codeCoverageResults, totalLines, coveredLines } = yield this.codecoverage.getAggregateCodeCoverage(coveredApexClassIdSet);
203
- result.codecoverage = codeCoverageResults;
204
- result.summary.totalLines = totalLines;
205
- result.summary.coveredLines = coveredLines;
206
- result.summary.testRunCoverage = (0, utils_2.calculatePercentage)(coveredLines, totalLines);
207
- result.summary.orgWideCoverage =
208
- yield this.codecoverage.getOrgWideCoverage();
209
- }
210
- return result;
211
- });
212
- }
213
- getAsyncTestResults(testQueueResult) {
214
- return __awaiter(this, void 0, void 0, function* () {
215
- let apexTestResultQuery = 'SELECT Id, QueueItemId, StackTrace, Message, ';
216
- apexTestResultQuery +=
217
- 'RunTime, TestTimestamp, AsyncApexJobId, MethodName, Outcome, ApexLogId, ';
218
- apexTestResultQuery +=
219
- 'ApexClass.Id, ApexClass.Name, ApexClass.NamespacePrefix ';
220
- apexTestResultQuery += 'FROM ApexTestResult WHERE QueueItemId IN (%s)';
221
- const apexResultIds = testQueueResult.records.map((record) => record.Id);
222
- // iterate thru ids, create query with id, & compare query length to char limit
223
- const queries = [];
224
- for (let i = 0; i < apexResultIds.length; i += constants_1.QUERY_RECORD_LIMIT) {
225
- const recordSet = apexResultIds
226
- .slice(i, i + constants_1.QUERY_RECORD_LIMIT)
227
- .map((id) => `'${id}'`);
228
- const query = util.format(apexTestResultQuery, recordSet.join(','));
229
- queries.push(query);
230
- }
231
- const queryPromises = queries.map((query) => {
232
- return this.connection.tooling.query(query, {
233
- autoFetch: true
234
- });
132
+ async formatAsyncResults(asyncRunResult, commandStartTime, codeCoverage = false, testRunSummary, progress) {
133
+ const coveredApexClassIdSet = new Set();
134
+ const apexTestResults = await this.getAsyncTestResults(asyncRunResult.queueItem);
135
+ const { apexTestClassIdSet, testResults, globalTests } = await this.buildAsyncTestResults(apexTestResults);
136
+ let outcome = testRunSummary.Status;
137
+ if (globalTests.failed > 0) {
138
+ outcome = "Failed" /* ApexTestRunResultStatus.Failed */;
139
+ }
140
+ else if (globalTests.passed === 0) {
141
+ outcome = "Skipped" /* ApexTestRunResultStatus.Skipped */;
142
+ }
143
+ else if (testRunSummary.Status === "Completed" /* ApexTestRunResultStatus.Completed */) {
144
+ outcome = "Passed" /* ApexTestRunResultStatus.Passed */;
145
+ }
146
+ // TODO: deprecate testTotalTime
147
+ const result = {
148
+ summary: {
149
+ outcome,
150
+ testsRan: testResults.length,
151
+ passing: globalTests.passed,
152
+ failing: globalTests.failed,
153
+ skipped: globalTests.skipped,
154
+ passRate: (0, utils_2.calculatePercentage)(globalTests.passed, testResults.length),
155
+ failRate: (0, utils_2.calculatePercentage)(globalTests.failed, testResults.length),
156
+ skipRate: (0, utils_2.calculatePercentage)(globalTests.skipped, testResults.length),
157
+ testStartTime: (0, utils_1.formatStartTime)(testRunSummary.StartTime, 'ISO'),
158
+ testExecutionTimeInMs: testRunSummary.TestTime ?? 0,
159
+ testTotalTimeInMs: testRunSummary.TestTime ?? 0,
160
+ commandTimeInMs: (0, utils_1.getCurrentTime)() - commandStartTime,
161
+ hostname: this.connection.instanceUrl,
162
+ orgId: this.connection.getAuthInfoFields().orgId,
163
+ username: this.connection.getUsername(),
164
+ testRunId: asyncRunResult.runId,
165
+ userId: testRunSummary.UserId
166
+ },
167
+ tests: testResults
168
+ };
169
+ if (codeCoverage) {
170
+ const perClassCovMap = await this.codecoverage.getPerClassCodeCoverage(apexTestClassIdSet);
171
+ result.tests.forEach((item) => {
172
+ const keyCodeCov = `${item.apexClass.id}-${item.methodName}`;
173
+ const perClassCov = perClassCovMap.get(keyCodeCov);
174
+ // Skipped test is not in coverage map, check to see if perClassCov exists first
175
+ if (perClassCov) {
176
+ perClassCov.forEach((classCov) => coveredApexClassIdSet.add(classCov.apexClassOrTriggerId));
177
+ item.perClassCoverage = perClassCov;
178
+ }
179
+ });
180
+ progress?.report({
181
+ type: 'FormatTestResultProgress',
182
+ value: 'queryingForAggregateCodeCoverage',
183
+ message: i18n_1.nls.localize('queryingForAggregateCodeCoverage')
235
184
  });
236
- const apexTestResults = yield Promise.all(queryPromises);
237
- return apexTestResults;
185
+ const { codeCoverageResults, totalLines, coveredLines } = await this.codecoverage.getAggregateCodeCoverage(coveredApexClassIdSet);
186
+ result.codecoverage = codeCoverageResults;
187
+ result.summary.totalLines = totalLines;
188
+ result.summary.coveredLines = coveredLines;
189
+ result.summary.testRunCoverage = (0, utils_2.calculatePercentage)(coveredLines, totalLines);
190
+ result.summary.orgWideCoverage =
191
+ await this.codecoverage.getOrgWideCoverage();
192
+ }
193
+ return result;
194
+ }
195
+ async getAsyncTestResults(testQueueResult) {
196
+ let apexTestResultQuery = 'SELECT Id, QueueItemId, StackTrace, Message, ';
197
+ apexTestResultQuery +=
198
+ 'RunTime, TestTimestamp, AsyncApexJobId, MethodName, Outcome, ApexLogId, ';
199
+ apexTestResultQuery +=
200
+ 'ApexClass.Id, ApexClass.Name, ApexClass.NamespacePrefix ';
201
+ apexTestResultQuery += 'FROM ApexTestResult WHERE QueueItemId IN (%s)';
202
+ const apexResultIds = testQueueResult.records.map((record) => record.Id);
203
+ // iterate thru ids, create query with id, & compare query length to char limit
204
+ const queries = [];
205
+ for (let i = 0; i < apexResultIds.length; i += constants_1.QUERY_RECORD_LIMIT) {
206
+ const recordSet = apexResultIds
207
+ .slice(i, i + constants_1.QUERY_RECORD_LIMIT)
208
+ .map((id) => `'${id}'`);
209
+ const query = util.format(apexTestResultQuery, recordSet.join(','));
210
+ queries.push(query);
211
+ }
212
+ const queryPromises = queries.map((query) => {
213
+ return (0, utils_2.queryAll)(this.connection, query, true);
238
214
  });
215
+ const apexTestResults = await Promise.all(queryPromises);
216
+ return apexTestResults;
239
217
  }
240
- buildAsyncTestResults(apexTestResults) {
241
- return __awaiter(this, void 0, void 0, function* () {
242
- const apexTestClassIdSet = new Set();
243
- let passed = 0;
244
- let failed = 0;
245
- let skipped = 0;
246
- // Iterate over test results, format and add them as results.tests
247
- const testResults = [];
248
- for (const result of apexTestResults) {
249
- result.records.forEach((item) => {
250
- var _a;
251
- switch (item.Outcome) {
252
- case "Pass" /* ApexTestResultOutcome.Pass */:
253
- passed++;
254
- break;
255
- case "Fail" /* ApexTestResultOutcome.Fail */:
256
- case "CompileFail" /* ApexTestResultOutcome.CompileFail */:
257
- failed++;
258
- break;
259
- case "Skip" /* ApexTestResultOutcome.Skip */:
260
- skipped++;
261
- break;
262
- }
263
- apexTestClassIdSet.add(item.ApexClass.Id);
264
- // Can only query the FullName field if a single record is returned, so manually build the field
265
- item.ApexClass.FullName = item.ApexClass.NamespacePrefix
266
- ? `${item.ApexClass.NamespacePrefix}.${item.ApexClass.Name}`
267
- : item.ApexClass.Name;
268
- const diagnostic = item.Message || item.StackTrace ? (0, diagnosticUtil_1.getAsyncDiagnostic)(item) : null;
269
- testResults.push(Object.assign({ id: item.Id, queueItemId: item.QueueItemId, stackTrace: item.StackTrace, message: item.Message, asyncApexJobId: item.AsyncApexJobId, methodName: item.MethodName, outcome: item.Outcome, apexLogId: item.ApexLogId, apexClass: {
270
- id: item.ApexClass.Id,
271
- name: item.ApexClass.Name,
272
- namespacePrefix: item.ApexClass.NamespacePrefix,
273
- fullName: item.ApexClass.FullName
274
- }, runTime: (_a = item.RunTime) !== null && _a !== void 0 ? _a : 0, testTimestamp: item.TestTimestamp, fullName: `${item.ApexClass.FullName}.${item.MethodName}` }, (diagnostic ? { diagnostic } : {})));
218
+ async buildAsyncTestResults(apexTestResults) {
219
+ const apexTestClassIdSet = new Set();
220
+ let passed = 0;
221
+ let failed = 0;
222
+ let skipped = 0;
223
+ // Iterate over test results, format and add them as results.tests
224
+ const testResults = [];
225
+ for (const result of apexTestResults) {
226
+ result.records.forEach((item) => {
227
+ switch (item.Outcome) {
228
+ case "Pass" /* ApexTestResultOutcome.Pass */:
229
+ passed++;
230
+ break;
231
+ case "Fail" /* ApexTestResultOutcome.Fail */:
232
+ case "CompileFail" /* ApexTestResultOutcome.CompileFail */:
233
+ failed++;
234
+ break;
235
+ case "Skip" /* ApexTestResultOutcome.Skip */:
236
+ skipped++;
237
+ break;
238
+ }
239
+ apexTestClassIdSet.add(item.ApexClass.Id);
240
+ // Can only query the FullName field if a single record is returned, so manually build the field
241
+ item.ApexClass.FullName = item.ApexClass.NamespacePrefix
242
+ ? `${item.ApexClass.NamespacePrefix}.${item.ApexClass.Name}`
243
+ : item.ApexClass.Name;
244
+ const diagnostic = item.Message || item.StackTrace ? (0, diagnosticUtil_1.getAsyncDiagnostic)(item) : null;
245
+ testResults.push({
246
+ id: item.Id,
247
+ queueItemId: item.QueueItemId,
248
+ stackTrace: item.StackTrace,
249
+ message: item.Message,
250
+ asyncApexJobId: item.AsyncApexJobId,
251
+ methodName: item.MethodName,
252
+ outcome: item.Outcome,
253
+ apexLogId: item.ApexLogId,
254
+ apexClass: {
255
+ id: item.ApexClass.Id,
256
+ name: item.ApexClass.Name,
257
+ namespacePrefix: item.ApexClass.NamespacePrefix,
258
+ fullName: item.ApexClass.FullName
259
+ },
260
+ runTime: item.RunTime ?? 0,
261
+ testTimestamp: item.TestTimestamp, // TODO: convert timestamp
262
+ fullName: `${item.ApexClass.FullName}.${item.MethodName}`,
263
+ ...(diagnostic ? { diagnostic } : {})
275
264
  });
276
- }
277
- return {
278
- apexTestClassIdSet,
279
- testResults,
280
- globalTests: { passed, failed, skipped }
281
- };
282
- });
265
+ });
266
+ }
267
+ return {
268
+ apexTestClassIdSet,
269
+ testResults,
270
+ globalTests: { passed, failed, skipped }
271
+ };
283
272
  }
284
273
  /**
285
274
  * Abort test run with test run id
286
275
  * @param testRunId
287
276
  */
288
- abortTestRun(testRunId, progress) {
289
- return __awaiter(this, void 0, void 0, function* () {
290
- progress === null || progress === void 0 ? void 0 : progress.report({
291
- type: 'AbortTestRunProgress',
292
- value: 'abortingTestRun',
293
- message: i18n_1.nls.localize('abortingTestRun', testRunId),
294
- testRunId
295
- });
296
- const testQueueItems = yield this.connection.tooling.query(`SELECT Id, Status FROM ApexTestQueueItem WHERE ParentJobId = '${testRunId}'`);
297
- for (const record of testQueueItems.records) {
298
- record.Status = "Aborted" /* ApexTestQueueItemStatus.Aborted */;
299
- }
300
- yield this.connection.tooling.update('ApexTestQueueItem', testQueueItems.records);
301
- progress === null || progress === void 0 ? void 0 : progress.report({
302
- type: 'AbortTestRunProgress',
303
- value: 'abortingTestRunRequested',
304
- message: i18n_1.nls.localize('abortingTestRunRequested', testRunId),
305
- testRunId
306
- });
277
+ async abortTestRun(testRunId, progress) {
278
+ progress?.report({
279
+ type: 'AbortTestRunProgress',
280
+ value: 'abortingTestRun',
281
+ message: i18n_1.nls.localize('abortingTestRun', testRunId),
282
+ testRunId
283
+ });
284
+ const testQueueItems = await this.connection.tooling.query(`SELECT Id, Status FROM ApexTestQueueItem WHERE ParentJobId = '${testRunId}'`);
285
+ for (const record of testQueueItems.records) {
286
+ record.Status = "Aborted" /* ApexTestQueueItemStatus.Aborted */;
287
+ }
288
+ await this.connection.tooling.update('ApexTestQueueItem', testQueueItems.records);
289
+ progress?.report({
290
+ type: 'AbortTestRunProgress',
291
+ value: 'abortingTestRunRequested',
292
+ message: i18n_1.nls.localize('abortingTestRunRequested', testRunId),
293
+ testRunId
307
294
  });
308
295
  }
309
296
  getTestRunRequestAction(options) {
310
- const requestTestRun = () => __awaiter(this, void 0, void 0, function* () {
297
+ const requestTestRun = async () => {
311
298
  const url = `${this.connection.tooling._baseUrl()}/runTestsAsynchronous`;
312
299
  const request = {
313
300
  method: 'POST',
@@ -316,13 +303,13 @@ class AsyncTests {
316
303
  headers: { 'content-type': 'application/json' }
317
304
  };
318
305
  try {
319
- const testRunId = (yield this.connection.tooling.request(request));
306
+ const testRunId = (await this.connection.tooling.request(request));
320
307
  return Promise.resolve(testRunId);
321
308
  }
322
309
  catch (e) {
323
310
  return Promise.reject(e);
324
311
  }
325
- });
312
+ };
326
313
  return requestTestRun;
327
314
  }
328
315
  }
@@ -1 +1 @@
1
- {"version":3,"file":"asyncTests.js","sourceRoot":"","sources":["../../../src/tests/asyncTests.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"asyncTests.js","sourceRoot":"","sources":["../../../src/tests/asyncTests.ts"],"names":[],"mappings":"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"}