From 7eacacbff288b1f1fcf4ed32d2fbafb7e668c75e Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Mon, 23 Jun 2014 12:32:04 -0700 Subject: [PATCH] terraform: MergeDiff can take nil diff --- terraform/state.go | 14 ++++++++------ terraform/state_test.go | 19 +++++++++++++++++++ 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/terraform/state.go b/terraform/state.go index 930ac7e74..ddb9c307b 100644 --- a/terraform/state.go +++ b/terraform/state.go @@ -131,13 +131,15 @@ func (s *ResourceState) MergeDiff(d *ResourceDiff) *ResourceState { result.Attributes[k] = v } } - for k, diff := range d.Attributes { - if diff.NewComputed { - result.Attributes[k] = config.UnknownVariableValue - continue - } + if d != nil { + for k, diff := range d.Attributes { + if diff.NewComputed { + result.Attributes[k] = config.UnknownVariableValue + continue + } - result.Attributes[k] = diff.New + result.Attributes[k] = diff.New + } } return &result diff --git a/terraform/state_test.go b/terraform/state_test.go index e3f24b3ec..b6edcae40 100644 --- a/terraform/state_test.go +++ b/terraform/state_test.go @@ -70,6 +70,25 @@ func TestResourceState_MergeDiff_nil(t *testing.T) { } } +func TestResourceState_MergeDiff_nilDiff(t *testing.T) { + rs := ResourceState{ + ID: "foo", + Attributes: map[string]string{ + "foo": "bar", + }, + } + + rs2 := rs.MergeDiff(nil) + + expected := map[string]string{ + "foo": "bar", + } + + if !reflect.DeepEqual(expected, rs2.Attributes) { + t.Fatalf("bad: %#v", rs2.Attributes) + } +} + func TestReadWriteState(t *testing.T) { state := &State{ Resources: map[string]*ResourceState{