mirror of
https://github.com/renovatebot/renovate.git
synced 2026-10-27 07:50:47 +00:00
55a7341be2
* test(manager): close azure-pipelines, bundler and cocoapods gaps Adds a pipeline whose step task is not versioned, so nothing is extracted, and a gem lock line carrying no version, which is skipped. Marks four guards that cannot be false: `extractContainer()` always returns a dep, `getLockFilePath()` always returns a path, and the cocoapods dep name, spec name and git account all derive from values their enclosing check already proved present. Co-Authored-By: Claude Opus 5 <michael.kriese+claude-code@mend.io> * test(manager): close cargo, composer and cpanfile gaps Adds a composer repository map that disables something other than packagist, which is dropped rather than recorded. Marks five guards: the cargo warning only fires for a crate dep and its retry only runs when a dep was already current, a gitlab rule without a token never passes the auth check, and both cpanfile handlers run only once their match produced a value. Two implicit elses stay counted, in the cargo version resolver and the composer repository mapper, since a coverage-ignore hint does not attach to an `else if`. Co-Authored-By: Claude Opus 5 <michael.kriese+claude-code@mend.io> * test(manager): close deps-edn, docker-compose and dockerfile gaps Adds three extractions: a deps.edn alias whose value is not a map, a compose extension carrying no image, and a dockerfile escape directive naming a character other than a backtick, which leaves the default in place. Marks the deps-edn repository name check, since object keys are always strings, and notes the repository spec chain, where a coverage-ignore hint does not attach to an `else if`. Co-Authored-By: Claude Opus 5 <michael.kriese+claude-code@mend.io> * test(manager/flux): close the flux coverage gaps Adds two GitRepository resources whose url is ssh rather than http, one pinned to a tag and one to a commit. Neither yields a source url, since only http urls can be turned into one. Marks the Kustomization image guard: the schema rejects an image without a name, so `extractImage()` cannot return null there. Co-Authored-By: Claude Opus 5 <michael.kriese+claude-code@mend.io> * test(manager): mark github-actions, gitlabci and glasskube guards None of these six needs a test. A parsed action ref is either a docker or a repository ref, `getDep()` always returns a dep for a job container and a service, and the remaining three need a listed file that cannot be read, a listed file that yields no deps, or a manifest whose repositories match no name. The glasskube resource kind chain stays counted, since a coverage-ignore hint does not attach to an `else if`. Co-Authored-By: Claude Opus 5 <michael.kriese+claude-code@mend.io> * test(manager): mark gomod and gradle-wrapper guards Four guards that need setups no test provides: a removed dep that is not added back, a go.mod the replace massaging leaves unchanged, and a daemon-jvm file carrying no toolchain version. A parsed go directive always yields a version. The additional-dependency count chain stays counted, since a coverage-ignore hint does not attach to an `else if`. Co-Authored-By: Claude Opus 5 <michael.kriese+claude-code@mend.io> --------- Co-authored-by: Claude Opus 5 <michael.kriese+claude-code@mend.io>
120 lines
3.5 KiB
TypeScript
120 lines
3.5 KiB
TypeScript
import { Repos, ReposArray, ReposRecord } from './schema.ts';
|
|
|
|
describe('modules/manager/composer/schema', () => {
|
|
describe('ReposRecord', () => {
|
|
it('parses default values', () => {
|
|
expect(ReposRecord.parse({})).toEqual([]);
|
|
});
|
|
|
|
it('ignores a disabled repository that is not packagist', () => {
|
|
expect(ReposRecord.parse({ 'some-other-repo': false })).toEqual([]);
|
|
});
|
|
|
|
it('parses repositories', () => {
|
|
expect(
|
|
ReposRecord.parse({
|
|
wpackagist: { type: 'composer', url: 'https://wpackagist.org' },
|
|
someGit: { type: 'vcs', url: 'https://some-vcs.com' },
|
|
somePath: { type: 'path', url: '/some/path' },
|
|
packagist: false,
|
|
'packagist.org': false,
|
|
foo: 'bar',
|
|
}),
|
|
).toEqual([
|
|
{ type: 'composer', url: 'https://wpackagist.org' },
|
|
{ name: 'someGit', type: 'git', url: 'https://some-vcs.com' },
|
|
{ name: 'somePath', type: 'path', url: '/some/path' },
|
|
{ type: 'disable-packagist' },
|
|
{ type: 'disable-packagist' },
|
|
]);
|
|
});
|
|
});
|
|
|
|
describe('ReposArray', () => {
|
|
it('parses default values', () => {
|
|
expect(ReposArray.parse([])).toEqual([]);
|
|
});
|
|
|
|
it('parses repositories', () => {
|
|
expect(
|
|
ReposArray.parse([
|
|
{
|
|
type: 'composer',
|
|
url: 'https://wpackagist.org',
|
|
},
|
|
{ name: 'someGit', type: 'vcs', url: 'https://some-vcs.com' },
|
|
{ name: 'somePath', type: 'path', url: '/some/path' },
|
|
{ packagist: false },
|
|
{ 'packagist.org': false },
|
|
{ foo: 'bar' },
|
|
]),
|
|
).toEqual([
|
|
{ type: 'composer', url: 'https://wpackagist.org' },
|
|
{ name: 'someGit', type: 'git', url: 'https://some-vcs.com' },
|
|
{ name: 'somePath', type: 'path', url: '/some/path' },
|
|
{ type: 'disable-packagist' },
|
|
{ type: 'disable-packagist' },
|
|
]);
|
|
});
|
|
});
|
|
|
|
describe('Repos', () => {
|
|
it('parses default values', () => {
|
|
expect(Repos.parse(null)).toEqual({
|
|
pathRepos: {},
|
|
gitRepos: {},
|
|
registryUrls: null,
|
|
});
|
|
});
|
|
|
|
it('parses repositories', () => {
|
|
expect(
|
|
Repos.parse([
|
|
{
|
|
name: 'wpackagist',
|
|
type: 'composer',
|
|
url: 'https://wpackagist.org',
|
|
},
|
|
{ name: 'someGit', type: 'vcs', url: 'https://some-vcs.com' },
|
|
{ name: 'somePath', type: 'path', url: '/some/path' },
|
|
]),
|
|
).toEqual({
|
|
pathRepos: {
|
|
somePath: { name: 'somePath', type: 'path', url: '/some/path' },
|
|
},
|
|
registryUrls: ['https://wpackagist.org', 'https://repo.packagist.org'],
|
|
gitRepos: {
|
|
someGit: {
|
|
name: 'someGit',
|
|
type: 'git',
|
|
url: 'https://some-vcs.com',
|
|
},
|
|
},
|
|
});
|
|
});
|
|
|
|
it(`parses repositories with packagist disabled`, () => {
|
|
expect(
|
|
Repos.parse({
|
|
wpackagist: { type: 'composer', url: 'https://wpackagist.org' },
|
|
someGit: { type: 'vcs', url: 'https://some-vcs.com' },
|
|
somePath: { type: 'path', url: '/some/path' },
|
|
packagist: false,
|
|
}),
|
|
).toEqual({
|
|
pathRepos: {
|
|
somePath: { name: 'somePath', type: 'path', url: '/some/path' },
|
|
},
|
|
registryUrls: ['https://wpackagist.org'],
|
|
gitRepos: {
|
|
someGit: {
|
|
name: 'someGit',
|
|
type: 'git',
|
|
url: 'https://some-vcs.com',
|
|
},
|
|
},
|
|
});
|
|
});
|
|
});
|
|
});
|