2
0

config_diff_test.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package worker
  2. import (
  3. "sort"
  4. "testing"
  5. . "github.com/smartystreets/goconvey/convey"
  6. )
  7. func TestConfigDiff(t *testing.T) {
  8. Convey("When old and new configs are equal", t, func() {
  9. oldList := []mirrorConfig{
  10. mirrorConfig{Name: "debian"},
  11. mirrorConfig{Name: "debian-security"},
  12. mirrorConfig{Name: "fedora"},
  13. mirrorConfig{Name: "archlinux"},
  14. mirrorConfig{Name: "AOSP"},
  15. mirrorConfig{Name: "ubuntu"},
  16. }
  17. newList := make([]mirrorConfig, len(oldList))
  18. copy(newList, oldList)
  19. difference := diffMirrorConfig(oldList, newList)
  20. So(len(difference), ShouldEqual, 0)
  21. })
  22. Convey("When giving two config lists with different names", t, func() {
  23. oldList := []mirrorConfig{
  24. mirrorConfig{Name: "debian"},
  25. mirrorConfig{Name: "debian-security"},
  26. mirrorConfig{Name: "fedora"},
  27. mirrorConfig{Name: "archlinux"},
  28. mirrorConfig{Name: "AOSP", Env: map[string]string{"REPO": "/usr/bin/repo"}},
  29. mirrorConfig{Name: "ubuntu"},
  30. }
  31. newList := []mirrorConfig{
  32. mirrorConfig{Name: "debian"},
  33. mirrorConfig{Name: "debian-cd"},
  34. mirrorConfig{Name: "archlinuxcn"},
  35. mirrorConfig{Name: "AOSP", Env: map[string]string{"REPO": "/usr/local/bin/aosp-repo"}},
  36. mirrorConfig{Name: "ubuntu-ports"},
  37. }
  38. difference := diffMirrorConfig(oldList, newList)
  39. sort.Sort(sortableMirrorList(oldList))
  40. emptyList := []mirrorConfig{}
  41. for _, o := range oldList {
  42. keep := true
  43. for _, op := range difference {
  44. if (op.diffOp == diffDelete || op.diffOp == diffModify) &&
  45. op.mirCfg.Name == o.Name {
  46. keep = false
  47. break
  48. }
  49. }
  50. if keep {
  51. emptyList = append(emptyList, o)
  52. }
  53. }
  54. for _, op := range difference {
  55. if op.diffOp == diffAdd || op.diffOp == diffModify {
  56. emptyList = append(emptyList, op.mirCfg)
  57. }
  58. }
  59. sort.Sort(sortableMirrorList(emptyList))
  60. sort.Sort(sortableMirrorList(newList))
  61. So(emptyList, ShouldResemble, newList)
  62. })
  63. }