Skip to content

Commit 7aacef7

Browse files
authored
Fix perpetual diff when setting version to empty string (#1246)
1 parent 6bf6c4d commit 7aacef7

3 files changed

Lines changed: 49 additions & 1 deletion

File tree

.changelog/1246.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
```release-note:bug
2+
`helm_release`: Fix perpetual diff when version attribute is an empty string
3+
```
4+

helm/resource_release.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -850,7 +850,7 @@ func resourceDiff(ctx context.Context, d *schema.ResourceDiff, meta interface{})
850850
old, new := d.GetChange("version")
851851
oldVersion := strings.TrimPrefix(old.(string), "v")
852852
newVersion := strings.TrimPrefix(new.(string), "v")
853-
if oldVersion != newVersion {
853+
if oldVersion != newVersion && newVersion != "" {
854854
d.SetNewComputed("metadata")
855855
}
856856
}

helm/resource_release_test.go

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,38 @@ func TestAccResourceRelease_basic(t *testing.T) {
7373
})
7474
}
7575

76+
// NOTE this is a regression test for: https://github.com/hashicorp/terraform-provider-helm/issues/1236
77+
func TestAccResourceRelease_emptyVersion(t *testing.T) {
78+
name := randName("basic")
79+
namespace := createRandomNamespace(t)
80+
defer deleteNamespace(t, namespace)
81+
82+
resourceName := "helm_release.test"
83+
resource.Test(t, resource.TestCase{
84+
PreCheck: func() { testAccPreCheck(t) },
85+
ProviderFactories: map[string]func() (*schema.Provider, error){
86+
"helm": func() (*schema.Provider, error) {
87+
return Provider(), nil
88+
},
89+
},
90+
CheckDestroy: testAccCheckHelmReleaseDestroy(namespace),
91+
Steps: []resource.TestStep{
92+
{
93+
Config: testAccHelmReleaseConfigEmptyVersion(testResourceName, namespace, name),
94+
Check: resource.ComposeAggregateTestCheckFunc(
95+
resource.TestCheckResourceAttr(resourceName, "metadata.0.name", name),
96+
resource.TestCheckResourceAttr(resourceName, "metadata.0.namespace", namespace),
97+
resource.TestCheckResourceAttr(resourceName, "metadata.0.revision", "1"),
98+
resource.TestCheckResourceAttr(resourceName, "status", release.StatusDeployed.String()),
99+
resource.TestCheckResourceAttr(resourceName, "metadata.0.chart", "test-chart"),
100+
resource.TestCheckResourceAttr(resourceName, "metadata.0.version", "2.0.0"),
101+
resource.TestCheckResourceAttr(resourceName, "metadata.0.app_version", "1.19.5"),
102+
),
103+
},
104+
},
105+
})
106+
}
107+
76108
func TestAccResourceRelease_import(t *testing.T) {
77109
name := randName("import")
78110
namespace := createRandomNamespace(t)
@@ -875,6 +907,18 @@ func testAccHelmReleaseConfigBasic(resource, ns, name, version string) string {
875907
`, resource, name, ns, testRepositoryURL, version)
876908
}
877909

910+
func testAccHelmReleaseConfigEmptyVersion(resource, ns, name string) string {
911+
return fmt.Sprintf(`
912+
resource "helm_release" "%s" {
913+
name = %q
914+
namespace = %q
915+
repository = %q
916+
chart = "test-chart"
917+
version = ""
918+
}
919+
`, resource, name, ns, testRepositoryURL)
920+
}
921+
878922
func testAccHelmReleaseConfigValues(resource, ns, name, chart, version string, values []string) string {
879923
vals := make([]string, len(values))
880924
for i, v := range values {

0 commit comments

Comments
 (0)