Skip to content

Commit

Permalink
fix(git-refs): remove filtering to get the hash for HEAD
Browse files Browse the repository at this point in the history
  • Loading branch information
rarkins committed May 2, 2020
1 parent e5d4ff4 commit ac89ae7
Show file tree
Hide file tree
Showing 6 changed files with 143 additions and 57 deletions.
53 changes: 53 additions & 0 deletions lib/datasource/git-refs/__fixtures__/ls-remote-1.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
a9920c014aebc28dc1b23e7efcc006d0455cc710 HEAD
2e24e927538bbc03cc3cd946834c8f5fe333f32c refs/heads/feat/slim-image
a9920c014aebc28dc1b23e7efcc006d0455cc710 refs/heads/master
a9920c014aebc28dc1b23e7efcc006d045512345 refs/heads/v1.0.0
c152f7c4675575e498113873fd5538ec475b1dba refs/pull/11/head
1aff0dda91369bd82143a15261bedc0833f46c65 refs/pull/12/head
09ba8084c4ee9c6de266b87c2bc85d71734e1571 refs/pull/13/head
de3bbf7b8c1384fa1d24af5ed9ffdac368fac9e8 refs/pull/14/head
80d9de64dc022a0f6c41a115950641b6622e86cf refs/pull/15/head
b7cddcd5be69ce2d1749980ddefb86070fccdc9a refs/pull/16/head
6a770bd6a2a81a6347799cb833962f9d0fd439e6 refs/pull/17/head
53daf288f5e3c8d34ee925a76c6a73adee7403b4 refs/pull/18/head
528c678918d16b87115643f726e912e9c7396ec0 refs/pull/19/head
3c2b37bd9e899baa5227142c0c547cf177671645 refs/pull/2/head
46fd703d4738905cd55e1c5c36a70e5d43432b9c refs/pull/20/head
47011e12b263fc8a0af62f4b47da54d453d00799 refs/pull/21/head
9a211e7190dd5e8c986bd935f5cc2dcc1396c7bd refs/pull/22/head
dd79b452c926c34999dabcddd83c94cb1bdace76 refs/pull/23/head
3e32dce65fdc18bccad7b554a9ae36284c48fcc0 refs/pull/24/head
c3733140359aa6d84f2f0f78a5d3adbbb113e4a5 refs/pull/25/head
2857e2efafe7c4d9dec7e903a4d96275d0f8dd23 refs/pull/26/head
da2a01d1c0d02511858931e25b258ad72dc335d2 refs/pull/27/head
2e24e927538bbc03cc3cd946834c8f5fe333f32c refs/pull/28/head
06e340dc52cd04127a802ab2c674b362235a3dcc refs/pull/29/head
d9a0078d93db47a21792885ebab5599115b7b085 refs/pull/3/head
b98aa987e4766397ecff8d1dca29cddfd23ea0ab refs/pull/30/head
51998bf4708fcfcc255d55a470e383fdbdb8e3cd refs/pull/32/head
bab517085911449a7980d4c54ca70d797630cd52 refs/pull/33/head
3f0a0348a80a75dd5f53be7b5f0b64b3458bfcf9 refs/pull/34/head
7229427978e7867a2a37b8b985d932340f5af97c refs/pull/35/head
e7b649ef92dda134adfb925428010c979cff1c44 refs/pull/36/head
4b404b05557b7dc9a1d812754d209d55839ad496 refs/pull/37/head
c0b438b1da1bb850bb8fbf1b0f5f017dfa92db4e refs/pull/38/head
932bae68044828c4413966def625a91782ca937d refs/pull/39/head
fc6a507343b85ff1968533c6149ab4a4f271731c refs/pull/4/head
fbc3cc126c5353d650fe39d610b5316dfe5a706e refs/pull/40/head
ec73e54242b63588cf40690decf979c2868b69d4 refs/pull/41/head
49a5d71dbf217bff9283a8b9ff3de93eb94f5354 refs/pull/42/head
c9b07c87f0a49bce004085fd9ef7db8299e3864c refs/pull/5/head
85ba9bf3bb4d809b7ed5bfe32640066918410da9 refs/pull/7/head
e55fe6d4ce81233783d1f49beaa319aa3e450fe2 refs/pull/8/head
0be9ffb1ae0c8d0846cd88b58dfef42d74674673 refs/tags/v1.0.0
7b756026fb2de270240a889a413e7e3a9d4d4d85 refs/tags/v1.0.0^{}
281fbfb58990ec98b237a923d67904c102bec34c refs/tags/v1.0.1
e173183f932ba8a31d0e4f23cc1070e8ebfa59d6 refs/tags/v1.0.1^{}
9cb93e0b236385a4e2efd089d7c6a458f5ff321f refs/tags/v1.0.2
3936a6bced3587dc9fd464b0a910e0dfd4cfe10d refs/tags/v1.0.2^{}
8b0d0e0aec21ea059448ef0255387dbb82c61973 refs/tags/v1.0.3
125ca9f3df4151e50046e5327ecb29ec4c13efab refs/tags/v1.0.3^{}
2b52829c7c1bd65b3501c450849c53b90b11fa0e refs/tags/v1.0.4
3ed9e7d7094fd4ee7751c24a3e6b706060f461ff refs/tags/v1.0.4^{}
2d138c34e4c6939d0a8686943e851c6528aa04db refs/tags/v1.0.5
6d7a933c2e6b7b39e992b1f93b6b42de083b28f0 refs/tags/v1.0.5^{}
37 changes: 28 additions & 9 deletions lib/datasource/git-refs/__snapshots__/index.spec.ts.snap
Original file line number Diff line number Diff line change
@@ -1,22 +1,41 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`datasource/git-refs getDigest() returns digest for HEAD 1`] = `"a9920c014aebc28dc1b23e7efcc006d0455cc710"`;

exports[`datasource/git-refs getDigest() returns digest for tag 1`] = `"2b52829c7c1bd65b3501c450849c53b90b11fa0e"`;

exports[`datasource/git-refs getReleases returns versions filtered from tags 1`] = `
Object {
"releases": Array [
Object {
"gitRef": "0.0.1",
"newDigest": "commithash1",
"version": "0.0.1",
"gitRef": "v1.0.0",
"newDigest": "a9920c014aebc28dc1b23e7efcc006d045512345",
"version": "v1.0.0",
},
Object {
"gitRef": "v1.0.1",
"newDigest": "281fbfb58990ec98b237a923d67904c102bec34c",
"version": "v1.0.1",
},
Object {
"gitRef": "v1.0.2",
"newDigest": "9cb93e0b236385a4e2efd089d7c6a458f5ff321f",
"version": "v1.0.2",
},
Object {
"gitRef": "v1.0.3",
"newDigest": "8b0d0e0aec21ea059448ef0255387dbb82c61973",
"version": "v1.0.3",
},
Object {
"gitRef": "v0.0.2",
"newDigest": "commithash2",
"version": "v0.0.2",
"gitRef": "v1.0.4",
"newDigest": "2b52829c7c1bd65b3501c450849c53b90b11fa0e",
"version": "v1.0.4",
},
Object {
"gitRef": "v0.0.3",
"newDigest": "commithash4",
"version": "v0.0.3",
"gitRef": "v1.0.5",
"newDigest": "2d138c34e4c6939d0a8686943e851c6528aa04db",
"version": "v1.0.5",
},
],
"sourceUrl": "https://github.com/example/example",
Expand Down
32 changes: 15 additions & 17 deletions lib/datasource/git-refs/index.spec.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import fs from 'fs-extra';
import _simpleGit from 'simple-git/promise';
import { getDigest, getReleases } from '.';

Expand All @@ -6,6 +7,11 @@ const simpleGit: any = _simpleGit;

const lookupName = 'https://github.com/example/example.git';

const lsRemote1 = fs.readFileSync(
'lib/datasource/git-refs/__fixtures__/ls-remote-1.txt',
'utf8'
);

describe('datasource/git-refs', () => {
beforeEach(() => global.renovateCache.rmAll());
describe('getReleases', () => {
Expand All @@ -30,9 +36,7 @@ describe('datasource/git-refs', () => {
it('returns versions filtered from tags', async () => {
simpleGit.mockReturnValue({
listRemote() {
return Promise.resolve(
'commithash0\tHEAD\ncommithash1\trefs/tags/0.0.1\ncommithash2\trefs/tags/v0.0.2\ncommithash3\trefs/tags/v0.0.2^{}\ncommithash4\trefs/heads/v0.0.3\ncommithash5\trefs/tags/v0.0.3\n'
);
return Promise.resolve(lsRemote1);
},
});

Expand All @@ -41,51 +45,45 @@ describe('datasource/git-refs', () => {
});
expect(versions).toMatchSnapshot();
const result = versions.releases.map((x) => x.version).sort();
expect(result).toEqual(['0.0.1', 'v0.0.2', 'v0.0.3']);
expect(result).toHaveLength(6);
});
});
describe('getDigest()', () => {
it('returns null if not found', async () => {
simpleGit.mockReturnValue({
listRemote() {
return Promise.resolve(
'commithash0\tHEAD\ncommithash1\trefs/tags/0.0.1\ncommithash2\trefs/tags/v0.0.2\ncommithash3\trefs/tags/v0.0.2^{}\ncommithash4\trefs/heads/v0.0.3\ncommithash5\trefs/tags/v0.0.3\n'
);
return Promise.resolve(lsRemote1);
},
});
const digest = await getDigest(
{ lookupName: 'a tag to look up' },
'v1.0.2'
'v2.0.0'
);
expect(digest).toBeNull();
});
it('returns digest for tag', async () => {
simpleGit.mockReturnValue({
listRemote() {
return Promise.resolve(
'commithash0\tHEAD\ncommithash1\trefs/tags/0.0.1\ncommithash2\trefs/tags/v0.0.2\ncommithash3\trefs/tags/v0.0.2^{}\ncommithash4\trefs/heads/v0.0.3\ncommithash5\trefs/tags/v0.0.3\n'
);
return Promise.resolve(lsRemote1);
},
});
const digest = await getDigest(
{ lookupName: 'a tag to look up' },
'v0.0.2'
'v1.0.4'
);
expect(digest).toEqual('commithash2');
expect(digest).toMatchSnapshot();
});
it('returns digest for HEAD', async () => {
simpleGit.mockReturnValue({
listRemote() {
return Promise.resolve(
'commithash0\tHEAD\ncommithash1\trefs/tags/0.0.1\ncommithash2\trefs/tags/v0.0.2\ncommithash3\trefs/tags/v0.0.2^{}\ncommithash4\trefs/heads/v0.0.3\ncommithash5\trefs/tags/v0.0.3\n'
);
return Promise.resolve(lsRemote1);
},
});
const digest = await getDigest(
{ lookupName: 'another tag to look up' },
undefined
);
expect(digest).toEqual('commithash0');
expect(digest).toMatchSnapshot();
});
});
});
12 changes: 3 additions & 9 deletions lib/datasource/git-refs/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,7 @@ export async function getRawRefs({
}

// fetch remote tags
const lsRemote = await git.listRemote([
'--tags',
'--heads',
'--refs',
lookupName,
]);

const lsRemote = await git.listRemote([lookupName]);
if (!lsRemote) {
return null;
}
Expand Down Expand Up @@ -71,8 +65,8 @@ export async function getRawRefs({
// istanbul ignore next
return null;
})
.filter(Boolean);

.filter(Boolean)
.filter((ref) => ref.type !== 'pull' && !ref.value.endsWith('^{}'));
await renovateCache.set(cacheNamespace, lookupName, refs, cacheMinutes);
return refs;
} catch (err) {
Expand Down
36 changes: 30 additions & 6 deletions lib/datasource/git-tags/__snapshots__/index.spec.ts.snap
Original file line number Diff line number Diff line change
@@ -1,17 +1,41 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`datasource/git-tags getDigest() returns digest for HEAD 1`] = `"a9920c014aebc28dc1b23e7efcc006d0455cc710"`;

exports[`datasource/git-tags getDigest() returns digest for tag 1`] = `"9cb93e0b236385a4e2efd089d7c6a458f5ff321f"`;

exports[`datasource/git-tags getReleases returns versions filtered from tags 1`] = `
Object {
"releases": Array [
Object {
"gitRef": "0.0.1",
"newDigest": "commithash1",
"version": "0.0.1",
"gitRef": "v1.0.0",
"newDigest": "0be9ffb1ae0c8d0846cd88b58dfef42d74674673",
"version": "v1.0.0",
},
Object {
"gitRef": "v1.0.1",
"newDigest": "281fbfb58990ec98b237a923d67904c102bec34c",
"version": "v1.0.1",
},
Object {
"gitRef": "v1.0.2",
"newDigest": "9cb93e0b236385a4e2efd089d7c6a458f5ff321f",
"version": "v1.0.2",
},
Object {
"gitRef": "v1.0.3",
"newDigest": "8b0d0e0aec21ea059448ef0255387dbb82c61973",
"version": "v1.0.3",
},
Object {
"gitRef": "v1.0.4",
"newDigest": "2b52829c7c1bd65b3501c450849c53b90b11fa0e",
"version": "v1.0.4",
},
Object {
"gitRef": "v0.0.2",
"newDigest": "commithash2",
"version": "v0.0.2",
"gitRef": "v1.0.5",
"newDigest": "2d138c34e4c6939d0a8686943e851c6528aa04db",
"version": "v1.0.5",
},
],
"sourceUrl": "https://github.com/example/example",
Expand Down
30 changes: 14 additions & 16 deletions lib/datasource/git-tags/index.spec.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import fs from 'fs-extra';
import _simpleGit from 'simple-git/promise';
import { getDigest, getReleases } from '.';

Expand All @@ -6,6 +7,11 @@ const simpleGit: any = _simpleGit;

const lookupName = 'https://github.com/example/example.git';

const lsRemote1 = fs.readFileSync(
'lib/datasource/git-refs/__fixtures__/ls-remote-1.txt',
'utf8'
);

describe('datasource/git-tags', () => {
beforeEach(() => global.renovateCache.rmAll());
describe('getReleases', () => {
Expand All @@ -30,9 +36,7 @@ describe('datasource/git-tags', () => {
it('returns versions filtered from tags', async () => {
simpleGit.mockReturnValue({
listRemote() {
return Promise.resolve(
'commithash1\trefs/tags/0.0.1\ncommithash2\trefs/tags/v0.0.2\ncommithash3\trefs/tags/v0.0.2^{}\n'
);
return Promise.resolve(lsRemote1);
},
});

Expand All @@ -46,44 +50,38 @@ describe('datasource/git-tags', () => {
it('returns null if not found', async () => {
simpleGit.mockReturnValue({
listRemote() {
return Promise.resolve(
'commithash0\tHEAD\ncommithash1\trefs/tags/0.0.1\ncommithash2\trefs/tags/v0.0.2\ncommithash3\trefs/tags/v0.0.2^{}\ncommithash4\trefs/heads/v0.0.3\ncommithash5\trefs/tags/v0.0.3\n'
);
return Promise.resolve(lsRemote1);
},
});
const digest = await getDigest(
{ lookupName: 'a tag to look up' },
'v1.0.2'
'notfound'
);
expect(digest).toBeNull();
});
it('returns digest for tag', async () => {
simpleGit.mockReturnValue({
listRemote() {
return Promise.resolve(
'commithash0\tHEAD\ncommithash1\trefs/tags/0.0.1\ncommithash2\trefs/tags/v0.0.2\ncommithash3\trefs/tags/v0.0.2^{}\ncommithash4\trefs/heads/v0.0.3\ncommithash5\trefs/tags/v0.0.3\n'
);
return Promise.resolve(lsRemote1);
},
});
const digest = await getDigest(
{ lookupName: 'a tag to look up' },
'v0.0.2'
'v1.0.2'
);
expect(digest).toEqual('commithash2');
expect(digest).toMatchSnapshot();
});
it('returns digest for HEAD', async () => {
simpleGit.mockReturnValue({
listRemote() {
return Promise.resolve(
'commithash0\tHEAD\ncommithash1\trefs/tags/0.0.1\ncommithash2\trefs/tags/v0.0.2\ncommithash3\trefs/tags/v0.0.2^{}\ncommithash4\trefs/heads/v0.0.3\ncommithash5\trefs/tags/v0.0.3\n'
);
return Promise.resolve(lsRemote1);
},
});
const digest = await getDigest(
{ lookupName: 'another tag to look up' },
undefined
);
expect(digest).toEqual('commithash0');
expect(digest).toMatchSnapshot();
});
});
});

0 comments on commit ac89ae7

Please sign in to comment.