forks_test.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. package core
  2. import (
  3. "testing"
  4. "github.com/stretchr/testify/assert"
  5. "gopkg.in/src-d/go-git.v4"
  6. "gopkg.in/src-d/go-git.v4/plumbing"
  7. "gopkg.in/src-d/hercules.v10/internal/test"
  8. )
  9. type testForkPipelineItem struct {
  10. NoopMerger
  11. Mutable map[int]bool
  12. Immutable string
  13. }
  14. func (item *testForkPipelineItem) Name() string {
  15. return "Test"
  16. }
  17. func (item *testForkPipelineItem) Provides() []string {
  18. arr := [...]string{"test"}
  19. return arr[:]
  20. }
  21. func (item *testForkPipelineItem) Requires() []string {
  22. return []string{}
  23. }
  24. func (item *testForkPipelineItem) Configure(facts map[string]interface{}) error {
  25. return nil
  26. }
  27. func (item *testForkPipelineItem) ListConfigurationOptions() []ConfigurationOption {
  28. return nil
  29. }
  30. func (item *testForkPipelineItem) Flag() string {
  31. return "mytest"
  32. }
  33. func (item *testForkPipelineItem) Features() []string {
  34. return nil
  35. }
  36. func (item *testForkPipelineItem) Initialize(repository *git.Repository) error {
  37. item.Mutable = map[int]bool{}
  38. return nil
  39. }
  40. func (item *testForkPipelineItem) Consume(deps map[string]interface{}) (map[string]interface{}, error) {
  41. return map[string]interface{}{"test": "foo"}, nil
  42. }
  43. func (item *testForkPipelineItem) Fork(n int) []PipelineItem {
  44. return ForkCopyPipelineItem(item, n)
  45. }
  46. func TestForkCopyPipelineItem(t *testing.T) {
  47. origin := &testForkPipelineItem{}
  48. origin.Initialize(nil)
  49. origin.Mutable[2] = true
  50. origin.Immutable = "before"
  51. clone := origin.Fork(1)[0].(*testForkPipelineItem)
  52. origin.Immutable = "after"
  53. origin.Mutable[1] = true
  54. assert.True(t, clone.Mutable[1])
  55. assert.True(t, clone.Mutable[2])
  56. assert.Equal(t, "before", clone.Immutable)
  57. }
  58. func TestInsertHibernateBoot(t *testing.T) {
  59. plan := []runAction{
  60. {runActionEmerge, nil, []int{1, 2}},
  61. {runActionEmerge, nil, []int{3}},
  62. {runActionCommit, nil, []int{3}},
  63. {runActionCommit, nil, []int{3}},
  64. {runActionCommit, nil, []int{1}},
  65. {runActionFork, nil, []int{2, 4}},
  66. {runActionCommit, nil, []int{3}},
  67. {runActionCommit, nil, []int{3}},
  68. {runActionDelete, nil, []int{1}},
  69. {runActionMerge, nil, []int{2, 4}},
  70. }
  71. plan = insertHibernateBoot(plan, 2)
  72. assert.Equal(t, []runAction{
  73. {runActionEmerge, nil, []int{1, 2}},
  74. {runActionHibernate, nil, []int{1, 2}},
  75. {runActionEmerge, nil, []int{3}},
  76. {runActionCommit, nil, []int{3}},
  77. {runActionCommit, nil, []int{3}},
  78. {runActionBoot, nil, []int{1}},
  79. {runActionCommit, nil, []int{1}},
  80. {runActionBoot, nil, []int{2}},
  81. {runActionFork, nil, []int{2, 4}},
  82. {runActionHibernate, nil, []int{2, 4}},
  83. {runActionCommit, nil, []int{3}},
  84. {runActionCommit, nil, []int{3}},
  85. {runActionDelete, nil, []int{1}},
  86. {runActionBoot, nil, []int{2, 4}},
  87. {runActionMerge, nil, []int{2, 4}},
  88. }, plan)
  89. }
  90. func TestRunActionString(t *testing.T) {
  91. c, _ := test.Repository.CommitObject(plumbing.NewHash("c1002f4265a704c703207fafb95f1d4255bfae1a"))
  92. ra := runAction{runActionCommit, c, nil}
  93. assert.Equal(t, ra.String(), "c1002f4")
  94. ra = runAction{runActionFork, nil, []int{1, 2, 5}}
  95. assert.Equal(t, ra.String(), "fork^3")
  96. ra = runAction{runActionMerge, nil, []int{1, 2, 5}}
  97. assert.Equal(t, ra.String(), "merge^3")
  98. ra = runAction{runActionEmerge, nil, nil}
  99. assert.Equal(t, ra.String(), "emerge")
  100. ra = runAction{runActionDelete, nil, nil}
  101. assert.Equal(t, ra.String(), "delete")
  102. ra = runAction{runActionHibernate, nil, nil}
  103. assert.Equal(t, ra.String(), "hibernate")
  104. ra = runAction{runActionBoot, nil, nil}
  105. assert.Equal(t, ra.String(), "boot")
  106. }