core: Return correct number of planned updates
This commit is contained in:
parent
03dc6c4879
commit
e376f61d1d
|
@ -97,7 +97,7 @@ func (h *CountHook) PostDiff(
|
||||||
h.ToAdd += 1
|
h.ToAdd += 1
|
||||||
case terraform.DiffDestroy:
|
case terraform.DiffDestroy:
|
||||||
h.ToRemove += 1
|
h.ToRemove += 1
|
||||||
default:
|
case terraform.DiffUpdate:
|
||||||
h.ToChange += 1
|
h.ToChange += 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package command
|
package command
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/hashicorp/terraform/terraform"
|
"github.com/hashicorp/terraform/terraform"
|
||||||
|
@ -9,3 +10,175 @@ import (
|
||||||
func TestCountHook_impl(t *testing.T) {
|
func TestCountHook_impl(t *testing.T) {
|
||||||
var _ terraform.Hook = new(CountHook)
|
var _ terraform.Hook = new(CountHook)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestCountHookPostDiff_DestroyOnly(t *testing.T) {
|
||||||
|
h := new(CountHook)
|
||||||
|
|
||||||
|
resources := map[string]*terraform.InstanceDiff{
|
||||||
|
"foo": &terraform.InstanceDiff{Destroy: true},
|
||||||
|
"bar": &terraform.InstanceDiff{Destroy: true},
|
||||||
|
"lorem": &terraform.InstanceDiff{Destroy: true},
|
||||||
|
"ipsum": &terraform.InstanceDiff{Destroy: true},
|
||||||
|
}
|
||||||
|
|
||||||
|
n := &terraform.InstanceInfo{} // TODO
|
||||||
|
|
||||||
|
for _, d := range resources {
|
||||||
|
h.PostDiff(n, d)
|
||||||
|
}
|
||||||
|
|
||||||
|
expected := new(CountHook)
|
||||||
|
expected.ToAdd = 0
|
||||||
|
expected.ToChange = 0
|
||||||
|
expected.ToRemoveAndAdd = 0
|
||||||
|
expected.ToRemove = 4
|
||||||
|
|
||||||
|
if !reflect.DeepEqual(expected, h) {
|
||||||
|
t.Fatalf("Expected %#v, got %#v instead.",
|
||||||
|
expected, h)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCountHookPostDiff_AddOnly(t *testing.T) {
|
||||||
|
h := new(CountHook)
|
||||||
|
|
||||||
|
resources := map[string]*terraform.InstanceDiff{
|
||||||
|
"foo": &terraform.InstanceDiff{
|
||||||
|
Attributes: map[string]*terraform.ResourceAttrDiff{
|
||||||
|
"foo": &terraform.ResourceAttrDiff{RequiresNew: true},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"bar": &terraform.InstanceDiff{
|
||||||
|
Attributes: map[string]*terraform.ResourceAttrDiff{
|
||||||
|
"foo": &terraform.ResourceAttrDiff{RequiresNew: true},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"lorem": &terraform.InstanceDiff{
|
||||||
|
Attributes: map[string]*terraform.ResourceAttrDiff{
|
||||||
|
"foo": &terraform.ResourceAttrDiff{RequiresNew: true},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
n := &terraform.InstanceInfo{}
|
||||||
|
|
||||||
|
for _, d := range resources {
|
||||||
|
h.PostDiff(n, d)
|
||||||
|
}
|
||||||
|
|
||||||
|
expected := new(CountHook)
|
||||||
|
expected.ToAdd = 3
|
||||||
|
expected.ToChange = 0
|
||||||
|
expected.ToRemoveAndAdd = 0
|
||||||
|
expected.ToRemove = 0
|
||||||
|
|
||||||
|
if !reflect.DeepEqual(expected, h) {
|
||||||
|
t.Fatalf("Expected %#v, got %#v instead.",
|
||||||
|
expected, h)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCountHookPostDiff_ChangeOnly(t *testing.T) {
|
||||||
|
h := new(CountHook)
|
||||||
|
|
||||||
|
resources := map[string]*terraform.InstanceDiff{
|
||||||
|
"foo": &terraform.InstanceDiff{
|
||||||
|
Destroy: false,
|
||||||
|
Attributes: map[string]*terraform.ResourceAttrDiff{
|
||||||
|
"foo": &terraform.ResourceAttrDiff{},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"bar": &terraform.InstanceDiff{
|
||||||
|
Destroy: false,
|
||||||
|
Attributes: map[string]*terraform.ResourceAttrDiff{
|
||||||
|
"foo": &terraform.ResourceAttrDiff{},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"lorem": &terraform.InstanceDiff{
|
||||||
|
Destroy: false,
|
||||||
|
Attributes: map[string]*terraform.ResourceAttrDiff{
|
||||||
|
"foo": &terraform.ResourceAttrDiff{},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
n := &terraform.InstanceInfo{}
|
||||||
|
|
||||||
|
for _, d := range resources {
|
||||||
|
h.PostDiff(n, d)
|
||||||
|
}
|
||||||
|
|
||||||
|
expected := new(CountHook)
|
||||||
|
expected.ToAdd = 0
|
||||||
|
expected.ToChange = 3
|
||||||
|
expected.ToRemoveAndAdd = 0
|
||||||
|
expected.ToRemove = 0
|
||||||
|
|
||||||
|
if !reflect.DeepEqual(expected, h) {
|
||||||
|
t.Fatalf("Expected %#v, got %#v instead.",
|
||||||
|
expected, h)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCountHookPostDiff_Mixed(t *testing.T) {
|
||||||
|
h := new(CountHook)
|
||||||
|
|
||||||
|
resources := map[string]*terraform.InstanceDiff{
|
||||||
|
"foo": &terraform.InstanceDiff{
|
||||||
|
Destroy: true,
|
||||||
|
},
|
||||||
|
"bar": &terraform.InstanceDiff{},
|
||||||
|
"lorem": &terraform.InstanceDiff{
|
||||||
|
Destroy: false,
|
||||||
|
Attributes: map[string]*terraform.ResourceAttrDiff{
|
||||||
|
"foo": &terraform.ResourceAttrDiff{},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"ipsum": &terraform.InstanceDiff{Destroy: true},
|
||||||
|
}
|
||||||
|
|
||||||
|
n := &terraform.InstanceInfo{}
|
||||||
|
|
||||||
|
for _, d := range resources {
|
||||||
|
h.PostDiff(n, d)
|
||||||
|
}
|
||||||
|
|
||||||
|
expected := new(CountHook)
|
||||||
|
expected.ToAdd = 0
|
||||||
|
expected.ToChange = 1
|
||||||
|
expected.ToRemoveAndAdd = 0
|
||||||
|
expected.ToRemove = 2
|
||||||
|
|
||||||
|
if !reflect.DeepEqual(expected, h) {
|
||||||
|
t.Fatalf("Expected %#v, got %#v instead.",
|
||||||
|
expected, h)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCountHookPostDiff_NoChange(t *testing.T) {
|
||||||
|
h := new(CountHook)
|
||||||
|
|
||||||
|
resources := map[string]*terraform.InstanceDiff{
|
||||||
|
"foo": &terraform.InstanceDiff{},
|
||||||
|
"bar": &terraform.InstanceDiff{},
|
||||||
|
"lorem": &terraform.InstanceDiff{},
|
||||||
|
"ipsum": &terraform.InstanceDiff{},
|
||||||
|
}
|
||||||
|
|
||||||
|
n := &terraform.InstanceInfo{}
|
||||||
|
|
||||||
|
for _, d := range resources {
|
||||||
|
h.PostDiff(n, d)
|
||||||
|
}
|
||||||
|
|
||||||
|
expected := new(CountHook)
|
||||||
|
expected.ToAdd = 0
|
||||||
|
expected.ToChange = 0
|
||||||
|
expected.ToRemoveAndAdd = 0
|
||||||
|
expected.ToRemove = 0
|
||||||
|
|
||||||
|
if !reflect.DeepEqual(expected, h) {
|
||||||
|
t.Fatalf("Expected %#v, got %#v instead.",
|
||||||
|
expected, h)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue