From ee97d5ac2bf72687ef57458edf41c79bddb94a70 Mon Sep 17 00:00:00 2001 From: Devang Gaur Date: Fri, 15 Jan 2021 21:54:56 +0530 Subject: [PATCH] added unit tests for breaking changes case --- .../terraform/v12/load-dir_test.go | 6 +++ .../terraform/v12/load-file_test.go | 6 +++ .../v12/testdata/destroy-provisioners/main.tf | 44 +++++++++++++++++++ .../testdata/multiple-required-providers/a.tf | 7 +++ .../testdata/multiple-required-providers/b.tf | 7 +++ 5 files changed, 70 insertions(+) create mode 100644 pkg/iac-providers/terraform/v12/testdata/destroy-provisioners/main.tf create mode 100644 pkg/iac-providers/terraform/v12/testdata/multiple-required-providers/a.tf create mode 100644 pkg/iac-providers/terraform/v12/testdata/multiple-required-providers/b.tf diff --git a/pkg/iac-providers/terraform/v12/load-dir_test.go b/pkg/iac-providers/terraform/v12/load-dir_test.go index 8a847c2a0..a5220bcc7 100644 --- a/pkg/iac-providers/terraform/v12/load-dir_test.go +++ b/pkg/iac-providers/terraform/v12/load-dir_test.go @@ -60,6 +60,12 @@ func TestLoadIacDir(t *testing.T) { tfv12: TfV12{}, wantErr: commons.ErrLoadConfigDir, }, + { + name: "load invalid config dir", + dirPath: "./testdata/multiple-required-providers", + tfv12: TfV12{}, + wantErr: commons.ErrLoadConfigDir, + }, } for _, tt := range table { diff --git a/pkg/iac-providers/terraform/v12/load-file_test.go b/pkg/iac-providers/terraform/v12/load-file_test.go index 02b1ce3c9..18a8823f2 100644 --- a/pkg/iac-providers/terraform/v12/load-file_test.go +++ b/pkg/iac-providers/terraform/v12/load-file_test.go @@ -54,6 +54,12 @@ func TestLoadIacFile(t *testing.T) { tfv12: TfV12{}, wantErr: commons.ErrLoadConfigFile, }, + { + name: "destroy-provisioners", + filePath: "./testdata/destroy-provisioners/main.tf", + tfv12: TfV12{}, + wantErr: commons.ErrLoadConfigFile, + }, } for _, tt := range table { diff --git a/pkg/iac-providers/terraform/v12/testdata/destroy-provisioners/main.tf b/pkg/iac-providers/terraform/v12/testdata/destroy-provisioners/main.tf new file mode 100644 index 000000000..92fa066be --- /dev/null +++ b/pkg/iac-providers/terraform/v12/testdata/destroy-provisioners/main.tf @@ -0,0 +1,44 @@ +locals { + user = "name" +} + +resource "null_resource" "a" { + connection { + host = self.hostname + user = local.user # ERROR: Invalid reference from destroy provisioner + } + + provisioner "remote-exec" { + when = destroy + index = count.index + key = each.key + + // path and terraform values are static, and do not create any + // dependencies. + dir = path.module + workspace = terraform.workspace + } +} + +resource "null_resource" "b" { + connection { + host = self.hostname + # this is OK since there is no destroy provisioner + user = local.user + } + + provisioner "remote-exec" { + } +} + +resource "null_resource" "b" { + provisioner "remote-exec" { + when = destroy + connection { + host = self.hostname + user = local.user # ERROR: Invalid reference from destroy provisioner + } + + command = "echo ${local.name}" # ERROR: Invalid reference from destroy provisioner + } +} \ No newline at end of file diff --git a/pkg/iac-providers/terraform/v12/testdata/multiple-required-providers/a.tf b/pkg/iac-providers/terraform/v12/testdata/multiple-required-providers/a.tf new file mode 100644 index 000000000..30d836188 --- /dev/null +++ b/pkg/iac-providers/terraform/v12/testdata/multiple-required-providers/a.tf @@ -0,0 +1,7 @@ +terraform { + required_providers { + bar = { + version = "~>1.0.0" + } + } +} \ No newline at end of file diff --git a/pkg/iac-providers/terraform/v12/testdata/multiple-required-providers/b.tf b/pkg/iac-providers/terraform/v12/testdata/multiple-required-providers/b.tf new file mode 100644 index 000000000..e6aa01c14 --- /dev/null +++ b/pkg/iac-providers/terraform/v12/testdata/multiple-required-providers/b.tf @@ -0,0 +1,7 @@ +terraform { + required_providers { + foo = { + version = "~>2.0.0" + } + } +} \ No newline at end of file