mirror of https://github.com/renovatebot/renovate
159 lines
4.0 KiB
TypeScript
159 lines
4.0 KiB
TypeScript
import { codeBlock } from 'common-tags';
|
|
import { join } from 'upath';
|
|
import { GlobalConfig } from '../../../config/global';
|
|
import type { RepoGlobalConfig } from '../../../config/types';
|
|
import { extractPackageFile } from '.';
|
|
|
|
const adminConfig: RepoGlobalConfig = {
|
|
localDir: join('/tmp/github/some/repo'),
|
|
cacheDir: join('/tmp/cache'),
|
|
containerbaseDir: join('/tmp/cache/containerbase'),
|
|
};
|
|
|
|
// auto-mock fs
|
|
jest.mock('../../../util/fs');
|
|
|
|
describe('modules/manager/tflint-plugin/extract', () => {
|
|
beforeEach(() => {
|
|
GlobalConfig.set(adminConfig);
|
|
});
|
|
|
|
describe('extractPackageFile()', () => {
|
|
it('returns null for empty', () => {
|
|
expect(
|
|
extractPackageFile('nothing here', 'doesnt-exist.hcl', {}),
|
|
).toBeNull();
|
|
});
|
|
|
|
it('returns null when there are no version', () => {
|
|
const configNoVersion = codeBlock`
|
|
plugin "bundled" {}
|
|
`;
|
|
|
|
expect(
|
|
extractPackageFile(configNoVersion, 'doesnt-exist.hcl', {}),
|
|
).toBeNull();
|
|
});
|
|
|
|
it('extracts plugins', () => {
|
|
const configNormal = codeBlock`
|
|
plugin "foo" {
|
|
enabled = true
|
|
version = "0.1.0"
|
|
source = "github.com/org/tflint-ruleset-foo"
|
|
}
|
|
|
|
plugin "bar" {
|
|
enabled = true
|
|
version = "1.42.0"
|
|
source = "github.com/org2/tflint-ruleset-bar"
|
|
}
|
|
`;
|
|
const res = extractPackageFile(configNormal, 'tflint-1.hcl', {});
|
|
expect(res).toEqual({
|
|
deps: [
|
|
{
|
|
currentValue: '0.1.0',
|
|
datasource: 'github-releases',
|
|
depType: 'plugin',
|
|
depName: 'org/tflint-ruleset-foo',
|
|
},
|
|
{
|
|
currentValue: '1.42.0',
|
|
datasource: 'github-releases',
|
|
depType: 'plugin',
|
|
depName: 'org2/tflint-ruleset-bar',
|
|
},
|
|
],
|
|
});
|
|
});
|
|
|
|
it('extracts from full configuration', () => {
|
|
const configFull = codeBlock`
|
|
config {
|
|
format = "compact"
|
|
plugin_dir = "~/.tflint.d/plugins"
|
|
|
|
module = true
|
|
force = false
|
|
disabled_by_default = false
|
|
|
|
ignore_module = {
|
|
"terraform-aws-modules/vpc/aws" = true
|
|
"terraform-aws-modules/security-group/aws" = true
|
|
}
|
|
|
|
varfile = ["example1.tfvars", "example2.tfvars"]
|
|
}
|
|
|
|
plugin "aws" {
|
|
enabled = true
|
|
version = "0.4.0"
|
|
source = "github.com/terraform-linters/tflint-ruleset-aws"
|
|
}
|
|
|
|
rule "aws_instance_invalid_type" {
|
|
enabled = false
|
|
}
|
|
`;
|
|
const res = extractPackageFile(configFull, 'tflint-full.hcl', {});
|
|
expect(res).toEqual({
|
|
deps: [
|
|
{
|
|
currentValue: '0.4.0',
|
|
datasource: 'github-releases',
|
|
depType: 'plugin',
|
|
depName: 'terraform-linters/tflint-ruleset-aws',
|
|
},
|
|
],
|
|
});
|
|
});
|
|
|
|
it('extracts no source', () => {
|
|
const noSource = codeBlock`
|
|
plugin "aws" {
|
|
enabled = true
|
|
version = "0.4.0"
|
|
}
|
|
|
|
plugin "bundled" {
|
|
# A bundled plugin, probably.
|
|
enabled = true
|
|
}
|
|
`;
|
|
|
|
const res = extractPackageFile(noSource, 'tflint-no-source.hcl', {});
|
|
expect(res).toEqual({
|
|
deps: [
|
|
{
|
|
skipReason: 'no-source',
|
|
},
|
|
{
|
|
skipReason: 'no-source',
|
|
},
|
|
],
|
|
});
|
|
});
|
|
|
|
it('extracts nothing if not from github', () => {
|
|
const notGithub = codeBlock`
|
|
plugin "aws" {
|
|
enabled = true
|
|
version = "0.4.0"
|
|
source = "gitlab.com/terraform-linters/tflint-ruleset-aws"
|
|
}
|
|
`;
|
|
const res = extractPackageFile(notGithub, 'tflint-not-github.hcl', {});
|
|
expect(res).toEqual({
|
|
deps: [
|
|
{
|
|
depName: 'gitlab.com/terraform-linters/tflint-ruleset-aws',
|
|
depType: 'plugin',
|
|
skipReason: 'unsupported-datasource',
|
|
},
|
|
],
|
|
});
|
|
});
|
|
});
|
|
});
|