Skip to content

Commit

Permalink
Merge pull request #3573 from hashicorp/b-state-store-module-order-co…
Browse files Browse the repository at this point in the history
…nsistently

core: store deeply nested modules in a consistent order in the state
  • Loading branch information
phinze committed Oct 20, 2015
2 parents 68e0133 + 05c0998 commit 5b1c038
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 3 deletions.
5 changes: 2 additions & 3 deletions terraform/state.go
Original file line number Diff line number Diff line change
Expand Up @@ -1207,9 +1207,8 @@ func (s moduleStateSort) Less(i, j int) bool {
return len(a.Path) < len(b.Path)
}

// Otherwise, compare by last path element
idx := len(a.Path) - 1
return a.Path[idx] < b.Path[idx]
// Otherwise, compare lexically
return strings.Join(a.Path, ".") < strings.Join(b.Path, ".")
}

func (s moduleStateSort) Swap(i, j int) {
Expand Down
17 changes: 17 additions & 0 deletions terraform/state_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,23 @@ func TestStateAddModule(t *testing.T) {
[]string{"root", "foo", "bar"},
},
},
// Same last element, different middle element
{
[][]string{
[]string{"root", "foo", "bar"}, // This one should sort after...
[]string{"root", "foo"},
[]string{"root"},
[]string{"root", "bar", "bar"}, // ...this one.
[]string{"root", "bar"},
},
[][]string{
[]string{"root"},
[]string{"root", "bar"},
[]string{"root", "foo"},
[]string{"root", "bar", "bar"},
[]string{"root", "foo", "bar"},
},
},
}

for _, tc := range cases {
Expand Down

0 comments on commit 5b1c038

Please sign in to comment.