Files
Martin Costello ea1c9a7bf3 feat(datasource/github-runners): add xcode-27 (#47116)
* feat(datasource/github-runners): add xcode-27

Add `xcode-27` and `xcode-27-xlarge` runner labels to the datasource.

* feat(datasource/github-runners): add release date

Add release date for the XCode 27 runners.
2026-10-19 16:59:55 +00:00

119 lines
3.6 KiB
TypeScript

import { getPkgReleases } from '../index.ts';
import { GithubRunnersDatasource } from './index.ts';
describe('modules/datasource/github-runners/index', () => {
describe('getReleases', () => {
it('returns releases for Ubuntu', async () => {
const res = await getPkgReleases({
datasource: GithubRunnersDatasource.id,
packageName: 'ubuntu',
});
expect(res).toMatchObject({
releases: [
{ version: '16.04', isDeprecated: true },
{ version: '18.04', isDeprecated: true },
{ version: '20.04', isDeprecated: true },
{ version: '22.04-arm' },
{ version: '22.04' },
{ version: '24.04-arm' },
{ version: '24.04' },
{ version: '26.04-arm' },
{ version: '26.04' },
],
sourceUrl: 'https://github.com/actions/runner-images',
});
});
it('returns releases for macOS', async () => {
const res = await getPkgReleases({
datasource: GithubRunnersDatasource.id,
packageName: 'macos',
});
expect(res).toMatchObject({
releases: [
{ version: '10.15', isDeprecated: true },
{ version: '11', isDeprecated: true },
{ version: '12-large', isDeprecated: true },
{ version: '12', isDeprecated: true },
{ version: '13-xlarge', isDeprecated: true },
{ version: '13-large', isDeprecated: true },
{ version: '13', isDeprecated: true },
{ version: '14-xlarge' },
{ version: '14-large' },
{ version: '14' },
{ version: '15-xlarge' },
{ version: '15-large' },
{ version: '15-intel' },
{ version: '15' },
{ version: '26-xlarge' },
{ version: '26-intel' },
{ version: '26' },
],
sourceUrl: 'https://github.com/actions/runner-images',
});
});
it('returns releases for Windows', async () => {
const res = await getPkgReleases({
datasource: GithubRunnersDatasource.id,
packageName: 'windows',
});
expect(res).toMatchObject({
releases: [
{ version: '11-arm' },
{ version: '2016', isDeprecated: true },
{ version: '2019', isDeprecated: true },
{ version: '2022' },
{ version: '2025' },
],
sourceUrl: 'https://github.com/actions/runner-images',
});
});
it('returns releases for Xcode', async () => {
const res = await getPkgReleases({
datasource: GithubRunnersDatasource.id,
packageName: 'xcode',
});
expect(res).toMatchObject({
releases: [
{
version: '27-xlarge',
releaseTimestamp: '2026-10-15T00:00:00.000Z',
},
{ version: '27', releaseTimestamp: '2026-10-15T00:00:00.000Z' },
],
sourceUrl: 'https://github.com/actions/runner-images',
});
});
it('returns null if package is unknown', async () => {
const res = await getPkgReleases({
datasource: GithubRunnersDatasource.id,
packageName: 'unknown',
});
expect(res).toBeNull();
});
it.each(['ubuntu', 'macos', 'windows'])(
'every %s release has a releaseTimestamp',
async (packageName) => {
const res = await getPkgReleases({
datasource: GithubRunnersDatasource.id,
packageName,
});
expect(res?.releases.length).toBeGreaterThan(0);
for (const release of res!.releases) {
expect(release.releaseTimestamp).toBeString();
}
},
);
});
});