mirror of https://github.com/renovatebot/renovate
75 lines
2.5 KiB
TypeScript
75 lines
2.5 KiB
TypeScript
import { codeBlock } from 'common-tags';
|
|
import { mocked } from '../../../../test/util';
|
|
import { logger } from '../../../logger';
|
|
import * as _fs from '../../../util/fs';
|
|
import { extractLockFileVersions, parseLockFile } from './locked-version';
|
|
|
|
jest.mock('../../../util/fs');
|
|
|
|
const fs = mocked(_fs);
|
|
|
|
const lockFileContent = codeBlock`
|
|
packages = [
|
|
{ name = "foo", version = "1.0.4", build_tools = ["gleam"], requirements = ["bar"], otp_app = "foo", source = "hex", outer_checksum = "5C66647D62BCB11FE327E7A6024907C4A17954EF22865FE0940B54A852446D01" },
|
|
{ name = "bar", version = "2.1.0", build_tools = ["rebar3"], requirements = [], otp_app = "bar", source = "hex", outer_checksum = "E38697EDFFD6E91BD12CEA41B155115282630075C2A727E7A6B2947F5408B86A" },
|
|
]
|
|
|
|
[requirements]
|
|
foo = { version = ">= 1.0.0 and < 2.0.0" }
|
|
`;
|
|
|
|
describe('modules/manager/gleam/locked-version', () => {
|
|
describe('extractLockFileVersions()', () => {
|
|
it('returns null for missing lock file', async () => {
|
|
expect(await extractLockFileVersions('manifest.toml')).toBeNull();
|
|
});
|
|
|
|
it('returns null for invalid lock file', async () => {
|
|
fs.readLocalFile.mockResolvedValueOnce('foo');
|
|
expect(await extractLockFileVersions('manifest.toml')).toBeNull();
|
|
});
|
|
|
|
it('returns empty map for lock file without packages', async () => {
|
|
fs.readLocalFile.mockResolvedValueOnce('[requirements]');
|
|
expect(await extractLockFileVersions('manifest.toml')).toEqual(new Map());
|
|
});
|
|
|
|
it('returns a map of package versions', async () => {
|
|
fs.readLocalFile.mockResolvedValueOnce(lockFileContent);
|
|
expect(await extractLockFileVersions('manifest.toml')).toEqual(
|
|
new Map([
|
|
['foo', ['1.0.4']],
|
|
['bar', ['2.1.0']],
|
|
]),
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('parseLockFile', () => {
|
|
it('parses lockfile string into an object', () => {
|
|
const parseLockFileResult = parseLockFile(lockFileContent);
|
|
logger.debug({ parseLockFileResult }, 'parseLockFile');
|
|
expect(parseLockFileResult).toStrictEqual({
|
|
packages: [
|
|
{
|
|
name: 'foo',
|
|
version: '1.0.4',
|
|
requirements: ['bar'],
|
|
},
|
|
{
|
|
name: 'bar',
|
|
version: '2.1.0',
|
|
requirements: [],
|
|
},
|
|
],
|
|
});
|
|
});
|
|
|
|
it('can deal with invalid lockfiles', () => {
|
|
const lockFile = 'foo';
|
|
const parseLockFileResult = parseLockFile(lockFile);
|
|
expect(parseLockFileResult).toBeNull();
|
|
});
|
|
});
|
|
});
|