0
0
Fork 0
mirror of https://github.com/renovatebot/renovate.git synced 2025-01-11 13:48:55 +00:00
renovatebot_renovate/lib/modules/manager/mix/extract.spec.ts
Pierre Cavin 1d2c1a35e3
feat(mix): add depType support (#33310)
Co-authored-by: Michael Kriese <michael.kriese@gmx.de>
2025-01-09 10:38:35 +00:00

280 lines
7.7 KiB
TypeScript

import { Fixtures } from '../../../../test/fixtures';
import { GlobalConfig } from '../../../config/global';
import { extractPackageFile } from '.';
describe('modules/manager/mix/extract', () => {
beforeEach(() => {
GlobalConfig.set({ localDir: '' });
});
describe('extractPackageFile()', () => {
it('returns empty for invalid dependency file', async () => {
const res = await extractPackageFile('nothing here', 'mix.exs');
expect(res).toBeNull();
});
it('extracts all dependencies when no lockfile', async () => {
const res = await extractPackageFile(Fixtures.get('mix.exs'), 'mix.exs');
expect(res?.deps).toEqual([
{
currentValue: '~> 0.8.1',
datasource: 'hex',
depName: 'postgrex',
depType: 'prod',
packageName: 'postgrex',
},
{
currentValue: '<1.7.0 or ~>1.7.1',
datasource: 'hex',
depName: 'ranch',
depType: 'prod',
packageName: 'ranch',
},
{
currentDigest: undefined,
currentValue: '0.6.0',
datasource: 'github-tags',
depName: 'cowboy',
depType: 'prod',
packageName: 'ninenines/cowboy',
},
{
currentDigest: undefined,
currentValue: 'main',
datasource: 'git-tags',
depName: 'phoenix',
depType: 'prod',
packageName: 'https://github.com/phoenixframework/phoenix.git',
},
{
currentDigest: '795036d997c7503b21fb64d6bf1a89b83c44f2b5',
currentValue: undefined,
datasource: 'github-tags',
depName: 'ecto',
depType: 'prod',
packageName: 'elixir-ecto/ecto',
},
{
currentValue: '~> 1.0',
datasource: 'hex',
depName: 'secret',
depType: 'prod',
packageName: 'secret:acme',
},
{
currentValue: '~> 1.0',
datasource: 'hex',
depName: 'also_secret',
depType: 'dev',
packageName: 'also_secret:acme',
},
{
currentValue: '>0.2.0 and <=1.0.0',
datasource: 'hex',
depName: 'metrics',
depType: 'prod',
packageName: 'metrics',
},
{
currentValue: '>= 1.0.0',
datasource: 'hex',
depName: 'jason',
depType: 'prod',
packageName: 'jason',
},
{
currentValue: '~> 1.0',
datasource: 'hex',
depName: 'hackney',
depType: 'prod',
packageName: 'hackney',
},
{
currentValue: '~> 6.1',
datasource: 'hex',
depName: 'hammer_backend_redis',
depType: 'prod',
packageName: 'hammer_backend_redis',
},
{
currentValue: '== 1.0.10',
currentVersion: '1.0.10',
datasource: 'hex',
depName: 'castore',
depType: 'prod',
packageName: 'castore',
},
{
currentValue: '~> 2.0.0',
datasource: 'hex',
depName: 'gun',
depType: 'prod',
packageName: 'grpc_gun',
},
{
currentValue: '~> 0.4.0',
datasource: 'hex',
depName: 'another_gun',
depType: 'prod',
packageName: 'raygun',
},
{
currentValue: '~> 1.7',
datasource: 'hex',
depName: 'credo',
depType: 'dev',
packageName: 'credo',
},
{
currentValue: '== 0.37.0',
currentVersion: '0.37.0',
datasource: 'hex',
depName: 'floki',
depType: 'dev',
packageName: 'floki',
},
]);
});
it('extracts all dependencies and adds the locked version if lockfile present', async () => {
// allows fetching the sibling mix.lock file
GlobalConfig.set({ localDir: 'lib/modules/manager/mix/__fixtures__' });
const res = await extractPackageFile(Fixtures.get('mix.exs'), 'mix.exs');
expect(res?.deps).toEqual([
{
currentValue: '~> 0.8.1',
datasource: 'hex',
depName: 'postgrex',
depType: 'prod',
packageName: 'postgrex',
lockedVersion: '0.8.4',
},
{
currentValue: '<1.7.0 or ~>1.7.1',
datasource: 'hex',
depName: 'ranch',
depType: 'prod',
packageName: 'ranch',
lockedVersion: '1.7.1',
},
{
currentDigest: undefined,
currentValue: '0.6.0',
datasource: 'github-tags',
depName: 'cowboy',
depType: 'prod',
packageName: 'ninenines/cowboy',
lockedVersion: '0.6.0',
},
{
currentDigest: undefined,
currentValue: 'main',
datasource: 'git-tags',
depName: 'phoenix',
depType: 'prod',
packageName: 'https://github.com/phoenixframework/phoenix.git',
lockedVersion: undefined,
},
{
currentDigest: '795036d997c7503b21fb64d6bf1a89b83c44f2b5',
currentValue: undefined,
datasource: 'github-tags',
depName: 'ecto',
depType: 'prod',
packageName: 'elixir-ecto/ecto',
lockedVersion: undefined,
},
{
currentValue: '~> 1.0',
datasource: 'hex',
depName: 'secret',
depType: 'prod',
packageName: 'secret:acme',
lockedVersion: '1.5.0',
},
{
currentValue: '~> 1.0',
datasource: 'hex',
depName: 'also_secret',
depType: 'dev',
packageName: 'also_secret:acme',
lockedVersion: '1.3.4',
},
{
currentValue: '>0.2.0 and <=1.0.0',
datasource: 'hex',
depName: 'metrics',
depType: 'prod',
packageName: 'metrics',
lockedVersion: '1.0.0',
},
{
currentValue: '>= 1.0.0',
datasource: 'hex',
depName: 'jason',
depType: 'prod',
packageName: 'jason',
lockedVersion: '1.4.4',
},
{
currentValue: '~> 1.0',
datasource: 'hex',
depName: 'hackney',
depType: 'prod',
packageName: 'hackney',
lockedVersion: '1.20.1',
},
{
currentValue: '~> 6.1',
datasource: 'hex',
depName: 'hammer_backend_redis',
depType: 'prod',
packageName: 'hammer_backend_redis',
lockedVersion: '6.2.0',
},
{
currentValue: '== 1.0.10',
currentVersion: '1.0.10',
datasource: 'hex',
depName: 'castore',
depType: 'prod',
packageName: 'castore',
lockedVersion: '1.0.10',
},
{
currentValue: '~> 2.0.0',
datasource: 'hex',
depName: 'gun',
depType: 'prod',
packageName: 'grpc_gun',
lockedVersion: '2.0.1',
},
{
currentValue: '~> 0.4.0',
datasource: 'hex',
depName: 'another_gun',
depType: 'prod',
packageName: 'raygun',
lockedVersion: '0.4.0',
},
{
currentValue: '~> 1.7',
datasource: 'hex',
depName: 'credo',
depType: 'dev',
packageName: 'credo',
lockedVersion: '1.7.10',
},
{
currentValue: '== 0.37.0',
currentVersion: '0.37.0',
datasource: 'hex',
depName: 'floki',
depType: 'dev',
lockedVersion: '0.37.0',
packageName: 'floki',
},
]);
});
});
});