Skip to content

Commit 616a269

Browse files
authored
Merge pull request #1726 from github/koesie10/new-variant-analysis-statuses
Use new variant analysis statuses
2 parents 03e48b7 + a80ace5 commit 616a269

File tree

13 files changed

+69
-28
lines changed

13 files changed

+69
-28
lines changed

extensions/ql-vscode/src/mocks/scenarios/problem-query-success/27-getVariantAnalysis.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@
9898
"created_at": "2022-10-26T12:45:12Z",
9999
"updated_at": "2022-10-26T12:45:15Z",
100100
"actions_workflow_run_id": 3329095282,
101-
"status": "completed",
101+
"status": "succeeded",
102102
"completed_at": "2022-10-26T12:48:17Z",
103103
"scanned_repositories": [
104104
{

extensions/ql-vscode/src/mocks/scenarios/problem-query-warnings/51-getVariantAnalysis.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@
9898
"created_at": "2022-10-27T07:42:59Z",
9999
"updated_at": "2022-10-27T07:43:02Z",
100100
"actions_workflow_run_id": 3335462873,
101-
"status": "completed",
101+
"status": "succeeded",
102102
"completed_at": "2022-10-27T08:18:47Z",
103103
"scanned_repositories": [
104104
{

extensions/ql-vscode/src/mocks/scenarios/query-failure/15-getVariantAnalysis.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@
9898
"created_at": "2022-10-27T12:00:27Z",
9999
"updated_at": "2022-10-27T12:00:30Z",
100100
"actions_workflow_run_id": 3337181325,
101-
"status": "completed",
101+
"status": "succeeded",
102102
"completed_at": "2022-10-27T12:04:03Z",
103103
"scanned_repositories": [
104104
{

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,13 @@ export interface VariantAnalysis {
3535

3636
export type VariantAnalysisStatus =
3737
| 'in_progress'
38-
| 'completed';
38+
| 'succeeded'
39+
| 'failed'
40+
| 'cancelled';
3941

4042
export type VariantAnalysisFailureReason =
4143
| 'no_repos_queried'
44+
| 'actions_workflow_run_failed'
4245
| 'internal_error';
4346

4447
export type VariantAnalysisRepoStatus =

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ export function isFinalVariantAnalysisStatus(status: VariantAnalysisStatus): boo
5656

5757
export enum VariantAnalysisFailureReason {
5858
NoReposQueried = 'noReposQueried',
59+
ActionsWorkflowRunFailed = 'actionsWorkflowRunFailed',
5960
InternalError = 'internalError',
6061
}
6162

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import * as ghApiClient from './gh-api/gh-api-client';
44

55
import {
66
isFinalVariantAnalysisStatus,
7+
repoHasDownloadableArtifact,
78
VariantAnalysis,
8-
VariantAnalysisRepoStatus,
99
VariantAnalysisScannedRepository
1010
} from './shared/variant-analysis';
1111
import { VariantAnalysisMonitorResult } from './shared/variant-analysis-monitor-result';
@@ -61,7 +61,7 @@ export class VariantAnalysisMonitor extends DisposableObject {
6161
const downloadedRepos = this.downloadVariantAnalysisResults(variantAnalysis, scannedReposDownloaded);
6262
scannedReposDownloaded.push(...downloadedRepos);
6363

64-
if (isFinalVariantAnalysisStatus(variantAnalysis.status) || variantAnalysis.failureReason) {
64+
if (isFinalVariantAnalysisStatus(variantAnalysis.status)) {
6565
break;
6666
}
6767

@@ -82,7 +82,7 @@ export class VariantAnalysisMonitor extends DisposableObject {
8282
scannedRepo: VariantAnalysisScannedRepository,
8383
alreadyDownloaded: number[]
8484
): boolean {
85-
return !alreadyDownloaded.includes(scannedRepo.repository.id) && scannedRepo.analysisStatus === VariantAnalysisRepoStatus.Succeeded;
85+
return !alreadyDownloaded.includes(scannedRepo.repository.id) && repoHasDownloadableArtifact(scannedRepo);
8686
}
8787

8888
private getReposToDownload(

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

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ export function processUpdatedVariantAnalysis(
6464
executionStartTime: previousVariantAnalysis.executionStartTime,
6565
createdAt: response.created_at,
6666
updatedAt: response.updated_at,
67-
status: processApiStatus(response.status, response.failure_reason),
67+
status: processApiStatus(response.status),
6868
completedAt: response.completed_at,
6969
actionsWorkflowRunId: response.actions_workflow_run_id,
7070
scannedRepos: scannedRepos,
@@ -188,20 +188,26 @@ function processApiRepoStatus(analysisStatus: ApiVariantAnalysisRepoStatus): Var
188188
}
189189
}
190190

191-
function processApiStatus(status: ApiVariantAnalysisStatus, failureReason: string | undefined): VariantAnalysisStatus {
192-
if (status === 'in_progress') {
191+
function processApiStatus(status: ApiVariantAnalysisStatus): VariantAnalysisStatus {
192+
if (status === 'succeeded') {
193+
return VariantAnalysisStatus.Succeeded;
194+
} else if (status === 'in_progress') {
193195
return VariantAnalysisStatus.InProgress;
194-
} else if (failureReason !== undefined) {
196+
} else if (status === 'failed') {
195197
return VariantAnalysisStatus.Failed;
198+
} else if (status === 'cancelled') {
199+
return VariantAnalysisStatus.Canceled;
196200
} else {
197-
return VariantAnalysisStatus.Succeeded;
201+
return VariantAnalysisStatus.InProgress;
198202
}
199203
}
200204

201205
export function processFailureReason(failureReason: ApiVariantAnalysisFailureReason): VariantAnalysisFailureReason {
202206
switch (failureReason) {
203207
case 'no_repos_queried':
204208
return VariantAnalysisFailureReason.NoReposQueried;
209+
case 'actions_workflow_run_failed':
210+
return VariantAnalysisFailureReason.ActionsWorkflowRunFailed;
205211
case 'internal_error':
206212
return VariantAnalysisFailureReason.InternalError;
207213
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import React from 'react';
2+
3+
import { ComponentMeta, ComponentStory } from '@storybook/react';
4+
import { VariantAnalysisFailureReason } from '../../remote-queries/shared/variant-analysis';
5+
import { FailureReasonAlert } from '../../view/variant-analysis/FailureReasonAlert';
6+
7+
export default {
8+
title: 'Variant Analysis/Failure reason alert',
9+
component: FailureReasonAlert,
10+
} as ComponentMeta<typeof FailureReasonAlert>;
11+
12+
const Template: ComponentStory<typeof FailureReasonAlert> = (args) => (
13+
<FailureReasonAlert {...args} />
14+
);
15+
16+
export const NoReposQueried = Template.bind({});
17+
NoReposQueried.args = {
18+
failureReason: VariantAnalysisFailureReason.NoReposQueried,
19+
};
20+
21+
export const ActionsWorkflowRunFailed = Template.bind({});
22+
ActionsWorkflowRunFailed.args = {
23+
failureReason: VariantAnalysisFailureReason.ActionsWorkflowRunFailed,
24+
};
25+
26+
export const InternalError = Template.bind({});
27+
InternalError.args = {
28+
failureReason: VariantAnalysisFailureReason.InternalError,
29+
};
Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,50 @@
11
import * as React from 'react';
2-
import { VSCodeButton } from '@vscode/webview-ui-toolkit/react';
2+
import { ReactNode } from 'react';
3+
import { VSCodeLink } from '@vscode/webview-ui-toolkit/react';
34
import { Alert } from '../common';
45
import { vscode } from '../vscode-api';
56
import { VariantAnalysisFailureReason } from '../../remote-queries/shared/variant-analysis';
67

78
type Props = {
89
failureReason: VariantAnalysisFailureReason;
9-
showLogsButton: boolean;
10+
};
11+
12+
const openLogs = () => {
13+
vscode.postMessage({
14+
t: 'openLogs',
15+
});
1016
};
1117

1218
const getTitle = (failureReason: VariantAnalysisFailureReason): string => {
1319
switch (failureReason) {
1420
case VariantAnalysisFailureReason.NoReposQueried:
1521
return 'No repositories to analyze';
22+
case VariantAnalysisFailureReason.ActionsWorkflowRunFailed:
23+
return 'GitHub Actions workflow run failed';
1624
case VariantAnalysisFailureReason.InternalError:
1725
return 'Something unexpected happened';
1826
}
1927
};
2028

21-
const getMessage = (failureReason: VariantAnalysisFailureReason): string => {
29+
const getMessage = (failureReason: VariantAnalysisFailureReason): ReactNode => {
2230
switch (failureReason) {
2331
case VariantAnalysisFailureReason.NoReposQueried:
2432
return 'No repositories available after processing. No repositories were analyzed.';
33+
case VariantAnalysisFailureReason.ActionsWorkflowRunFailed:
34+
return <>The GitHub Actions workflow run has failed. <VSCodeLink onClick={openLogs}>Check logs</VSCodeLink> and try running this query again.</>;
2535
case VariantAnalysisFailureReason.InternalError:
2636
return 'An internal error occurred while running this variant analysis. Please try again later.';
2737
}
2838
};
2939

30-
const openLogs = () => {
31-
vscode.postMessage({
32-
t: 'openLogs',
33-
});
34-
};
35-
3640
export const FailureReasonAlert = ({
3741
failureReason,
38-
showLogsButton,
3942
}: Props) => {
4043
return (
4144
<Alert
4245
type="error"
4346
title={getTitle(failureReason)}
4447
message={getMessage(failureReason)}
45-
actions={showLogsButton && <VSCodeButton appearance="secondary" onClick={openLogs}>View logs</VSCodeButton>}
4648
/>
4749
);
4850
};

extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisOutcomePanels.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ export const VariantAnalysisOutcomePanels = ({
6565
/>
6666
)}
6767
{variantAnalysis.status === VariantAnalysisStatus.Failed && variantAnalysis.failureReason && (
68-
<FailureReasonAlert failureReason={variantAnalysis.failureReason} showLogsButton={!!variantAnalysis.actionsWorkflowRunId} />
68+
<FailureReasonAlert failureReason={variantAnalysis.failureReason} />
6969
)}
7070
{overLimitRepositoryCount > 0 && (
7171
<Alert

0 commit comments

Comments
 (0)