forks_test.go 2.6 KB

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