diff --git a/lib/modules/manager/terraform/extract.spec.ts b/lib/modules/manager/terraform/extract.spec.ts index 7f355ffa21db64..21a4b8376b3919 100644 --- a/lib/modules/manager/terraform/extract.spec.ts +++ b/lib/modules/manager/terraform/extract.spec.ts @@ -708,5 +708,16 @@ describe('modules/manager/terraform/extract', () => { }, ]); }); + + it('return null if invalid HCL file', async () => { + const res = await extractPackageFile( + ` + resource my provider + `, + 'tfeWorkspace.tf', + {} + ); + expect(res).toBeNull(); + }); }); }); diff --git a/lib/modules/manager/terraform/extract.ts b/lib/modules/manager/terraform/extract.ts index d0676c81518a2d..9c9d003c43df92 100644 --- a/lib/modules/manager/terraform/extract.ts +++ b/lib/modules/manager/terraform/extract.ts @@ -1,3 +1,4 @@ +import is from '@sindresorhus/is'; import { logger } from '../../../logger'; import type { ExtractConfig, PackageFile } from '../types'; import { resourceExtractors } from './extractors'; @@ -37,6 +38,10 @@ export async function extractPackageFile( const dependencies = []; const hclMap = hcl.parseHCL(content); + if (is.nullOrUndefined(hclMap)) { + logger.trace({ fileName }, 'failed to parse HCL file'); + return null; + } const locks = await extractLocksForPackageFile(fileName); diff --git a/lib/modules/manager/terraform/extractors/others/providers.spec.ts b/lib/modules/manager/terraform/extractors/others/providers.spec.ts new file mode 100644 index 00000000000000..1d15ef10351f47 --- /dev/null +++ b/lib/modules/manager/terraform/extractors/others/providers.spec.ts @@ -0,0 +1,10 @@ +import { ProvidersExtractor } from './providers'; + +describe('modules/manager/terraform/extractors/others/providers', () => { + const extractor = new ProvidersExtractor(); + + it('return null if no provider returned', () => { + const result = extractor.extract({}, []); + expect(result).toBeArrayOfSize(0); + }); +}); diff --git a/lib/modules/manager/terraform/extractors/others/providers.ts b/lib/modules/manager/terraform/extractors/others/providers.ts index c2cbd5702f5a9e..e930a54c16d422 100644 --- a/lib/modules/manager/terraform/extractors/others/providers.ts +++ b/lib/modules/manager/terraform/extractors/others/providers.ts @@ -9,7 +9,7 @@ export class ProvidersExtractor extends TerraformProviderExtractor { } extract(hclRoot: any, locks: ProviderLock[]): PackageDependency[] { - const providerTypes = hclRoot.provider; + const providerTypes = hclRoot?.provider; if (is.nullOrUndefined(providerTypes)) { return []; }