diff --git a/pkg/iac/scanners/terraform/parser/parser_test.go b/pkg/iac/scanners/terraform/parser/parser_test.go index 1baa9053e9..d31c112c45 100644 --- a/pkg/iac/scanners/terraform/parser/parser_test.go +++ b/pkg/iac/scanners/terraform/parser/parser_test.go @@ -164,6 +164,25 @@ check "cats_mittens_is_special" { require.NotNil(t, checkBlocks[0].GetBlock("assert")) } +// Test_OpenTofuLanguageBlock: see https://github.com/aquasecurity/trivy/issues/10906 +func Test_OpenTofuLanguageBlock(t *testing.T) { + fs := testutil.CreateFS(map[string]string{ + "main.tofu": ` +language { + compatible_with { + opentofu = ">= 1.12" + } +} +`, + }) + + parser := New(fs, "", OptionStopOnHCLError(true)) + require.NoError(t, parser.ParseFS(t.Context(), ".")) + + _, err := parser.Load(t.Context()) + require.NoError(t, err) +} + func Test_Modules(t *testing.T) { fs := testutil.CreateFS(map[string]string{ diff --git a/pkg/iac/terraform/schema.go b/pkg/iac/terraform/schema.go index dcedda7c00..a9fbec5904 100644 --- a/pkg/iac/terraform/schema.go +++ b/pkg/iac/terraform/schema.go @@ -8,6 +8,11 @@ var Schema = &hcl.BodySchema{ { Type: "terraform", }, + { + // language declares OpenTofu/language compatibility constraints. + // Introduced in OpenTofu v1.12: https://opentofu.org/docs/language/settings/#language-compatibility + Type: "language", + }, { Type: "required_providers", },