Skip to content

Commit cc955c7

Browse files
Slim down VariantAnalysisMonitorResult
1 parent 594d879 commit cc955c7

File tree

5 files changed

+20
-36
lines changed

5 files changed

+20
-36
lines changed
Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,11 @@
11
import { VariantAnalysis } from './variant-analysis';
22

33
export type VariantAnalysisMonitorStatus =
4-
| 'InProgress'
5-
| 'CompletedSuccessfully'
6-
| 'CompletedUnsuccessfully'
7-
| 'Failed'
8-
| 'Cancelled'
9-
| 'TimedOut';
4+
| 'Completed'
5+
| 'Canceled';
106

117
export interface VariantAnalysisMonitorResult {
128
status: VariantAnalysisMonitorStatus;
13-
error?: string;
149
scannedReposDownloaded?: number[],
1510
variantAnalysis?: VariantAnalysis
1611
}

extensions/ql-vscode/src/remote-queries/variant-analysis-monitor.ts

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ export class VariantAnalysisMonitor extends DisposableObject {
4343
await this.sleep(VariantAnalysisMonitor.sleepTime);
4444

4545
if (cancellationToken && cancellationToken.isCancellationRequested) {
46-
return { status: 'Cancelled', error: 'Variant Analysis was canceled.' };
46+
return { status: 'Canceled' };
4747
}
4848

4949
const variantAnalysisSummary = await ghApiClient.getVariantAnalysis(
@@ -59,22 +59,14 @@ export class VariantAnalysisMonitor extends DisposableObject {
5959
const downloadedRepos = this.downloadVariantAnalysisResults(variantAnalysisSummary, scannedReposDownloaded);
6060
scannedReposDownloaded.push(...downloadedRepos);
6161

62-
if (variantAnalysis.failureReason) {
63-
return {
64-
status: 'Failed',
65-
error: `Variant Analysis has failed: ${variantAnalysis.failureReason}`,
66-
variantAnalysis: variantAnalysis
67-
};
68-
}
69-
70-
if (isFinalVariantAnalysisStatus(variantAnalysis.status)) {
62+
if (isFinalVariantAnalysisStatus(variantAnalysis.status) || variantAnalysis.failureReason) {
7163
break;
7264
}
7365

7466
attemptCount++;
7567
}
7668

77-
return { status: 'CompletedSuccessfully', scannedReposDownloaded: scannedReposDownloaded };
69+
return { status: 'Completed', scannedReposDownloaded, variantAnalysis };
7870
}
7971

8072
private scheduleForDownload(

extensions/ql-vscode/src/remote-queries/variant-analysis-processor.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ export function processUpdatedVariantAnalysis(
6262
executionStartTime: previousVariantAnalysis.executionStartTime,
6363
createdAt: response.created_at,
6464
updatedAt: response.updated_at,
65-
status: processApiStatus(response.status),
65+
status: processApiStatus(response.status, response.failure_reason),
6666
completedAt: response.completed_at,
6767
actionsWorkflowRunId: response.actions_workflow_run_id,
6868
scannedRepos: scannedRepos,
@@ -158,12 +158,13 @@ function processApiRepoStatus(analysisStatus: ApiVariantAnalysisRepoStatus): Var
158158
}
159159
}
160160

161-
function processApiStatus(status: ApiVariantAnalysisStatus): VariantAnalysisStatus {
162-
switch (status) {
163-
case 'in_progress':
164-
return VariantAnalysisStatus.InProgress;
165-
case 'completed':
166-
return VariantAnalysisStatus.Succeeded;
161+
function processApiStatus(status: ApiVariantAnalysisStatus, failureReason: string | undefined): VariantAnalysisStatus {
162+
if (status === 'in_progress') {
163+
return VariantAnalysisStatus.InProgress;
164+
} else if (failureReason !== undefined) {
165+
return VariantAnalysisStatus.Failed;
166+
} else {
167+
return VariantAnalysisStatus.Succeeded;
167168
}
168169
}
169170

extensions/ql-vscode/src/vscode-tests/cli-integration/remote-queries/variant-analysis-monitor.test.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -83,23 +83,22 @@ describe('Variant Analysis Monitor', async function() {
8383

8484
const result = await variantAnalysisMonitor.monitorVariantAnalysis(variantAnalysis, cancellationTokenSource.token);
8585

86-
expect(result).to.eql({ status: 'Cancelled', error: 'Variant Analysis was canceled.' });
86+
expect(result).to.eql({ status: 'Canceled' });
8787
});
8888

8989
describe('when the variant analysis fails', async () => {
9090
let mockFailedApiResponse: VariantAnalysisApiResponse;
9191

9292
beforeEach(async function() {
93-
mockFailedApiResponse = createFailedMockApiResponse('in_progress');
93+
mockFailedApiResponse = createFailedMockApiResponse();
9494
mockGetVariantAnalysis = sandbox.stub(ghApiClient, 'getVariantAnalysis').resolves(mockFailedApiResponse);
9595
});
9696

9797
it('should mark as failed locally and stop monitoring', async () => {
9898
const result = await variantAnalysisMonitor.monitorVariantAnalysis(variantAnalysis, cancellationTokenSource.token);
9999

100100
expect(mockGetVariantAnalysis.calledOnce).to.be.true;
101-
expect(result.status).to.eql('Failed');
102-
expect(result.error).to.eql(`Variant Analysis has failed: ${mockFailedApiResponse.failure_reason}`);
101+
expect(result.status).to.eql('Completed');
103102
expect(result.variantAnalysis?.status).to.equal(VariantAnalysisStatus.Failed);
104103
expect(result.variantAnalysis?.failureReason).to.equal(processFailureReason(mockFailedApiResponse.failure_reason as VariantAnalysisFailureReason));
105104
});
@@ -130,7 +129,7 @@ describe('Variant Analysis Monitor', async function() {
130129
it('should succeed and return a list of scanned repo ids', async () => {
131130
const result = await variantAnalysisMonitor.monitorVariantAnalysis(variantAnalysis, cancellationTokenSource.token);
132131

133-
expect(result.status).to.equal('CompletedSuccessfully');
132+
expect(result.status).to.equal('Completed');
134133
expect(result.scannedReposDownloaded).to.eql(succeededRepos.map(r => r.repository.id));
135134
});
136135

@@ -173,7 +172,7 @@ describe('Variant Analysis Monitor', async function() {
173172
it('should succeed and return an empty list of scanned repo ids', async () => {
174173
const result = await variantAnalysisMonitor.monitorVariantAnalysis(variantAnalysis, cancellationTokenSource.token);
175174

176-
expect(result.status).to.equal('CompletedSuccessfully');
175+
expect(result.status).to.equal('Completed');
177176
expect(result.scannedReposDownloaded).to.eql([]);
178177
});
179178

@@ -194,7 +193,7 @@ describe('Variant Analysis Monitor', async function() {
194193
it('should succeed and return an empty list of scanned repo ids', async () => {
195194
const result = await variantAnalysisMonitor.monitorVariantAnalysis(variantAnalysis, cancellationTokenSource.token);
196195

197-
expect(result.status).to.equal('CompletedSuccessfully');
196+
expect(result.status).to.equal('Completed');
198197
expect(result.scannedReposDownloaded).to.eql([]);
199198
});
200199

extensions/ql-vscode/src/vscode-tests/factories/remote-queries/gh-api/variant-analysis-api-response.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,10 @@ export function createMockApiResponse(
3939
}
4040

4141
export function createFailedMockApiResponse(
42-
status: VariantAnalysisStatus = 'in_progress',
4342
scannedRepos: VariantAnalysisScannedRepository[] = createMockScannedRepos(),
4443
skippedRepos: VariantAnalysisSkippedRepositories = createMockSkippedRepos(),
4544
): VariantAnalysisApiResponse {
46-
const variantAnalysis = createMockApiResponse(status, scannedRepos, skippedRepos);
47-
variantAnalysis.status = status;
45+
const variantAnalysis = createMockApiResponse('completed', scannedRepos, skippedRepos);
4846
variantAnalysis.failure_reason = 'internal_error';
49-
5047
return variantAnalysis;
5148
}

0 commit comments

Comments
 (0)