Skip to content
Snippets Groups Projects
Unverified Commit ef174ceb authored by Sergei Zharinov's avatar Sergei Zharinov Committed by GitHub
Browse files

feat(packagist): Extract PHP constraints (#19875)


Co-authored-by: default avatarRhys Arkins <rhys@arkins.net>
parent bf6ac7d7
No related branches found
No related tags found
No related merge requests found
...@@ -144,6 +144,32 @@ describe('modules/datasource/packagist/schema', () => { ...@@ -144,6 +144,32 @@ describe('modules/datasource/packagist/schema', () => {
}) })
).toEqual([{ version: '1.2.3' }]); ).toEqual([{ version: '1.2.3' }]);
}); });
it('expands minified fields', () => {
expect(
parsePackagesResponse('foo/bar', {
packages: {
'foo/bar': [
{ version: '3.3.3', require: { php: '^8.0' } },
{ version: '2.2.2' },
{ version: '1.1.1' },
{ version: '0.0.4', require: { php: '^7.0' } },
{ version: '0.0.3' },
{ version: '0.0.2', require: '__unset' },
{ version: '0.0.1' },
],
},
})
).toEqual([
{ version: '3.3.3', require: { php: '^8.0' } },
{ version: '2.2.2', require: { php: '^8.0' } },
{ version: '1.1.1', require: { php: '^8.0' } },
{ version: '0.0.4', require: { php: '^7.0' } },
{ version: '0.0.3', require: { php: '^7.0' } },
{ version: '0.0.2' },
{ version: '0.0.1' },
] satisfies ComposerRelease[]);
});
}); });
describe('parsePackagesResponses', () => { describe('parsePackagesResponses', () => {
...@@ -164,6 +190,7 @@ describe('modules/datasource/packagist/schema', () => { ...@@ -164,6 +190,7 @@ describe('modules/datasource/packagist/schema', () => {
time: '111', time: '111',
homepage: 'https://example.com/1', homepage: 'https://example.com/1',
source: { url: 'git@example.com:foo/bar-1' }, source: { url: 'git@example.com:foo/bar-1' },
require: { php: '^8.0' },
}, },
], ],
'baz/qux': [ 'baz/qux': [
...@@ -184,6 +211,7 @@ describe('modules/datasource/packagist/schema', () => { ...@@ -184,6 +211,7 @@ describe('modules/datasource/packagist/schema', () => {
time: '333', time: '333',
homepage: 'https://example.com/3', homepage: 'https://example.com/3',
source: { url: 'git@example.com:foo/bar-3' }, source: { url: 'git@example.com:foo/bar-3' },
require: { php: '^7.0' },
}, },
], ],
'baz/qux': [ 'baz/qux': [
...@@ -201,8 +229,18 @@ describe('modules/datasource/packagist/schema', () => { ...@@ -201,8 +229,18 @@ describe('modules/datasource/packagist/schema', () => {
homepage: 'https://example.com/1', homepage: 'https://example.com/1',
sourceUrl: 'git@example.com:foo/bar-1', sourceUrl: 'git@example.com:foo/bar-1',
releases: [ releases: [
{ version: '1.1.1', gitRef: 'v1.1.1', releaseTimestamp: '111' }, {
{ version: '3.3.3', gitRef: 'v3.3.3', releaseTimestamp: '333' }, version: '1.1.1',
gitRef: 'v1.1.1',
releaseTimestamp: '111',
constraints: { php: ['^8.0'] },
},
{
version: '3.3.3',
gitRef: 'v3.3.3',
releaseTimestamp: '333',
constraints: { php: ['^7.0'] },
},
], ],
} satisfies ReleaseResult); } satisfies ReleaseResult);
}); });
......
...@@ -54,6 +54,12 @@ export const ComposerRelease = z ...@@ -54,6 +54,12 @@ export const ComposerRelease = z
.nullable() .nullable()
.catch(null), .catch(null),
time: z.string().nullable().catch(null), time: z.string().nullable().catch(null),
require: z
.object({
php: z.string(),
})
.nullable()
.catch(null),
}) })
.partial() .partial()
); );
...@@ -106,6 +112,10 @@ export function parsePackagesResponses( ...@@ -106,6 +112,10 @@ export function parsePackagesResponses(
dep.releaseTimestamp = composerRelease.time; dep.releaseTimestamp = composerRelease.time;
} }
if (composerRelease.require?.php) {
dep.constraints = { php: [composerRelease.require.php] };
}
releases.push(dep); releases.push(dep);
if (!homepage && composerRelease.homepage) { if (!homepage && composerRelease.homepage) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment