| package terraform |
| |
| import ( |
| "fmt" |
| "sort" |
| |
| "github.com/zclconf/go-cty/cty" |
| ) |
| |
| // marksEqual compares 2 unordered sets of PathValue marks for equality, with |
| // the comparison using the cty.PathValueMarks.Equal method. |
| func marksEqual(a, b []cty.PathValueMarks) bool { |
| if len(a) == 0 && len(b) == 0 { |
| return true |
| } |
| |
| if len(a) != len(b) { |
| return false |
| } |
| |
| less := func(s []cty.PathValueMarks) func(i, j int) bool { |
| return func(i, j int) bool { |
| // the sort only needs to be consistent, so use the GoString format |
| // to get a comparable value |
| return fmt.Sprintf("%#v", s[i]) < fmt.Sprintf("%#v", s[j]) |
| } |
| } |
| |
| sort.Slice(a, less(a)) |
| sort.Slice(b, less(b)) |
| |
| for i := 0; i < len(a); i++ { |
| if !a[i].Equal(b[i]) { |
| return false |
| } |
| } |
| |
| return true |
| } |