Skip to content

Commit d29e963

Browse files
fix DT case for hcl parsing with percentage delimiter (#4012)
1 parent 2ecc785 commit d29e963

File tree

2 files changed

+8
-7
lines changed

2 files changed

+8
-7
lines changed

pkg/variables/parsers/VariableTemplateParser.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -213,20 +213,21 @@ func (impl *VariableTemplateParserImpl) convertToHclCompatible(templateType Vari
213213
}
214214
template = fmt.Sprintf(`{"root":%s}`, template)
215215
}
216-
template = impl.diluteExistingHclVars(template)
216+
template = impl.diluteExistingHclVars(template, "$")
217+
template = impl.diluteExistingHclVars(template, "%")
217218
return impl.convertToHclExpression(template), nil
218219
}
219220

220-
func (impl *VariableTemplateParserImpl) diluteExistingHclVars(template string) string {
221-
hclVarRegex := regexp.MustCompile(`\$\{`)
221+
func (impl *VariableTemplateParserImpl) diluteExistingHclVars(template string, templateControlKeyword string) string {
222+
hclVarRegex := regexp.MustCompile(templateControlKeyword + `\{`)
222223
indexesData := hclVarRegex.FindAllIndex([]byte(template), -1)
223224
var strBuilder strings.Builder
224225
strBuilder.Grow(len(template))
225226
currentIndex := 0
226227
for _, datum := range indexesData {
227228
startIndex := datum[0]
228229
endIndex := datum[1]
229-
strBuilder.WriteString(template[currentIndex:startIndex] + "$" + template[startIndex:endIndex])
230+
strBuilder.WriteString(template[currentIndex:startIndex] + templateControlKeyword + template[startIndex:endIndex])
230231
currentIndex = endIndex
231232
}
232233
if currentIndex <= len(template) {

pkg/variables/parsers/VariableTemplateParser_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,22 +35,22 @@ func TestVariableTemplateParserImpl_ParseTemplate(t *testing.T) {
3535
assert.Nil(t, err)
3636
templateParser := NewVariableTemplateParserImpl(logger)
3737
t.Run("parse template", func(t *testing.T) {
38-
scopedVariables := []*models.ScopedVariableData{{VariableName: "container-port-number-new", VariableValue: models.VariableValue{Value: "1800"}}}
38+
scopedVariables := []*models.ScopedVariableData{{VariableName: "container-port-number-new", VariableValue: &models.VariableValue{Value: "1800"}}}
3939
parserResponse := templateParser.ParseTemplate(VariableParserRequest{TemplateType: JsonVariableTemplate, Template: JsonWithIntParam, Variables: scopedVariables})
4040
parsedTemplate := parserResponse.ResolvedTemplate
4141
assert.Equal(t, JsonWithIntParamResolvedTemplate, parsedTemplate)
4242
})
4343

4444
t.Run("parse stringify template", func(t *testing.T) {
45-
scopedVariables := []*models.ScopedVariableData{{VariableName: "Variable1", VariableValue: models.VariableValue{Value: "123"}}}
45+
scopedVariables := []*models.ScopedVariableData{{VariableName: "Variable1", VariableValue: &models.VariableValue{Value: "123"}}}
4646
parserResponse := templateParser.ParseTemplate(VariableParserRequest{TemplateType: StringVariableTemplate, Template: StringTemplate, Variables: scopedVariables})
4747
err = parserResponse.Error
4848
assert.Nil(t, err)
4949
assert.Equal(t, StringTemplateResolved, parserResponse.ResolvedTemplate)
5050
})
5151

5252
t.Run("parse stringify template with int value", func(t *testing.T) {
53-
scopedVariables := []*models.ScopedVariableData{{VariableName: "container-port-number-new", VariableValue: models.VariableValue{Value: "1800"}}}
53+
scopedVariables := []*models.ScopedVariableData{{VariableName: "container-port-number-new", VariableValue: &models.VariableValue{Value: "1800"}}}
5454
parserResponse := templateParser.ParseTemplate(VariableParserRequest{TemplateType: StringVariableTemplate, Template: StringTemplateWithIntParam, Variables: scopedVariables})
5555
err = parserResponse.Error
5656
assert.Nil(t, err)

0 commit comments

Comments
 (0)