diff --git a/lib/modules/manager/terraform/extract.spec.ts b/lib/modules/manager/terraform/extract.spec.ts index d407b781d2077fd9c86e9663a131d2b3c03f4bef..9d9a546a45a37683870c1fb0de796f5e664de4b2 100644 --- a/lib/modules/manager/terraform/extract.spec.ts +++ b/lib/modules/manager/terraform/extract.spec.ts @@ -40,6 +40,17 @@ describe('modules/manager/terraform/extract', () => { expect(await extractPackageFile('nothing here', '1.tf', {})).toBeNull(); }); + it('returns null for no deps', async () => { + // ModuleExtractor matches `module` at any position. + const src = codeBlock` + data "sops_file" "secrets" { + source_file = "\${path.module}/secrets.enc.json" + } + `; + + expect(await extractPackageFile(src, '1.tf', {})).toBeNull(); + }); + it('extracts modules', async () => { const res = await extractPackageFile(modules, 'modules.tf', {}); expect(res?.deps).toHaveLength(18); diff --git a/lib/modules/manager/terraform/extract.ts b/lib/modules/manager/terraform/extract.ts index 3c4013138e29ec5e669e3851d067a4c4776586b7..9196c45aae3cd3091489ea6cacda0734004093a5 100644 --- a/lib/modules/manager/terraform/extract.ts +++ b/lib/modules/manager/terraform/extract.ts @@ -1,6 +1,11 @@ import is from '@sindresorhus/is'; import { logger } from '../../../logger'; -import type { ExtractConfig, PackageFileContent } from '../types'; +import type { + ExtractConfig, + PackageDependency, + PackageFileContent, +} from '../types'; +import type { DependencyExtractor } from './base'; import { resourceExtractors } from './extractors'; import * as hcl from './hcl'; import { @@ -15,7 +20,7 @@ export async function extractPackageFile( ): Promise<PackageFileContent | null> { logger.trace({ content }, `terraform.extractPackageFile(${packageFile})`); - const passedExtractors = []; + const passedExtractors: DependencyExtractor[] = []; for (const extractor of resourceExtractors) { if (checkFileContainsDependency(content, extractor.getCheckList())) { passedExtractors.push(extractor); @@ -36,7 +41,7 @@ export async function extractPackageFile( .toString()}]` ); - const dependencies = []; + const dependencies: PackageDependency[] = []; const hclMap = await hcl.parseHCL(content, packageFile); if (is.nullOrUndefined(hclMap)) { logger.debug({ packageFile }, 'failed to parse HCL file'); @@ -51,5 +56,5 @@ export async function extractPackageFile( } dependencies.forEach((value) => delete value.managerData); - return { deps: dependencies }; + return dependencies.length ? { deps: dependencies } : null; }