@salesforce/apex-node 6.0.0 → 6.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/src/execute/executeService.js +2 -1
- package/lib/src/execute/executeService.js.map +1 -1
- package/lib/src/reporters/coverageReporter.js +6 -5
- package/lib/src/reporters/coverageReporter.js.map +1 -1
- package/lib/src/reporters/humanFormatTransform.d.ts +1 -0
- package/lib/src/reporters/humanFormatTransform.js +38 -4
- package/lib/src/reporters/humanFormatTransform.js.map +1 -1
- package/lib/src/reporters/humanReporter.js +42 -12
- package/lib/src/reporters/humanReporter.js.map +1 -1
- package/lib/src/reporters/index.d.ts +2 -1
- package/lib/src/reporters/index.js +5 -3
- package/lib/src/reporters/index.js.map +1 -1
- package/lib/src/reporters/junitFormatTransformer.d.ts +8 -1
- package/lib/src/reporters/junitFormatTransformer.js +48 -19
- package/lib/src/reporters/junitFormatTransformer.js.map +1 -1
- package/lib/src/reporters/junitReporter.js +21 -15
- package/lib/src/reporters/junitReporter.js.map +1 -1
- package/lib/src/reporters/tapFormatTransform.d.ts +8 -1
- package/lib/src/reporters/tapFormatTransform.js +50 -5
- package/lib/src/reporters/tapFormatTransform.js.map +1 -1
- package/lib/src/reporters/tapReporter.js +48 -18
- package/lib/src/reporters/tapReporter.js.map +1 -1
- package/lib/src/streaming/index.d.ts +1 -2
- package/lib/src/streaming/index.js +1 -4
- package/lib/src/streaming/index.js.map +1 -1
- package/lib/src/streaming/testResultStringifyStream.d.ts +10 -2
- package/lib/src/streaming/testResultStringifyStream.js +68 -29
- package/lib/src/streaming/testResultStringifyStream.js.map +1 -1
- package/lib/src/streaming/utils.d.ts +0 -3
- package/lib/src/streaming/utils.js +7 -14
- package/lib/src/streaming/utils.js.map +1 -1
- package/lib/src/tests/asyncTests.d.ts +3 -0
- package/lib/src/tests/asyncTests.js +197 -134
- package/lib/src/tests/asyncTests.js.map +1 -1
- package/lib/src/tests/codeCoverage.js +100 -73
- package/lib/src/tests/codeCoverage.js.map +1 -1
- package/lib/src/tests/syncTests.js +113 -98
- package/lib/src/tests/syncTests.js.map +1 -1
- package/lib/src/tests/testService.d.ts +5 -0
- package/lib/src/tests/testService.js +119 -96
- package/lib/src/tests/testService.js.map +1 -1
- package/lib/src/tests/utils.d.ts +4 -1
- package/lib/src/tests/utils.js +53 -1
- package/lib/src/tests/utils.js.map +1 -1
- package/lib/src/utils/heapMonitor.d.ts +72 -0
- package/lib/src/utils/heapMonitor.js +164 -0
- package/lib/src/utils/heapMonitor.js.map +1 -0
- package/lib/src/utils/index.d.ts +1 -0
- package/lib/src/utils/index.js +3 -1
- package/lib/src/utils/index.js.map +1 -1
- package/lib/src/utils/tableWritableStream.js +33 -5
- package/lib/src/utils/tableWritableStream.js.map +1 -1
- package/package.json +17 -15
- package/lib/src/streaming/codeCoverageStringifyStream.d.ts +0 -12
- package/lib/src/streaming/codeCoverageStringifyStream.js +0 -80
- package/lib/src/streaming/codeCoverageStringifyStream.js.map +0 -1
- package/lib/src/streaming/jsonStringifyStream.d.ts +0 -18
- package/lib/src/streaming/jsonStringifyStream.js +0 -118
- package/lib/src/streaming/jsonStringifyStream.js.map +0 -1
|
@@ -39,7 +39,7 @@ exports.CodeCoverage = void 0;
|
|
|
39
39
|
const util = __importStar(require("util"));
|
|
40
40
|
const utils_1 = require("./utils");
|
|
41
41
|
const constants_1 = require("./constants");
|
|
42
|
-
const
|
|
42
|
+
const utils_2 = require("../utils");
|
|
43
43
|
class CodeCoverage {
|
|
44
44
|
connection;
|
|
45
45
|
constructor(connection) {
|
|
@@ -50,11 +50,17 @@ class CodeCoverage {
|
|
|
50
50
|
* @returns Org wide coverage percentage for a given username connection
|
|
51
51
|
*/
|
|
52
52
|
async getOrgWideCoverage() {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
utils_2.HeapMonitor.getInstance().checkHeapSize('codeCoverage.getOrgWideCoverage');
|
|
54
|
+
try {
|
|
55
|
+
const orgWideCoverageResult = (await this.connection.tooling.query('SELECT PercentCovered FROM ApexOrgWideCoverage'));
|
|
56
|
+
if (orgWideCoverageResult.records.length === 0) {
|
|
57
|
+
return '0%';
|
|
58
|
+
}
|
|
59
|
+
return `${orgWideCoverageResult.records[0].PercentCovered}%`;
|
|
60
|
+
}
|
|
61
|
+
finally {
|
|
62
|
+
utils_2.HeapMonitor.getInstance().checkHeapSize('codeCoverage.getOrgWideCoverage');
|
|
56
63
|
}
|
|
57
|
-
return `${orgWideCoverageResult.records[0].PercentCovered}%`;
|
|
58
64
|
}
|
|
59
65
|
/**
|
|
60
66
|
* Returns the code coverage information for each Apex class covered by each Apex test method from ApexCodeCoverage entity
|
|
@@ -63,35 +69,41 @@ class CodeCoverage {
|
|
|
63
69
|
* NOTE: a test could cover more than one class, result map should contain a record for each covered class
|
|
64
70
|
*/
|
|
65
71
|
async getPerClassCodeCoverage(apexTestClassSet) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
72
|
+
utils_2.HeapMonitor.getInstance().checkHeapSize('codeCoverage.getPerClassCodeCoverage');
|
|
73
|
+
try {
|
|
74
|
+
if (apexTestClassSet.size === 0) {
|
|
75
|
+
return new Map();
|
|
76
|
+
}
|
|
77
|
+
const perClassCodeCovResults = await this.queryPerClassCodeCov(apexTestClassSet);
|
|
78
|
+
const perClassCoverageMap = new Map();
|
|
79
|
+
perClassCodeCovResults.forEach((chunk) => {
|
|
80
|
+
chunk.records.forEach((item) => {
|
|
81
|
+
const totalLines = item.NumLinesCovered + item.NumLinesUncovered;
|
|
82
|
+
const percentage = (0, utils_1.calculatePercentage)(item.NumLinesCovered, totalLines);
|
|
83
|
+
const value = {
|
|
84
|
+
apexClassOrTriggerName: item.ApexClassOrTrigger.Name,
|
|
85
|
+
apexClassOrTriggerId: item.ApexClassOrTrigger.Id,
|
|
86
|
+
apexTestClassId: item.ApexTestClassId,
|
|
87
|
+
apexTestMethodName: item.TestMethodName,
|
|
88
|
+
numLinesCovered: item.NumLinesCovered,
|
|
89
|
+
numLinesUncovered: item.NumLinesUncovered,
|
|
90
|
+
percentage,
|
|
91
|
+
...(item.Coverage ? { coverage: item.Coverage } : {})
|
|
92
|
+
};
|
|
93
|
+
const key = `${item.ApexTestClassId}-${item.TestMethodName}`;
|
|
94
|
+
if (perClassCoverageMap.get(key)) {
|
|
95
|
+
perClassCoverageMap.get(key).push(value);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
perClassCoverageMap.set(`${item.ApexTestClassId}-${item.TestMethodName}`, [value]);
|
|
99
|
+
}
|
|
100
|
+
});
|
|
92
101
|
});
|
|
93
|
-
|
|
94
|
-
|
|
102
|
+
return perClassCoverageMap;
|
|
103
|
+
}
|
|
104
|
+
finally {
|
|
105
|
+
utils_2.HeapMonitor.getInstance().checkHeapSize('codeCoverage.getPerClassCodeCoverage');
|
|
106
|
+
}
|
|
95
107
|
}
|
|
96
108
|
/**
|
|
97
109
|
* Returns the aggregate code coverage information from ApexCodeCoverageAggregate entity for a given set of Apex classes
|
|
@@ -99,47 +111,62 @@ class CodeCoverage {
|
|
|
99
111
|
* @returns The aggregate code coverage information for the given set of Apex classes
|
|
100
112
|
*/
|
|
101
113
|
async getAggregateCodeCoverage(apexClassIdSet) {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
:
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
};
|
|
114
|
+
utils_2.HeapMonitor.getInstance().checkHeapSize('codeCoverage.getAggregateCodeCoverage');
|
|
115
|
+
try {
|
|
116
|
+
const codeCoverageAggregates = await this.queryAggregateCodeCov(apexClassIdSet);
|
|
117
|
+
let totalLinesCovered = 0;
|
|
118
|
+
let totalLinesUncovered = 0;
|
|
119
|
+
const totalCodeCoverageResults = [];
|
|
120
|
+
codeCoverageAggregates.forEach((chunk) => {
|
|
121
|
+
const codeCoverageResults = chunk.records.map((item) => {
|
|
122
|
+
totalLinesCovered += item.NumLinesCovered;
|
|
123
|
+
totalLinesUncovered += item.NumLinesUncovered;
|
|
124
|
+
const totalLines = item.NumLinesCovered + item.NumLinesUncovered;
|
|
125
|
+
const percentage = (0, utils_1.calculatePercentage)(item.NumLinesCovered, totalLines);
|
|
126
|
+
return {
|
|
127
|
+
apexId: item.ApexClassOrTrigger.Id,
|
|
128
|
+
name: item.ApexClassOrTrigger.Name,
|
|
129
|
+
type: item.ApexClassOrTrigger.Id.startsWith('01p')
|
|
130
|
+
? 'ApexClass'
|
|
131
|
+
: 'ApexTrigger',
|
|
132
|
+
numLinesCovered: item.NumLinesCovered,
|
|
133
|
+
numLinesUncovered: item.NumLinesUncovered,
|
|
134
|
+
percentage,
|
|
135
|
+
coveredLines: item.Coverage.coveredLines,
|
|
136
|
+
uncoveredLines: item.Coverage.uncoveredLines
|
|
137
|
+
};
|
|
138
|
+
});
|
|
139
|
+
totalCodeCoverageResults.push(...codeCoverageResults);
|
|
127
140
|
});
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
141
|
+
return {
|
|
142
|
+
codeCoverageResults: totalCodeCoverageResults,
|
|
143
|
+
totalLines: totalLinesCovered + totalLinesUncovered,
|
|
144
|
+
coveredLines: totalLinesCovered
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
finally {
|
|
148
|
+
utils_2.HeapMonitor.getInstance().checkHeapSize('codeCoverage.getAggregateCodeCoverage');
|
|
149
|
+
}
|
|
135
150
|
}
|
|
136
151
|
async queryPerClassCodeCov(apexTestClassSet) {
|
|
137
152
|
const perClassCodeCovQuery = 'SELECT ApexTestClassId, ApexClassOrTrigger.Id, ApexClassOrTrigger.Name, TestMethodName, NumLinesCovered, NumLinesUncovered, Coverage FROM ApexCodeCoverage WHERE ApexTestClassId IN (%s)';
|
|
138
153
|
return this.fetchResults(apexTestClassSet, perClassCodeCovQuery);
|
|
139
154
|
}
|
|
140
155
|
async queryAggregateCodeCov(apexClassIdSet) {
|
|
141
|
-
|
|
142
|
-
|
|
156
|
+
let codeCoverageQuery;
|
|
157
|
+
// If the "Store Only Aggregate Code Coverage" setting is checked, then apexClassIdSet is empty and we should query all the Apex classes and triggers in the ApexCodeCoverageAggregate table.
|
|
158
|
+
if (apexClassIdSet.size === 0) {
|
|
159
|
+
codeCoverageQuery =
|
|
160
|
+
'SELECT ApexClassOrTrigger.Id, ApexClassOrTrigger.Name, NumLinesCovered, NumLinesUncovered, Coverage FROM ApexCodeCoverageAggregate';
|
|
161
|
+
const result = await (0, utils_1.queryAll)(this.connection, codeCoverageQuery, true);
|
|
162
|
+
return [result];
|
|
163
|
+
}
|
|
164
|
+
// If the "Store Only Aggregate Code Coverage" setting is unchecked, we continue to query only the Apex classes and triggers in apexClassIdSet from the ApexCodeCoverageAggregate table, as those are the Apex classes and triggers touched by the Apex tests in the current run.
|
|
165
|
+
else {
|
|
166
|
+
codeCoverageQuery =
|
|
167
|
+
'SELECT ApexClassOrTrigger.Id, ApexClassOrTrigger.Name, NumLinesCovered, NumLinesUncovered, Coverage FROM ApexCodeCoverageAggregate WHERE ApexClassorTriggerId IN (%s)';
|
|
168
|
+
return this.fetchResults(apexClassIdSet, codeCoverageQuery);
|
|
169
|
+
}
|
|
143
170
|
}
|
|
144
171
|
async fetchResults(idSet, selectQuery) {
|
|
145
172
|
const queries = this.createQueries(selectQuery, idSet);
|
|
@@ -171,21 +198,21 @@ class CodeCoverage {
|
|
|
171
198
|
}
|
|
172
199
|
exports.CodeCoverage = CodeCoverage;
|
|
173
200
|
__decorate([
|
|
174
|
-
(0,
|
|
201
|
+
(0, utils_2.elapsedTime)()
|
|
175
202
|
], CodeCoverage.prototype, "getOrgWideCoverage", null);
|
|
176
203
|
__decorate([
|
|
177
|
-
(0,
|
|
204
|
+
(0, utils_2.elapsedTime)()
|
|
178
205
|
], CodeCoverage.prototype, "getPerClassCodeCoverage", null);
|
|
179
206
|
__decorate([
|
|
180
|
-
(0,
|
|
207
|
+
(0, utils_2.elapsedTime)()
|
|
181
208
|
], CodeCoverage.prototype, "getAggregateCodeCoverage", null);
|
|
182
209
|
__decorate([
|
|
183
|
-
(0,
|
|
210
|
+
(0, utils_2.elapsedTime)()
|
|
184
211
|
], CodeCoverage.prototype, "queryPerClassCodeCov", null);
|
|
185
212
|
__decorate([
|
|
186
|
-
(0,
|
|
213
|
+
(0, utils_2.elapsedTime)()
|
|
187
214
|
], CodeCoverage.prototype, "queryAggregateCodeCov", null);
|
|
188
215
|
__decorate([
|
|
189
|
-
(0,
|
|
216
|
+
(0, utils_2.elapsedTime)()
|
|
190
217
|
], CodeCoverage.prototype, "fetchResults", null);
|
|
191
218
|
//# sourceMappingURL=codeCoverage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codeCoverage.js","sourceRoot":"","sources":["../../../src/tests/codeCoverage.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"codeCoverage.js","sourceRoot":"","sources":["../../../src/tests/codeCoverage.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,6 @@ const utils_1 = require("../utils");
|
|
|
17
17
|
const codeCoverage_1 = require("./codeCoverage");
|
|
18
18
|
const diagnosticUtil_1 = require("./diagnosticUtil");
|
|
19
19
|
const utils_2 = require("./utils");
|
|
20
|
-
const elapsedTime_1 = require("../utils/elapsedTime");
|
|
21
20
|
class SyncTests {
|
|
22
21
|
connection;
|
|
23
22
|
codecoverage;
|
|
@@ -32,6 +31,7 @@ class SyncTests {
|
|
|
32
31
|
* @param token cancellation token
|
|
33
32
|
*/
|
|
34
33
|
async runTests(options, codeCoverage = false, token) {
|
|
34
|
+
utils_1.HeapMonitor.getInstance().checkHeapSize('synctests.runTests');
|
|
35
35
|
try {
|
|
36
36
|
const url = `${this.connection.tooling._baseUrl()}/runTestsSynchronous`;
|
|
37
37
|
const request = {
|
|
@@ -49,120 +49,135 @@ class SyncTests {
|
|
|
49
49
|
catch (e) {
|
|
50
50
|
throw (0, diagnosticUtil_1.formatTestErrors)(e);
|
|
51
51
|
}
|
|
52
|
+
finally {
|
|
53
|
+
utils_1.HeapMonitor.getInstance().checkHeapSize('synctests.runTests');
|
|
54
|
+
}
|
|
52
55
|
}
|
|
53
56
|
async formatSyncResults(apiTestResult, startTime, codeCoverage = false) {
|
|
57
|
+
utils_1.HeapMonitor.getInstance().checkHeapSize('synctests.formatSyncResults');
|
|
54
58
|
const coveredApexClassIdSet = new Set();
|
|
55
59
|
const { apexTestClassIdSet, testResults } = this.buildSyncTestResults(apiTestResult);
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
perClassCov
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
60
|
+
try {
|
|
61
|
+
const globalTestFailed = apiTestResult.failures.length;
|
|
62
|
+
const globalTestPassed = apiTestResult.successes.length;
|
|
63
|
+
const result = {
|
|
64
|
+
summary: {
|
|
65
|
+
outcome: globalTestFailed === 0
|
|
66
|
+
? "Passed" /* ApexTestRunResultStatus.Passed */
|
|
67
|
+
: "Failed" /* ApexTestRunResultStatus.Failed */,
|
|
68
|
+
testsRan: apiTestResult.numTestsRun,
|
|
69
|
+
passing: globalTestPassed,
|
|
70
|
+
failing: globalTestFailed,
|
|
71
|
+
skipped: 0,
|
|
72
|
+
passRate: (0, utils_2.calculatePercentage)(globalTestPassed, apiTestResult.numTestsRun),
|
|
73
|
+
failRate: (0, utils_2.calculatePercentage)(globalTestFailed, apiTestResult.numTestsRun),
|
|
74
|
+
skipRate: (0, utils_2.calculatePercentage)(0, apiTestResult.numTestsRun),
|
|
75
|
+
testStartTime: (0, utils_1.formatStartTime)(startTime, 'ISO'),
|
|
76
|
+
testExecutionTimeInMs: apiTestResult.totalTime ?? 0,
|
|
77
|
+
testTotalTimeInMs: apiTestResult.totalTime ?? 0,
|
|
78
|
+
commandTimeInMs: (0, utils_1.getCurrentTime)() - startTime,
|
|
79
|
+
hostname: this.connection.instanceUrl,
|
|
80
|
+
orgId: this.connection.getAuthInfoFields().orgId,
|
|
81
|
+
username: this.connection.getUsername(),
|
|
82
|
+
testRunId: '',
|
|
83
|
+
userId: this.connection.getConnectionOptions().userId
|
|
84
|
+
},
|
|
85
|
+
tests: testResults
|
|
86
|
+
};
|
|
87
|
+
if (codeCoverage) {
|
|
88
|
+
const perClassCovMap = await this.codecoverage.getPerClassCodeCoverage(apexTestClassIdSet);
|
|
89
|
+
if (perClassCovMap.size > 0) {
|
|
90
|
+
result.tests.forEach((item) => {
|
|
91
|
+
const keyCodeCov = `${item.apexClass.id}-${item.methodName}`;
|
|
92
|
+
const perClassCov = perClassCovMap.get(keyCodeCov);
|
|
93
|
+
if (perClassCov) {
|
|
94
|
+
perClassCov.forEach((classCov) => coveredApexClassIdSet.add(classCov.apexClassOrTriggerId));
|
|
95
|
+
item.perClassCoverage = perClassCov;
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
const { codeCoverageResults, totalLines, coveredLines } = await this.codecoverage.getAggregateCodeCoverage(coveredApexClassIdSet);
|
|
100
|
+
result.codecoverage = codeCoverageResults;
|
|
101
|
+
result.summary.totalLines = totalLines;
|
|
102
|
+
result.summary.coveredLines = coveredLines;
|
|
103
|
+
result.summary.testRunCoverage = (0, utils_2.calculatePercentage)(coveredLines, totalLines);
|
|
104
|
+
result.summary.orgWideCoverage =
|
|
105
|
+
await this.codecoverage.getOrgWideCoverage();
|
|
93
106
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
result.summary.testRunCoverage = (0, utils_2.calculatePercentage)(coveredLines, totalLines);
|
|
99
|
-
result.summary.orgWideCoverage =
|
|
100
|
-
await this.codecoverage.getOrgWideCoverage();
|
|
107
|
+
return result;
|
|
108
|
+
}
|
|
109
|
+
finally {
|
|
110
|
+
utils_1.HeapMonitor.getInstance().checkHeapSize('synctests.formatSyncResults');
|
|
101
111
|
}
|
|
102
|
-
return result;
|
|
103
112
|
}
|
|
104
113
|
buildSyncTestResults(apiTestResult) {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
const
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
id
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
114
|
+
utils_1.HeapMonitor.getInstance().checkHeapSize('syncTests.buildSyncTestResults');
|
|
115
|
+
try {
|
|
116
|
+
const testResults = [];
|
|
117
|
+
const apexTestClassIdSet = new Set();
|
|
118
|
+
apiTestResult.successes.forEach((item) => {
|
|
119
|
+
const nms = item.namespace ? `${item.namespace}.` : '';
|
|
120
|
+
apexTestClassIdSet.add(item.id);
|
|
121
|
+
testResults.push({
|
|
122
|
+
id: '',
|
|
123
|
+
queueItemId: '',
|
|
124
|
+
stackTrace: '',
|
|
125
|
+
message: '',
|
|
126
|
+
asyncApexJobId: '',
|
|
127
|
+
methodName: item.methodName,
|
|
128
|
+
outcome: "Pass" /* ApexTestResultOutcome.Pass */,
|
|
129
|
+
apexLogId: apiTestResult.apexLogId,
|
|
130
|
+
apexClass: {
|
|
131
|
+
id: item.id,
|
|
132
|
+
name: item.name,
|
|
133
|
+
namespacePrefix: item.namespace,
|
|
134
|
+
fullName: `${nms}${item.name}`
|
|
135
|
+
},
|
|
136
|
+
runTime: item.time ?? 0,
|
|
137
|
+
testTimestamp: '',
|
|
138
|
+
fullName: `${nms}${item.name}.${item.methodName}`
|
|
139
|
+
});
|
|
128
140
|
});
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
141
|
+
apiTestResult.failures.forEach((item) => {
|
|
142
|
+
const nms = item.namespace ? `${item.namespace}__` : '';
|
|
143
|
+
apexTestClassIdSet.add(item.id);
|
|
144
|
+
const diagnostic = item.message || item.stackTrace ? (0, diagnosticUtil_1.getSyncDiagnostic)(item) : null;
|
|
145
|
+
testResults.push({
|
|
146
|
+
id: '',
|
|
147
|
+
queueItemId: '',
|
|
148
|
+
stackTrace: item.stackTrace,
|
|
149
|
+
message: item.message,
|
|
150
|
+
asyncApexJobId: '',
|
|
151
|
+
methodName: item.methodName,
|
|
152
|
+
outcome: "Fail" /* ApexTestResultOutcome.Fail */,
|
|
153
|
+
apexLogId: apiTestResult.apexLogId,
|
|
154
|
+
apexClass: {
|
|
155
|
+
id: item.id,
|
|
156
|
+
name: item.name,
|
|
157
|
+
namespacePrefix: item.namespace,
|
|
158
|
+
fullName: `${nms}${item.name}`
|
|
159
|
+
},
|
|
160
|
+
runTime: item.time ?? 0,
|
|
161
|
+
testTimestamp: '',
|
|
162
|
+
fullName: `${nms}${item.name}.${item.methodName}`,
|
|
163
|
+
...(diagnostic ? { diagnostic } : {})
|
|
164
|
+
});
|
|
153
165
|
});
|
|
154
|
-
|
|
155
|
-
|
|
166
|
+
return { apexTestClassIdSet, testResults };
|
|
167
|
+
}
|
|
168
|
+
finally {
|
|
169
|
+
utils_1.HeapMonitor.getInstance().checkHeapSize('syncTests.buildSyncTestResults');
|
|
170
|
+
}
|
|
156
171
|
}
|
|
157
172
|
}
|
|
158
173
|
exports.SyncTests = SyncTests;
|
|
159
174
|
__decorate([
|
|
160
|
-
(0,
|
|
175
|
+
(0, utils_1.elapsedTime)()
|
|
161
176
|
], SyncTests.prototype, "runTests", null);
|
|
162
177
|
__decorate([
|
|
163
|
-
(0,
|
|
178
|
+
(0, utils_1.elapsedTime)()
|
|
164
179
|
], SyncTests.prototype, "formatSyncResults", null);
|
|
165
180
|
__decorate([
|
|
166
|
-
(0,
|
|
181
|
+
(0, utils_1.elapsedTime)()
|
|
167
182
|
], SyncTests.prototype, "buildSyncTestResults", null);
|
|
168
183
|
//# sourceMappingURL=syncTests.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncTests.js","sourceRoot":"","sources":["../../../src/tests/syncTests.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;AAIH,
|
|
1
|
+
{"version":3,"file":"syncTests.js","sourceRoot":"","sources":["../../../src/tests/syncTests.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
1
2
|
import { Connection } from '@salesforce/core';
|
|
2
3
|
import { ApexTestProgressValue, AsyncTestArrayConfiguration, AsyncTestConfiguration, OutputDirConfig, SyncTestConfiguration, TestLevel, TestResult, TestRunIdResult, TestSuiteMembershipRecord } from './types';
|
|
3
4
|
import { CancellationToken, Progress } from '../common';
|
|
4
5
|
import { AsyncTests } from './asyncTests';
|
|
6
|
+
import { Writable } from 'node:stream';
|
|
5
7
|
import { Duration } from '@salesforce/kit';
|
|
6
8
|
export declare class TestService {
|
|
7
9
|
private readonly connection;
|
|
@@ -56,6 +58,7 @@ export declare class TestService {
|
|
|
56
58
|
* @param immediatelyReturn should not wait for test run to complete, return test run id immediately
|
|
57
59
|
* @param progress progress reporter
|
|
58
60
|
* @param token cancellation token
|
|
61
|
+
* @param timeout
|
|
59
62
|
*/
|
|
60
63
|
runTestAsynchronous(options: AsyncTestConfiguration | AsyncTestArrayConfiguration, codeCoverage?: boolean, immediatelyReturn?: boolean, progress?: Progress<ApexTestProgressValue>, token?: CancellationToken, timeout?: Duration): Promise<TestResult | TestRunIdResult>;
|
|
61
64
|
/**
|
|
@@ -77,4 +80,6 @@ export declare class TestService {
|
|
|
77
80
|
buildAsyncPayload(testLevel: TestLevel, tests?: string, classNames?: string, suiteNames?: string): Promise<AsyncTestConfiguration | AsyncTestArrayConfiguration>;
|
|
78
81
|
private buildAsyncClassPayload;
|
|
79
82
|
private buildTestPayload;
|
|
83
|
+
private runPipeline;
|
|
84
|
+
createStream(filePath: string): Writable;
|
|
80
85
|
}
|