Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
NetworksByPriority: ensure the sort order is stable
NetworksByPriority calls sort.Slice() to sort the map of networks attached to a given service by their respective priority. The Priority property being non mandatory, it defaults to 0 when unspecified. The godoc for sort.Slice() specifies: > The sort is not guaranteed to be stable: equal elements may be > reversed from their original order. For a stable sort, use > SliceStable. SliceStable() won't work either, since NetworksByPriority has to transform the map of networks into a list before calling sort.Slice() -- Go makes no guarantee about the order of items in a map. The only way to guarantee a stable order is to fall back to lexicographic sorting when two networks have the same priority. It seems to be the best option as the compose-spec doesn't specify how multiple network attachment referencing the same network should be handled. A regression test has been added. Signed-off-by: Albin Kerouanton <albinker@gmail.com>