Skip to content

Commit 7da1bdd

Browse files
committed
chore: dedup failures on mso
1 parent ed04d33 commit 7da1bdd

File tree

1 file changed

+50
-9
lines changed

1 file changed

+50
-9
lines changed

src/utils/deployStages.ts

Lines changed: 50 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,12 @@
77
import os from 'node:os';
88
import { MultiStageOutput } from '@oclif/multi-stage-output';
99
import { Lifecycle, Messages } from '@salesforce/core';
10-
import { MetadataApiDeploy, MetadataApiDeployStatus, RequestStatus } from '@salesforce/source-deploy-retrieve';
10+
import {
11+
Failures,
12+
MetadataApiDeploy,
13+
MetadataApiDeployStatus,
14+
RequestStatus,
15+
} from '@salesforce/source-deploy-retrieve';
1116
import { SourceMemberPollingEvent } from '@salesforce/source-tracking';
1217
import terminalLink from 'terminal-link';
1318
import { ensureArray } from '@salesforce/kit';
@@ -53,8 +58,10 @@ function formatProgress(current: number, total: number): string {
5358

5459
export class DeployStages {
5560
private mso: MultiStageOutput<Data>;
61+
private previousFailures: Set<string>;
5662

5763
public constructor({ title, jsonEnabled, verbose }: Options) {
64+
this.previousFailures = new Set();
5865
this.mso = new MultiStageOutput<Data>({
5966
title,
6067
stages: [
@@ -146,11 +153,30 @@ export class DeployStages {
146153
},
147154
{
148155
label: 'Failed',
149-
get: (data): string | undefined =>
150-
data?.mdapiDeploy?.numberTestsTotal && data?.mdapiDeploy?.numberTestErrors
151-
? formatProgress(data?.mdapiDeploy?.numberTestErrors, data?.mdapiDeploy?.numberTestsTotal) +
152-
(isCI() ? os.EOL + formatTestFailures(data) : '')
153-
: undefined,
156+
get: (data): string | undefined => {
157+
let output =
158+
data?.mdapiDeploy?.numberTestsTotal && data?.mdapiDeploy?.numberTestErrors
159+
? formatProgress(data?.mdapiDeploy?.numberTestErrors, data?.mdapiDeploy?.numberTestsTotal) +
160+
(isCI()
161+
? os.EOL + formatTestFailures(ensureArray(data.mdapiDeploy.details.runTestResult?.failures))
162+
: '')
163+
: undefined;
164+
165+
console.log(
166+
// @ts-ignore
167+
`TO RENDER 2: ${data?.mdapiDeploy.details.runTestResult.failures.map((f) => `${f.name}.${f.methodName}`)}`
168+
);
169+
console.log(data?.mdapiDeploy.numberTestsTotal);
170+
console.log(data?.mdapiDeploy.numberTestErrors);
171+
172+
if (Array.isArray(data?.mdapiDeploy.details.runTestResult?.failures)) {
173+
data?.mdapiDeploy.details.runTestResult?.failures.forEach((f) =>
174+
this.previousFailures.add(`${f.name}.${f.methodName}`)
175+
);
176+
}
177+
178+
return output;
179+
},
154180
stage: 'Running Tests',
155181
type: 'dynamic-key-value',
156182
},
@@ -193,7 +219,22 @@ export class DeployStages {
193219
data.numberTestsTotal > 0 &&
194220
data.numberComponentsDeployed > 0
195221
) {
196-
this.mso.skipTo('Running Tests', { mdapiDeploy: data, status: mdTransferMessages.getMessage(data?.status) });
222+
const mdapiDeploy: MetadataApiDeployStatus = {
223+
...data,
224+
};
225+
if (
226+
Array.isArray(mdapiDeploy.details.runTestResult?.failures) &&
227+
mdapiDeploy.details.runTestResult?.failures.length > 0
228+
) {
229+
mdapiDeploy.details.runTestResult.failures = mdapiDeploy.details.runTestResult?.failures.filter(
230+
(f) => !this.previousFailures.has(`${f.name}.${f.methodName}`)
231+
);
232+
233+
console.log(
234+
`TO RENDER 1: ${mdapiDeploy.details.runTestResult.failures.map((f) => `${f.name}.${f.methodName}`)}`
235+
);
236+
}
237+
this.mso.skipTo('Running Tests', { mdapiDeploy, status: mdTransferMessages.getMessage(data?.status) });
197238
} else if (data.status === RequestStatus.Pending) {
198239
this.mso.skipTo('Waiting for the org to respond', {
199240
mdapiDeploy: data,
@@ -265,8 +306,8 @@ function formatTestSuccesses(data: Data): string {
265306
return output;
266307
}
267308

268-
function formatTestFailures(data: Data): string {
269-
const failures = ensureArray(data.mdapiDeploy.details.runTestResult?.failures).sort(testResultSort);
309+
function formatTestFailures(failuresData: Failures[]): string {
310+
const failures = failuresData.sort(testResultSort);
270311

271312
let output = '';
272313

0 commit comments

Comments
 (0)