diff --git a/lib/manager/terraform/__fixtures__/terraformBlock.tf b/lib/manager/terraform/__fixtures__/terraformBlock.tf new file mode 100644 index 0000000000000000000000000000000000000000..6af62dd75207ded66e3038322a8b85d013de0fe6 --- /dev/null +++ b/lib/manager/terraform/__fixtures__/terraformBlock.tf @@ -0,0 +1,3 @@ +terraform { + required_version = "1.0.0" +} diff --git a/lib/manager/terraform/__snapshots__/extract.spec.ts.snap b/lib/manager/terraform/__snapshots__/extract.spec.ts.snap index edc6ea6fdc2be1e715404c8bddcdd842dbb06e33..fa6022ae042664429c7bbfcfa347e002b01a1344 100644 --- a/lib/manager/terraform/__snapshots__/extract.spec.ts.snap +++ b/lib/manager/terraform/__snapshots__/extract.spec.ts.snap @@ -390,6 +390,21 @@ Object { } `; +exports[`manager/terraform/extract extractPackageFile() test terraform block with only requirement_terraform_version 1`] = ` +Object { + "deps": Array [ + Object { + "currentValue": "1.0.0", + "datasource": "github-tags", + "depName": "hashicorp/terraform", + "depType": "required_version", + "extractVersion": "v(?<version>.*)$", + "lineNumber": 1, + }, + ], +} +`; + exports[`manager/terraform/extract extractPackageFile() update lockfile constraints with range strategy update-lockfile 1`] = ` Object { "deps": Array [ diff --git a/lib/manager/terraform/extract.spec.ts b/lib/manager/terraform/extract.spec.ts index 88f53e9ffbfc07c6e557cd62f0fcd937bb348b50..109092ffc35426322a4dcec9d0df110ce4ca7e78 100644 --- a/lib/manager/terraform/extract.spec.ts +++ b/lib/manager/terraform/extract.spec.ts @@ -12,6 +12,7 @@ const tf2 = `module "relative" { const helm = loadFixture('helm.tf'); const lockedVersion = loadFixture('lockedVersion.tf'); const lockedVersionLockfile = loadFixture('rangeStrategy.hcl'); +const terraformBlock = loadFixture('terraformBlock.tf'); const adminConfig: RepoGlobalConfig = { // `join` fixes Windows CI @@ -62,5 +63,16 @@ describe('manager/terraform/extract', () => { expect(res.deps).toHaveLength(3); expect(res.deps.filter((dep) => dep.skipReason)).toHaveLength(0); }); + + it('test terraform block with only requirement_terraform_version', async () => { + const res = await extractPackageFile( + terraformBlock, + 'terraformBlock.tf', + {} + ); + expect(res.deps).toHaveLength(1); + expect(res.deps.filter((dep) => dep.skipReason)).toHaveLength(0); + expect(res).toMatchSnapshot(); + }); }); }); diff --git a/lib/manager/terraform/extract.ts b/lib/manager/terraform/extract.ts index ad18986475412da9e88f7b4fdb6d1b9032635990..cdca8db112ef241ecc76d153042824ac33454b58 100644 --- a/lib/manager/terraform/extract.ts +++ b/lib/manager/terraform/extract.ts @@ -36,6 +36,7 @@ const contentCheckList = [ 'required_providers ', ' "helm_release" ', ' "docker_image" ', + 'required_version', ]; export async function extractPackageFile( @@ -45,6 +46,10 @@ export async function extractPackageFile( ): Promise<PackageFile | null> { logger.trace({ content }, 'terraform.extractPackageFile()'); if (!checkFileContainsDependency(content, contentCheckList)) { + logger.trace( + { fileName }, + 'preflight content check has not found any relevant content' + ); return null; } let deps: PackageDependency<TerraformManagerData>[] = [];