Skip to content

Commit

Permalink
Merge branch 'main' into fix/goreleaser
Browse files Browse the repository at this point in the history
  • Loading branch information
JamesWoolfenden authored Jul 13, 2023
2 parents aa21620 + 0838f85 commit a71c281
Show file tree
Hide file tree
Showing 5 changed files with 60 additions and 3 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<img src="https://raw.githubusercontent.com/bridgecrewio/yor/master/docs/yor-logo.png?" width="350">

![Coverage](https://img.shields.io/badge/Coverage-81.8%25-brightgreen)
![Coverage](https://img.shields.io/badge/Coverage-81.4%25-brightgreen)
[![Maintained by Bridgecrew.io](https://img.shields.io/badge/maintained%20by-bridgecrew.io-blueviolet)](https://bridgecrew.io/?utm_source=github&utm_medium=organic_oss&utm_campaign=yor)
![golangci-lint](https://github.com/bridgecrewio/yor/workflows/tests/badge.svg)
[![security](https://github.com/bridgecrewio/yor/actions/workflows/security.yml/badge.svg)](https://github.com/bridgecrewio/yor/actions/workflows/security.yml)
Expand Down
8 changes: 6 additions & 2 deletions src/terraform/structure/terraform_parser.go
Original file line number Diff line number Diff line change
Expand Up @@ -725,7 +725,7 @@ func (p *TerraformParser) getHclMapsContents(tokens hclwrite.Tokens) []hclwrite.
func (p *TerraformParser) extractTagPairs(tokens hclwrite.Tokens) []hclwrite.Tokens {
// The function gets tokens and returns an array of tokens that represent key and value
// example: tokens: "a=1\n b=2, c=3", returns: ["a=1", "b=2", "c=3"]
separatorTokens := []hclsyntax.TokenType{hclsyntax.TokenComma, hclsyntax.TokenNewline}
separatorTokens := []hclsyntax.TokenType{hclsyntax.TokenComma, hclsyntax.TokenNewline, hclsyntax.TokenComment}

bracketsCounters := map[hclsyntax.TokenType]int{
hclsyntax.TokenOParen: 0,
Expand All @@ -746,7 +746,11 @@ func (p *TerraformParser) extractTagPairs(tokens hclwrite.Tokens) []hclwrite.Tok
for i, token := range tokens {
if utils.InSlice(separatorTokens, token.Type) && getUncloseBracketsCount(bracketsCounters) == 0 {
if hasEq {
tagPairs = append(tagPairs, tokens[startIndex:i])
endIndex := i
if token.Type == hclsyntax.TokenComment {
endIndex = i + 1
}
tagPairs = append(tagPairs, tokens[startIndex:endIndex])
}
startIndex = i + 1
hasEq = false
Expand Down
26 changes: 26 additions & 0 deletions src/terraform/structure/terraform_parser_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -377,6 +377,32 @@ func TestTerraformParser_Module(t *testing.T) {
assert.Equal(t, string(resultStr), string(expectedStr))
})

t.Run("Test parsing of existing tags with comments", func(t *testing.T) {
p := &TerraformParser{}
p.Init("../../../tests/terraform/data", nil)
defer p.Close()
sourceFilePath := "../../../tests/terraform/tags_with_comments/main.tf"
expectedFileName := "../../../tests/terraform/tags_with_comments/expected.txt"
blocks, err := p.ParseFile(sourceFilePath)
if err != nil {
t.Fail()
}

mb := blocks[0]
mb.AddNewTags([]tags.ITag{
&tags.Tag{Key: "mock_tag_2", Value: "mock_value"},
})

resultFileName := "result.txt"
defer func() {
_ = os.Remove(resultFileName)
}()
_ = p.WriteFile(sourceFilePath, blocks, resultFileName)
resultStr, _ := os.ReadFile(resultFileName)
expectedStr, _ := os.ReadFile(expectedFileName)
assert.Equal(t, string(resultStr), string(expectedStr))
})

t.Run("Test parsing of unsupported resources", func(t *testing.T) {
p := &TerraformParser{}
p.Init("../../../tests/terraform/supported", nil)
Expand Down
14 changes: 14 additions & 0 deletions tests/terraform/tags_with_comments/expected.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
data "aws_s3_bucket" "primary" {
count = var.create_bucket == true ? 0 : 1
bucket = "externally-created-bucket"
}

resource "aws_s3_bucket" "primary" {
count = var.create_bucket == true ? 1 : 0
bucket = "yor-bug-test-bucket"
tags = {
mock_tag = "mock_value" # This is for test
yor_trace = "some-uuid"
mock_tag_2 = "mock_value"
}
}
13 changes: 13 additions & 0 deletions tests/terraform/tags_with_comments/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
data "aws_s3_bucket" "primary" {
count = var.create_bucket == true ? 0 : 1
bucket = "externally-created-bucket"
}

resource "aws_s3_bucket" "primary" {
count = var.create_bucket == true ? 1 : 0
bucket = "yor-bug-test-bucket"
tags = {
mock_tag = "mock_value" # This is for test
yor_trace = "some-uuid"
}
}

0 comments on commit a71c281

Please sign in to comment.