diff --git a/config/obs/automerge-dependency-collections.json b/config/obs/automerge-dependency-collections.json index 24082c8..f12ca13 100644 --- a/config/obs/automerge-dependency-collections.json +++ b/config/obs/automerge-dependency-collections.json @@ -53,6 +53,21 @@ "**/pnpm-lock.yaml" ] }, + { + "id": "terraform", + "description": "Terraform/OpenTofu/Terragrunt dependency and lockfile updates", + "active": true, + "file-glob": [ + "**/*.tf", + "**/*.tfvars", + "**/*.tfvars.json", + "**/.terraform.lock.hcl", + "**/terragrunt.hcl", + "**/.opentofu-version", + "**/.terraform-version", + "**/.terragrunt-version" + ] + }, { "id": "vm-images", "description": "CI runner or container image pin updates", diff --git a/tests/unit/classifyAutomergeDependencyCollection.test.ts b/tests/unit/classifyAutomergeDependencyCollection.test.ts index ca78603..cbb7c8e 100644 --- a/tests/unit/classifyAutomergeDependencyCollection.test.ts +++ b/tests/unit/classifyAutomergeDependencyCollection.test.ts @@ -96,6 +96,43 @@ test('classifyChangedFiles is ambiguous when multiple collections match', () => assert.equal(outcome.collectionIds.length, 2); }); +test('classifyChangedFiles allows active terraform collection', () => { + const collections = [ + ...COLLECTIONS, + { + id: 'terraform', + active: true, + 'file-glob': [ + '**/*.tf', + '**/*.tfvars', + '**/*.tfvars.json', + '**/.terraform.lock.hcl', + '**/terragrunt.hcl', + '**/.opentofu-version', + '**/.terraform-version', + '**/.terragrunt-version', + ], + }, + ]; + const outcome = classifyChangedFiles( + [ + 'environments/dev/main.tf', + 'environments/dev/vars.tfvars', + 'environments/dev/vars.tfvars.json', + 'environments/dev/.terraform.lock.hcl', + 'environments/dev/terragrunt.hcl', + 'environments/dev/.opentofu-version', + 'environments/dev/.terraform-version', + 'environments/dev/.terragrunt-version', + ], + collections + ); + assert.deepEqual(outcome, { + status: 'allowed', + collectionId: 'terraform', + }); +}); + test('buildGateCommentBody includes inactive collection and active list', () => { const body = buildGateCommentBody( { status: 'inactive', collectionId: 'python-dependencies' },