Skip to content

Commit 5a2a9fc

Browse files
committed
Add repository metadata to types
This adds the new `stargazers_count` and `updated_at` fields in the repositories to the appropriate `gh-api` and `shared` types. To make testing easier this also moves the `variant-analysis-processor.test.ts` to the pure tests since it doesn't and shouldn't depend on any `vscode` APIs.
1 parent be2ca6c commit 5a2a9fc

File tree

8 files changed

+69
-22
lines changed

8 files changed

+69
-22
lines changed

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/**
22
* Defines basic information about a repository.
3-
*
3+
*
44
* Different parts of the API may return different subsets of information
55
* about a repository, but this model represents the very basic information
66
* that will always be available.
@@ -11,3 +11,8 @@ export interface Repository {
1111
full_name: string,
1212
private: boolean,
1313
}
14+
15+
export interface RepositoryWithMetadata extends Repository {
16+
stargazers_count: number;
17+
updated_at: string | null;
18+
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Repository } from './repository';
1+
import { Repository, RepositoryWithMetadata } from './repository';
22

33
export interface VariantAnalysisSubmissionRequest {
44
action_repo_ref: string,
@@ -50,7 +50,7 @@ export type VariantAnalysisRepoStatus =
5050
| 'timed_out';
5151

5252
export interface VariantAnalysisScannedRepository {
53-
repository: Repository,
53+
repository: RepositoryWithMetadata,
5454
analysis_status: VariantAnalysisRepoStatus,
5555
result_count?: number,
5656
artifact_size_in_bytes?: number,
@@ -59,7 +59,7 @@ export interface VariantAnalysisScannedRepository {
5959

6060
export interface VariantAnalysisSkippedRepositoryGroup {
6161
repository_count: number,
62-
repositories: Repository[]
62+
repositories: RepositoryWithMetadata[]
6363
}
6464

6565
export interface VariantAnalysisNotFoundRepositoryGroup {

extensions/ql-vscode/src/remote-queries/shared/repository.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,8 @@ export interface Repository {
33
fullName: string,
44
private: boolean,
55
}
6+
7+
export interface RepositoryWithMetadata extends Repository {
8+
stargazersCount: number;
9+
updatedAt: string | null;
10+
}

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Repository } from './repository';
1+
import { Repository, RepositoryWithMetadata } from './repository';
22
import { AnalysisAlert, AnalysisRawResults } from './analysis-result';
33

44
export interface VariantAnalysis {
@@ -62,7 +62,7 @@ export enum VariantAnalysisRepoStatus {
6262
}
6363

6464
export interface VariantAnalysisScannedRepository {
65-
repository: Repository,
65+
repository: RepositoryWithMetadata,
6666
analysisStatus: VariantAnalysisRepoStatus,
6767
resultCount?: number,
6868
artifactSizeInBytes?: number,
@@ -85,6 +85,8 @@ export interface VariantAnalysisSkippedRepository {
8585
id?: number,
8686
fullName: string,
8787
private?: boolean,
88+
stargazersCount?: number,
89+
updatedAt?: string | null,
8890
}
8991

9092
export enum VariantAnalysisScannedRepositoryDownloadStatus {

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,8 @@ function processScannedRepositories(
8585
id: scannedRepo.repository.id,
8686
fullName: scannedRepo.repository.full_name,
8787
private: scannedRepo.repository.private,
88+
stargazersCount: scannedRepo.repository.stargazers_count,
89+
updatedAt: scannedRepo.repository.updated_at,
8890
},
8991
analysisStatus: processApiRepoStatus(scannedRepo.analysis_status),
9092
resultCount: scannedRepo.result_count,
@@ -114,7 +116,10 @@ function processRepoGroup(repoGroup: ApiVariantAnalysisSkippedRepositoryGroup |
114116
const repos = repoGroup.repositories.map(repo => {
115117
return {
116118
id: repo.id,
117-
fullName: repo.full_name
119+
fullName: repo.full_name,
120+
private: repo.private,
121+
stargazersCount: repo.stargazers_count,
122+
updatedAt: repo.updated_at
118123
};
119124
});
120125

extensions/ql-vscode/src/vscode-tests/factories/remote-queries/gh-api/scanned-repositories.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ export function createMockScannedRepo(
1515
name: name,
1616
full_name: 'github/' + name,
1717
private: isPrivate,
18+
stargazers_count: faker.datatype.number(),
19+
updated_at: faker.date.past().toISOString(),
1820
},
1921
analysis_status: analysisStatus,
2022
result_count: faker.datatype.number(),

extensions/ql-vscode/src/vscode-tests/factories/remote-queries/gh-api/skipped-repositories.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,17 @@ export function createMockSkippedRepoGroup(): VariantAnalysisSkippedRepositoryGr
2222
id: faker.datatype.number(),
2323
name: faker.random.word(),
2424
full_name: 'github/' + faker.random.word(),
25-
private: true
25+
private: true,
26+
stargazers_count: faker.datatype.number(),
27+
updated_at: faker.date.past().toISOString()
2628
},
2729
{
2830
id: faker.datatype.number(),
2931
name: faker.random.word(),
3032
full_name: 'github/' + faker.random.word(),
31-
private: false
33+
private: false,
34+
stargazers_count: faker.datatype.number(),
35+
updated_at: faker.date.past().toISOString()
3236
}
3337
]
3438
};

extensions/ql-vscode/src/vscode-tests/cli-integration/remote-queries/variant-analysis-processor.test.ts renamed to extensions/ql-vscode/test/pure-tests/remote-queries/variant-analysis-processor.test.ts

Lines changed: 37 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,21 @@
11
import { expect } from 'chai';
22
import {
3-
VariantAnalysisScannedRepository as ApiVariantAnalysisScannedRepository,
4-
} from '../../../remote-queries/gh-api/variant-analysis';
3+
VariantAnalysisScannedRepository as ApiVariantAnalysisScannedRepository
4+
} from '../../../src/remote-queries/gh-api/variant-analysis';
55
import {
66
VariantAnalysisQueryLanguage,
77
VariantAnalysisScannedRepository,
88
VariantAnalysisRepoStatus
9-
} from '../../../remote-queries/shared/variant-analysis';
10-
import { processVariantAnalysis } from '../../../remote-queries/variant-analysis-processor';
11-
import { createMockScannedRepos } from '../../factories/remote-queries/gh-api/scanned-repositories';
12-
import { createMockSkippedRepos } from '../../factories/remote-queries/gh-api/skipped-repositories';
13-
import { createMockApiResponse } from '../../factories/remote-queries/gh-api/variant-analysis-api-response';
14-
import { createMockSubmission } from '../../factories/remote-queries/shared/variant-analysis-submission';
9+
} from '../../../src/remote-queries/shared/variant-analysis';
10+
import { processVariantAnalysis } from '../../../src/remote-queries/variant-analysis-processor';
11+
import { createMockScannedRepos } from '../../../src/vscode-tests/factories/remote-queries/gh-api/scanned-repositories';
12+
import { createMockSkippedRepos } from '../../../src/vscode-tests/factories/remote-queries/gh-api/skipped-repositories';
13+
import {
14+
createMockApiResponse
15+
} from '../../../src/vscode-tests/factories/remote-queries/gh-api/variant-analysis-api-response';
16+
import {
17+
createMockSubmission
18+
} from '../../../src/vscode-tests/factories/remote-queries/shared/variant-analysis-submission';
1519

1620
describe('Variant Analysis processor', function() {
1721
const scannedRepos = createMockScannedRepos();
@@ -56,11 +60,17 @@ describe('Variant Analysis processor', function() {
5660
'repositories': [
5761
{
5862
'fullName': access_mismatch_repos?.repositories[0].full_name,
59-
'id': access_mismatch_repos?.repositories[0].id
63+
'id': access_mismatch_repos?.repositories[0].id,
64+
'private': access_mismatch_repos?.repositories[0].private,
65+
'stargazersCount': access_mismatch_repos?.repositories[0].stargazers_count,
66+
'updatedAt': access_mismatch_repos?.repositories[0].updated_at,
6067
},
6168
{
6269
'fullName': access_mismatch_repos?.repositories[1].full_name,
63-
'id': access_mismatch_repos?.repositories[1].id
70+
'id': access_mismatch_repos?.repositories[1].id,
71+
'private': access_mismatch_repos?.repositories[1].private,
72+
'stargazersCount': access_mismatch_repos?.repositories[1].stargazers_count,
73+
'updatedAt': access_mismatch_repos?.repositories[1].updated_at,
6474
}
6575
],
6676
'repositoryCount': access_mismatch_repos?.repository_count
@@ -69,11 +79,17 @@ describe('Variant Analysis processor', function() {
6979
'repositories': [
7080
{
7181
'fullName': no_codeql_db_repos?.repositories[0].full_name,
72-
'id': no_codeql_db_repos?.repositories[0].id
82+
'id': no_codeql_db_repos?.repositories[0].id,
83+
'private': no_codeql_db_repos?.repositories[0].private,
84+
'stargazersCount': no_codeql_db_repos?.repositories[0].stargazers_count,
85+
'updatedAt': no_codeql_db_repos?.repositories[0].updated_at,
7386
},
7487
{
7588
'fullName': no_codeql_db_repos?.repositories[1].full_name,
7689
'id': no_codeql_db_repos?.repositories[1].id,
90+
'private': no_codeql_db_repos?.repositories[1].private,
91+
'stargazersCount': no_codeql_db_repos?.repositories[1].stargazers_count,
92+
'updatedAt': no_codeql_db_repos?.repositories[1].updated_at,
7793
}
7894
],
7995
'repositoryCount': 2
@@ -93,11 +109,17 @@ describe('Variant Analysis processor', function() {
93109
'repositories': [
94110
{
95111
'fullName': over_limit_repos?.repositories[0].full_name,
96-
'id': over_limit_repos?.repositories[0].id
112+
'id': over_limit_repos?.repositories[0].id,
113+
'private': over_limit_repos?.repositories[0].private,
114+
'stargazersCount': over_limit_repos?.repositories[0].stargazers_count,
115+
'updatedAt': over_limit_repos?.repositories[0].updated_at,
97116
},
98117
{
99118
'fullName': over_limit_repos?.repositories[1].full_name,
100-
'id': over_limit_repos?.repositories[1].id
119+
'id': over_limit_repos?.repositories[1].id,
120+
'private': over_limit_repos?.repositories[1].private,
121+
'stargazersCount': over_limit_repos?.repositories[1].stargazers_count,
122+
'updatedAt': over_limit_repos?.repositories[1].updated_at,
101123
}
102124
],
103125
'repositoryCount': over_limit_repos?.repository_count
@@ -118,6 +140,8 @@ describe('Variant Analysis processor', function() {
118140
'fullName': scannedRepo.repository.full_name,
119141
'id': scannedRepo.repository.id,
120142
'private': scannedRepo.repository.private,
143+
'stargazersCount': scannedRepo.repository.stargazers_count,
144+
'updatedAt': scannedRepo.repository.updated_at
121145
},
122146
'resultCount': scannedRepo.result_count
123147
};

0 commit comments

Comments
 (0)