diff --git a/jenkins/util.go b/jenkins/util.go index 3ebd3ec..4a1159f 100644 --- a/jenkins/util.go +++ b/jenkins/util.go @@ -3,6 +3,7 @@ package jenkins import ( "context" "fmt" + "html" "log" "regexp" "strings" @@ -83,9 +84,11 @@ func templateDiff(k, old, new string, d *schema.ResourceData) bool { old = re.ReplaceAllString(old, "") old = strings.Replace(old, " ", "", -1) old = strings.TrimSpace(old) + old = html.UnescapeString(old) new = re.ReplaceAllString(new, "") new = strings.Replace(new, " ", "", -1) new = strings.TrimSpace(new) + new = html.UnescapeString(new) log.Printf("[DEBUG] jenkins::diff - Old: %q", old) log.Printf("[DEBUG] jenkins::diff - New: %q", new) diff --git a/jenkins/util_test.go b/jenkins/util_test.go index be07151..6aa49e5 100644 --- a/jenkins/util_test.go +++ b/jenkins/util_test.go @@ -108,6 +108,24 @@ func TestTemplateDiff(t *testing.T) { } } +func TestTemplateDiff_HTMLEntities(t *testing.T) { + job := resourceJenkinsFolder() + bag := job.TestResourceData() + _ = bag.Set("description", "Case") + + inputLeft := "'/'" + inputRight := "'/'" + if actual := templateDiff("", inputLeft, inputRight, bag); !actual { + t.Errorf("Expected %s to be considered equal to %s", inputLeft, inputRight) + } + + inputLeft = "'/'" + inputRight = "'/'" + if actual := templateDiff("", inputLeft, inputRight, bag); !actual { + t.Errorf("Expected %s to be considered equal to %s", inputLeft, inputRight) + } +} + func TestGenerateCredentialID(t *testing.T) { inputFolder, inputName := "test-folder", "test-name" actual := generateCredentialID(inputFolder, inputName)