Skip to content

Commit

Permalink
Feat: support any Terraform 1.x.x versions (#166)
Browse files Browse the repository at this point in the history
  • Loading branch information
TomerHeber authored Mar 19, 2023
1 parent cd05340 commit b39183e
Show file tree
Hide file tree
Showing 21 changed files with 21 additions and 95 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
strategy:
fail-fast: false
matrix:
terraform_version: ['11','12','13','14','15','1.0','1.1','1.2','1.3']
terraform_version: ['11','12','13','14','15','latest']

steps:
- name: Set up Go
Expand Down Expand Up @@ -79,7 +79,7 @@ jobs:
id: test-suite
env:
TF_VERSION: ${{ matrix.terraform_version }}
uses: actions/github-script@v4
uses: actions/github-script@v6
with:
script: |
console.log(`Setting test suite version based on ${process.env.TF_VERSION}`)
Expand All @@ -90,7 +90,7 @@ jobs:

- name: Test
run: |
go test -v -run ^TestTerraform${{ steps.test-suite.outputs.result }}$
go test -v -run ^TestTerraform${{ steps.test-suite.outputs.result }}
terragrunt-integration-tests:
name: Terragrunt Integration Tests
Expand Down
5 changes: 2 additions & 3 deletions internal/file/file.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package file

import (
"io/ioutil"
"log"
"os"
"path/filepath"
Expand Down Expand Up @@ -38,7 +37,7 @@ func ReplaceWithTerratagFile(path string, textContent string, rename bool) error

func CreateFile(path string, textContent string) error {
log.Print("[INFO] Creating file ", path)
return ioutil.WriteFile(path, []byte(textContent), 0644)
return os.WriteFile(path, []byte(textContent), 0644)
}

func GetFilename(path string) string {
Expand All @@ -49,7 +48,7 @@ func GetFilename(path string) string {
}

func ReadHCLFile(path string) (*hclwrite.File, error) {
src, err := ioutil.ReadFile(path)
src, err := os.ReadFile(path)
if err != nil {
return nil, err
}
Expand Down
8 changes: 4 additions & 4 deletions internal/terraform/terraform.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import (
"encoding/json"
"errors"
"fmt"
"io"
"io/fs"
"io/ioutil"
"log"
"os"
"os/exec"
Expand Down Expand Up @@ -43,8 +43,8 @@ func GetTerraformVersion() (*common.Version, error) {
return nil, err
}

if (majorVersion == 0 && minorVersion < 11 || minorVersion > 15) || (majorVersion == 1 && minorVersion > 3) {
return nil, fmt.Errorf("terratag only supports Terraform from version 0.11.x and up to 1.3.x - your version says %s", outputAsString)
if (majorVersion == 0 && minorVersion < 11 || minorVersion > 15) || majorVersion > 1 {
return nil, fmt.Errorf("terratag only supports Terraform from version 0.11.x and up to 1.x.x - your version says %s", outputAsString)
}

return &common.Version{Major: majorVersion, Minor: minorVersion}, nil
Expand Down Expand Up @@ -176,7 +176,7 @@ func getTerraformModulesDirPaths(dir string) ([]string, error) {
return paths, nil
}

byteValue, err := ioutil.ReadAll(jsonFile)
byteValue, err := io.ReadAll(jsonFile)
if err != nil {
return nil, err
}
Expand Down
47 changes: 9 additions & 38 deletions terratag_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (
"crypto/sha256"
"fmt"
"io"
"io/ioutil"
"log"
"os"
"os/exec"
Expand Down Expand Up @@ -59,47 +58,19 @@ func TestTerraform14(t *testing.T) {
}

func TestTerraform15(t *testing.T) {
testTerraform(t, "15_1.0")
testTerraform(t, "15")
}

func TestTerraform1o0(t *testing.T) {
testTerraform(t, "15_1.0")
func TestTerraformlatestWithFilter(t *testing.T) {
testTerraformWithFilter(t, "latest_filter", "azurerm_resource_group|aws_s3_bucket", "")
}

func TestTerraform1o0WithFilter(t *testing.T) {
testTerraformWithFilter(t, "15_1.0_filter", "azurerm_resource_group|aws_s3_bucket", "")
func TestTerraformlatestWithSkip(t *testing.T) {
testTerraformWithFilter(t, "latest_skip", ".*", "azurerm_resource_group")
}

func TestTerraform1o1(t *testing.T) {
testTerraform(t, "15_1.1")
}

func TestTerraform1o1WithFilter(t *testing.T) {
testTerraformWithFilter(t, "15_1.1_filter", "azurerm_resource_group|aws_s3_bucket", "")
}

func TestTerraform1o2(t *testing.T) {
testTerraform(t, "15_1.2")
}

func TestTerraform1o2WithFilter(t *testing.T) {
testTerraformWithFilter(t, "15_1.2_filter", "azurerm_resource_group|aws_s3_bucket", "")
}

func TestTerraform1o2WithSkip(t *testing.T) {
testTerraformWithFilter(t, "15_1.2_skip", ".*", "azurerm_resource_group")
}

func TestTerraform1o3(t *testing.T) {
testTerraform(t, "15_1.3")
}

func TestTerraform1o3WithFilter(t *testing.T) {
testTerraformWithFilter(t, "15_1.3_filter", "azurerm_resource_group|aws_s3_bucket", "")
}

func TestTerraform1o3WithSkip(t *testing.T) {
testTerraformWithFilter(t, "15_1.3_skip", ".*", "azurerm_resource_group")
func TestTerraformlatest(t *testing.T) {
testTerraform(t, "latest")
}

func TestTerragruntWithCache(t *testing.T) {
Expand Down Expand Up @@ -189,10 +160,10 @@ func itShouldGenerateExpectedTerratagFiles(entryDir string, g *GomegaWithT) {
g.Expect(len(actualTerratag)).To(BeEquivalentTo(len(expectedTerratag)), "it should generate the same number of terratag files as expected")
for i, expectedTerratagFile := range expectedTerratag {
expectedFile, _ := os.Open(expectedTerratagFile)
expectedContent, _ := ioutil.ReadAll(expectedFile)
expectedContent, _ := io.ReadAll(expectedFile)
actualTerratagFile := actualTerratag[i]
actualFile, _ := os.Open(actualTerratagFile)
actualContent, _ := ioutil.ReadAll(actualFile)
actualContent, _ := io.ReadAll(actualFile)
g.Expect(string(expectedContent)).To(BeEquivalentTo(string(actualContent)), actualTerratagFile+" does not match "+expectedTerratagFile)
}
}
Expand Down
File renamed without changes.
2 changes: 0 additions & 2 deletions test/fixture/terraform_15_1.1_filter/config.yaml

This file was deleted.

17 changes: 0 additions & 17 deletions test/fixture/terraform_15_1.2/config.yaml

This file was deleted.

2 changes: 0 additions & 2 deletions test/fixture/terraform_15_1.2_filter/config.yaml

This file was deleted.

17 changes: 0 additions & 17 deletions test/fixture/terraform_15_1.3/config.yaml

This file was deleted.

2 changes: 0 additions & 2 deletions test/fixture/terraform_15_1.3_filter/config.yaml

This file was deleted.

2 changes: 0 additions & 2 deletions test/fixture/terraform_15_1.3_skip/config.yaml

This file was deleted.

File renamed without changes.
1 change: 1 addition & 0 deletions test/tests/aws_azure/expected/main.terratag.tf
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,4 @@ resource "aws_s3_bucket" "should_have_tags" {
locals {
terratag_added_main = {"env0_environment_id"="40907eff-cf7c-419a-8694-e1c6bf1d1168","env0_project_id"="43fd4ff1-8d37-4d9d-ac97-295bd850bf94"}
}

1 change: 0 additions & 1 deletion test/tfenvconf/terraform_1.0/.terraform-version

This file was deleted.

1 change: 0 additions & 1 deletion test/tfenvconf/terraform_1.1/.terraform-version

This file was deleted.

1 change: 0 additions & 1 deletion test/tfenvconf/terraform_1.2/.terraform-version

This file was deleted.

1 change: 0 additions & 1 deletion test/tfenvconf/terraform_1.3/.terraform-version

This file was deleted.

2 changes: 1 addition & 1 deletion test/tfenvconf/terraform_15/.terraform-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.15.1
0.15.1
1 change: 1 addition & 0 deletions test/tfenvconf/terraform_latest/.terraform-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
latest

0 comments on commit b39183e

Please sign in to comment.