Skip to content

Commit

Permalink
refactor(modules/datasource): fix null-check issues (#16153)
Browse files Browse the repository at this point in the history
* fix null-check issues

* Update index.spec.ts

* apply suggestion from review

* fix coverage issue

* Update index.spec.ts

* Apply suggestions from code review

Co-authored-by: Michael Kriese <michael.kriese@visualon.de>

* Update datasource.spec.ts

* Update lib/modules/datasource/conan/index.spec.ts

Co-authored-by: Michael Kriese <michael.kriese@visualon.de>

* Update datasource.spec.ts

* fix null-check issue

Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
  • Loading branch information
RahulGautamSingh and viceice committed Jun 20, 2022
1 parent 69e3f51 commit 93dd940
Show file tree
Hide file tree
Showing 21 changed files with 94 additions and 95 deletions.
2 changes: 1 addition & 1 deletion lib/modules/datasource/bitbucket-tags/index.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ describe('modules/datasource/bitbucket-tags/index', () => {
depName: 'some/dep2',
});
expect(res).toMatchSnapshot();
expect(res.releases).toHaveLength(3);
expect(res?.releases).toHaveLength(3);
});
});

Expand Down
2 changes: 1 addition & 1 deletion lib/modules/datasource/cdnjs/index.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ describe('modules/datasource/cdnjs/index', () => {
});

it('throws for empty result', async () => {
httpMock.scope(baseUrl).get(pathFor('foo/bar')).reply(200, null);
httpMock.scope(baseUrl).get(pathFor('foo/bar')).reply(200, '}');
await expect(
getPkgReleases({
datasource: CdnJsDatasource.id,
Expand Down
16 changes: 8 additions & 8 deletions lib/modules/datasource/clojure/index.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -184,11 +184,11 @@ describe('modules/datasource/clojure/index', () => {
snapshots: [],
});

const { releases } = await get(
const { releases } = (await get(
'org.example:package',
baseUrl,
baseUrlCustom
);
))!;

expect(releases).toMatchObject([
{ version: '0.0.1' },
Expand All @@ -204,11 +204,11 @@ describe('modules/datasource/clojure/index', () => {
httpMock
.scope('https://failed_repo')
.get('/org/example/package/maven-metadata.xml')
.reply(404, null);
.reply(404, '}');
httpMock
.scope('https://unauthorized_repo')
.get('/org/example/package/maven-metadata.xml')
.reply(403, null);
.reply(403, '}');
httpMock
.scope('https://empty_repo')
.get('/org/example/package/maven-metadata.xml')
Expand All @@ -234,11 +234,11 @@ describe('modules/datasource/clojure/index', () => {
const base = baseUrl.replace('https', 'http');
mockGenericPackage({ base });

const { releases } = await get(
const { releases } = (await get(
'org.example:package',
'ftp://protocol_error_repo',
base
);
))!;

expect(releases).toMatchSnapshot();
});
Expand Down Expand Up @@ -285,7 +285,7 @@ describe('modules/datasource/clojure/index', () => {
const resB = await get('org.example:package', baseUrl.replace(/\/*$/, '/'));
expect(resA).not.toBeNull();
expect(resB).not.toBeNull();
expect(resA.releases).toEqual(resB.releases);
expect(resA?.releases).toEqual(resB?.releases);
});

it('returns null for invalid registryUrls', async () => {
Expand All @@ -306,7 +306,7 @@ describe('modules/datasource/clojure/index', () => {
.get('/maven2/org/example/package/maven-metadata.xml')
.reply(200, '###');

const { sourceUrl } = await get();
const { sourceUrl } = (await get())!;

expect(sourceUrl).toBe('https://github.com/example/test');
});
Expand Down
2 changes: 1 addition & 1 deletion lib/modules/datasource/conan/index.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ describe('modules/datasource/conan/index', () => {
httpMock
.scope(nonDefaultRegistryUrl)
.get('/v2/conans/search?q=fakepackage')
.reply(200, null);
.reply(200);
config.depName = 'fakepackage';
expect(
await getPkgReleases({
Expand Down
4 changes: 2 additions & 2 deletions lib/modules/datasource/crate/index.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ function setupGitMocks(delayMs?: number): { mockClone: jest.Mock<any, any> } {
.mockName('clone')
.mockImplementation(
async (_registryUrl: string, clonePath: string, _opts) => {
if (delayMs > 0) {
if (delayMs && delayMs > 0) {
await delay(delayMs);
}

Expand Down Expand Up @@ -114,7 +114,7 @@ describe('modules/datasource/crate/index', () => {
});

afterEach(async () => {
await tmpDir.cleanup();
await tmpDir?.cleanup();
tmpDir = null;
GlobalConfig.reset();
});
Expand Down
2 changes: 1 addition & 1 deletion lib/modules/datasource/dart/index.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const baseUrl = 'https://pub.dartlang.org/api/packages/';
describe('modules/datasource/dart/index', () => {
describe('getReleases', () => {
it('returns null for empty result', async () => {
httpMock.scope(baseUrl).get('/non_sense').reply(200, null);
httpMock.scope(baseUrl).get('/non_sense').reply(200, '}');
expect(
await getPkgReleases({
datasource: DartDatasource.id,
Expand Down
11 changes: 6 additions & 5 deletions lib/modules/datasource/datasource.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import * as httpMock from '../../../test/http-mock';
import { partial } from '../../../test/util';
import { EXTERNAL_HOST_ERROR } from '../../constants/error-messages';
import { Datasource } from './datasource';
import type { GetReleasesConfig, ReleaseResult } from './types';
Expand All @@ -12,13 +13,13 @@ class TestDatasource extends Datasource {

async getReleases(
getReleasesConfig: GetReleasesConfig
): Promise<ReleaseResult> {
): Promise<ReleaseResult | null> {
try {
await this.http.get(exampleUrl);
} catch (err) {
this.handleGenericErrors(err);
}
return Promise.resolve(undefined);
return Promise.resolve(null);
}
}

Expand All @@ -28,8 +29,8 @@ describe('modules/datasource/datasource', () => {

httpMock.scope(exampleUrl).get('/').reply(429);

await expect(testDatasource.getReleases(undefined)).rejects.toThrow(
EXTERNAL_HOST_ERROR
);
await expect(
testDatasource.getReleases(partial<GetReleasesConfig>({}))
).rejects.toThrow(EXTERNAL_HOST_ERROR);
});
});
2 changes: 1 addition & 1 deletion lib/modules/datasource/flutter-version/index.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ describe('modules/datasource/flutter-version/index', () => {
depName,
});
expect(res).toMatchSnapshot();
expect(res.releases).toHaveLength(31);
expect(res?.releases).toHaveLength(31);
});
});
});
6 changes: 3 additions & 3 deletions lib/modules/datasource/galaxy-collection/index.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ describe('modules/datasource/galaxy-collection/index', () => {
expect(res).toMatchSnapshot();
expect(res).not.toBeNull();
expect(res).toBeDefined();
expect(res.releases).toHaveLength(2);
expect(res?.releases).toHaveLength(2);
});

it('returns null for empty lookup', async () => {
Expand All @@ -124,7 +124,7 @@ describe('modules/datasource/galaxy-collection/index', () => {
expect(
await getPkgReleases({
datasource,
depName: null,
depName: '',
})
).toBeNull();
});
Expand Down Expand Up @@ -162,7 +162,7 @@ describe('modules/datasource/galaxy-collection/index', () => {
expect(res).toMatchSnapshot();
expect(res).not.toBeNull();
expect(res).toBeDefined();
expect(res.releases).toHaveLength(3);
expect(res?.releases).toHaveLength(3);
});
});
});
8 changes: 4 additions & 4 deletions lib/modules/datasource/git-refs/index.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ describe('modules/datasource/git-refs/index', () => {
it('returns nil if response is wrong', async () => {
simpleGit.mockReturnValue({
listRemote() {
return Promise.resolve(null) as Response<string>;
return Promise.resolve('') as Response<string>;
},
});
const versions = await getPkgReleases({
Expand All @@ -33,10 +33,10 @@ describe('modules/datasource/git-refs/index', () => {
return Promise.resolve('aabbccddeeff') as Response<string>;
},
});
const { releases } = await getPkgReleases({
const { releases } = (await getPkgReleases({
datasource,
depName,
});
}))!;
expect(releases).toBeEmpty();
});

Expand Down Expand Up @@ -65,7 +65,7 @@ describe('modules/datasource/git-refs/index', () => {
depName,
});
expect(versions).toMatchSnapshot();
const result = versions.releases.map((x) => x.version).sort();
const result = versions?.releases.map((x) => x.version).sort();
expect(result).toHaveLength(6);
});
});
Expand Down
2 changes: 1 addition & 1 deletion lib/modules/datasource/git-tags/index.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ describe('modules/datasource/git-tags/index', () => {
it('returns nil if response is wrong', async () => {
simpleGit.mockReturnValue({
listRemote() {
return Promise.resolve(null) as Response<string>;
return Promise.resolve('') as Response<string>;
},
});
const versions = await getPkgReleases({ datasource, depName });
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ describe('modules/datasource/github-releases/cache/cache-base', () => {
jest.resetAllMocks();
jest.spyOn(DateTime, 'now').mockReturnValue(now);
httpPostJson.mockImplementation(() => {
const resp = responses.shift();
const resp = responses.shift()!;
return resp instanceof Error
? Promise.reject(resp)
: Promise.resolve(resp);
Expand Down
2 changes: 1 addition & 1 deletion lib/modules/datasource/github-releases/common.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ describe('modules/datasource/github-releases/common', () => {
});

it('defaults to github.com', () => {
const sourceUrl = getSourceUrlBase(null);
const sourceUrl = getSourceUrlBase(undefined);
expect(sourceUrl).toBe('https://github.com/');
});
});
Expand Down
8 changes: 4 additions & 4 deletions lib/modules/datasource/github-releases/digest.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ describe('modules/datasource/github-releases/digest', () => {
release,
'test-digest'
);
expect(digestAsset.assetName).toBe('SHASUMS.txt');
expect(digestAsset.digestedFileName).toBe('linux-amd64.tar.gz');
expect(digestAsset?.assetName).toBe('SHASUMS.txt');
expect(digestAsset?.digestedFileName).toBe('linux-amd64.tar.gz');
});

it('returns null when not found in digest file asset', async () => {
Expand Down Expand Up @@ -61,8 +61,8 @@ describe('modules/datasource/github-releases/digest', () => {
release,
contentDigest
);
expect(digestAsset.assetName).toBe('asset.zip');
expect(digestAsset.digestedFileName).toBeUndefined();
expect(digestAsset?.assetName).toBe('asset.zip');
expect(digestAsset?.digestedFileName).toBeUndefined();
});

it('returns null when no assets available', async () => {
Expand Down
6 changes: 3 additions & 3 deletions lib/modules/datasource/github-tags/index.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ describe('modules/datasource/github-tags/index', () => {
.get(`/repos/${packageName}/commits?per_page=1`)
.reply(200, [{ sha: 'abcdef' }]);

const res = await github.getDigest({ packageName }, null);
const res = await github.getDigest({ packageName }, undefined);

expect(res).toBe('abcdef');
});
Expand All @@ -51,7 +51,7 @@ describe('modules/datasource/github-tags/index', () => {
.get(`/repos/${packageName}/commits?per_page=1`)
.reply(200, []);

const res = await github.getDigest({ packageName }, null);
const res = await github.getDigest({ packageName }, undefined);

expect(res).toBeNull();
});
Expand Down Expand Up @@ -86,7 +86,7 @@ describe('modules/datasource/github-tags/index', () => {

const res = await github.getDigest(
{ packageName, registryUrl: githubEnterpriseApiHost },
null
undefined
);

expect(res).toBe('abcdef');
Expand Down
2 changes: 1 addition & 1 deletion lib/modules/datasource/gitlab-packages/index.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ describe('modules/datasource/gitlab-packages/index', () => {
depName: 'user/project1:mypkg',
});
expect(res).toMatchSnapshot();
expect(res.releases).toHaveLength(3);
expect(res?.releases).toHaveLength(3);
});

it('returns null for 404', async () => {
Expand Down
4 changes: 2 additions & 2 deletions lib/modules/datasource/gitlab-releases/index.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ describe('modules/datasource/gitlab-releases/index', () => {
depName: 'some/dep2',
});
expect(res).toMatchSnapshot();
expect(res.releases).toHaveLength(2);
expect(res?.releases).toHaveLength(2);
});

it('returns releases from default registry', async () => {
Expand All @@ -39,7 +39,7 @@ describe('modules/datasource/gitlab-releases/index', () => {
depName: 'some/dep2',
});
expect(res).toMatchSnapshot();
expect(res.releases).toHaveLength(2);
expect(res?.releases).toHaveLength(2);
});

it('return null if not found', async () => {
Expand Down
9 changes: 4 additions & 5 deletions lib/modules/datasource/gitlab-tags/index.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ describe('modules/datasource/gitlab-tags/index', () => {
depName: 'some/dep2',
});
expect(res).toMatchSnapshot();
expect(res.releases).toHaveLength(3);
expect(res?.releases).toHaveLength(3);
});

it('returns tags from custom registry in sub path', async () => {
Expand Down Expand Up @@ -75,7 +75,7 @@ describe('modules/datasource/gitlab-tags/index', () => {
depName: 'some/dep2',
});
expect(res).toMatchSnapshot();
expect(res.releases).toHaveLength(2);
expect(res?.releases).toHaveLength(2);
});
});

Expand Down Expand Up @@ -120,11 +120,10 @@ describe('modules/datasource/gitlab-tags/index', () => {
});

it('returns null from gitlab installation with no commits', async () => {
const body = [];
httpMock
.scope('https://gitlab.company.com')
.get('/api/v4/projects/some%2Fdep2/repository/commits?per_page=1')
.reply(200, body);
.reply(200, []);
const res = await getDigest({
datasource,
registryUrls: ['https://gitlab.company.com/api/v4/'],
Expand All @@ -137,7 +136,7 @@ describe('modules/datasource/gitlab-tags/index', () => {
httpMock
.scope('https://gitlab.company.com')
.get('/api/v4/projects/some%2Fdep2/repository/commits/unknown-branch')
.reply(404, null);
.reply(404, '}');
const res = await getDigest(
{
datasource,
Expand Down
10 changes: 5 additions & 5 deletions lib/modules/datasource/go/releases-direct.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ describe('modules/datasource/go/releases-direct', () => {
];
for (const pkg of packages) {
const res = await datasource.getReleases(pkg);
expect(res.releases).toBeEmpty();
expect(res?.releases).toBeEmpty();
}
expect(githubGetTags).toHaveBeenCalledTimes(3);
});
Expand Down Expand Up @@ -240,8 +240,8 @@ describe('modules/datasource/go/releases-direct', () => {
for (const pkg of packages) {
const prefix = pkg.packageName.split('/')[3];
const result = await datasource.getReleases(pkg);
expect(result.releases).toHaveLength(1);
expect(result.releases[0].version.startsWith(prefix)).toBeFalse();
expect(result?.releases).toHaveLength(1);
expect(result?.releases[0].version.startsWith(prefix)).toBeFalse();
}
});

Expand Down Expand Up @@ -270,7 +270,7 @@ describe('modules/datasource/go/releases-direct', () => {

for (const pkg of packages) {
const result = await datasource.getReleases(pkg);
expect(result.releases).toHaveLength(0);
expect(result?.releases).toHaveLength(0);
}
});

Expand All @@ -292,7 +292,7 @@ describe('modules/datasource/go/releases-direct', () => {
});

const result = await datasource.getReleases(pkg);
expect(result.releases).toEqual([
expect(result?.releases).toEqual([
{ version: 'v2.0.0', gitRef: 'b/v2.0.0' },
{ version: 'v3.0.0', gitRef: 'b/v3.0.0' },
]);
Expand Down

0 comments on commit 93dd940

Please sign in to comment.