day_test.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. package plumbing
  2. import (
  3. "testing"
  4. "github.com/stretchr/testify/assert"
  5. "gopkg.in/src-d/go-git.v4/plumbing"
  6. "gopkg.in/src-d/hercules.v4/internal/core"
  7. "gopkg.in/src-d/hercules.v4/internal/test"
  8. )
  9. func fixtureDaysSinceStart() *DaysSinceStart {
  10. dss := DaysSinceStart{}
  11. dss.Configure(map[string]interface{}{})
  12. dss.Initialize(test.Repository)
  13. return &dss
  14. }
  15. func TestDaysSinceStartMeta(t *testing.T) {
  16. dss := fixtureDaysSinceStart()
  17. assert.Equal(t, dss.Name(), "DaysSinceStart")
  18. assert.Equal(t, len(dss.Provides()), 1)
  19. assert.Equal(t, dss.Provides()[0], DependencyDay)
  20. assert.Equal(t, len(dss.Requires()), 0)
  21. assert.Len(t, dss.ListConfigurationOptions(), 0)
  22. dss.Configure(map[string]interface{}{})
  23. }
  24. func TestDaysSinceStartRegistration(t *testing.T) {
  25. summoned := core.Registry.Summon((&DaysSinceStart{}).Name())
  26. assert.Len(t, summoned, 1)
  27. assert.Equal(t, summoned[0].Name(), "DaysSinceStart")
  28. summoned = core.Registry.Summon((&DaysSinceStart{}).Provides()[0])
  29. assert.Len(t, summoned, 1)
  30. assert.Equal(t, summoned[0].Name(), "DaysSinceStart")
  31. }
  32. func TestDaysSinceStartConsume(t *testing.T) {
  33. dss := fixtureDaysSinceStart()
  34. deps := map[string]interface{}{}
  35. commit, _ := test.Repository.CommitObject(plumbing.NewHash(
  36. "cce947b98a050c6d356bc6ba95030254914027b1"))
  37. deps[core.DependencyCommit] = commit
  38. deps[core.DependencyIndex] = 0
  39. res, err := dss.Consume(deps)
  40. assert.Nil(t, err)
  41. assert.Equal(t, res[DependencyDay].(int), 0)
  42. assert.Equal(t, dss.previousDay, 0)
  43. assert.Equal(t, dss.day0.Hour(), 1) // 18 UTC+1
  44. assert.Equal(t, dss.day0.Minute(), 0) // 30
  45. assert.Equal(t, dss.day0.Second(), 0) // 29
  46. commit, _ = test.Repository.CommitObject(plumbing.NewHash(
  47. "fc9ceecb6dabcb2aab60e8619d972e8d8208a7df"))
  48. deps[core.DependencyCommit] = commit
  49. deps[core.DependencyIndex] = 10
  50. res, err = dss.Consume(deps)
  51. assert.Nil(t, err)
  52. assert.Equal(t, res[DependencyDay].(int), 1)
  53. assert.Equal(t, dss.previousDay, 1)
  54. commit, _ = test.Repository.CommitObject(plumbing.NewHash(
  55. "a3ee37f91f0d705ec9c41ae88426f0ae44b2fbc3"))
  56. deps[core.DependencyCommit] = commit
  57. deps[core.DependencyIndex] = 20
  58. res, err = dss.Consume(deps)
  59. assert.Nil(t, err)
  60. assert.Equal(t, res[DependencyDay].(int), 1)
  61. assert.Equal(t, dss.previousDay, 1)
  62. commit, _ = test.Repository.CommitObject(plumbing.NewHash(
  63. "a8b665a65d7aced63f5ba2ff6d9b71dac227f8cf"))
  64. deps[core.DependencyCommit] = commit
  65. deps[core.DependencyIndex] = 20
  66. res, err = dss.Consume(deps)
  67. assert.Nil(t, err)
  68. assert.Equal(t, res[DependencyDay].(int), 2)
  69. assert.Equal(t, dss.previousDay, 2)
  70. commit, _ = test.Repository.CommitObject(plumbing.NewHash(
  71. "186ff0d7e4983637bb3762a24d6d0a658e7f4712"))
  72. deps[core.DependencyCommit] = commit
  73. deps[core.DependencyIndex] = 30
  74. res, err = dss.Consume(deps)
  75. assert.Nil(t, err)
  76. assert.Equal(t, res[DependencyDay].(int), 2)
  77. assert.Equal(t, dss.previousDay, 2)
  78. assert.Len(t, dss.commits, 3)
  79. assert.Equal(t, dss.commits[0], []plumbing.Hash{plumbing.NewHash(
  80. "cce947b98a050c6d356bc6ba95030254914027b1")})
  81. assert.Equal(t, dss.commits[1], []plumbing.Hash{
  82. plumbing.NewHash("fc9ceecb6dabcb2aab60e8619d972e8d8208a7df"),
  83. plumbing.NewHash("a3ee37f91f0d705ec9c41ae88426f0ae44b2fbc3")})
  84. assert.Equal(t, dss.commits[2], []plumbing.Hash{
  85. plumbing.NewHash("a8b665a65d7aced63f5ba2ff6d9b71dac227f8cf"),
  86. plumbing.NewHash("186ff0d7e4983637bb3762a24d6d0a658e7f4712")})
  87. }
  88. func TestDaysCommits(t *testing.T) {
  89. dss := fixtureDaysSinceStart()
  90. dss.commits[0] = []plumbing.Hash{plumbing.NewHash(
  91. "cce947b98a050c6d356bc6ba95030254914027b1")}
  92. commits := dss.commits
  93. dss.Initialize(test.Repository)
  94. assert.Len(t, dss.commits, 0)
  95. assert.Equal(t, dss.commits, commits)
  96. }
  97. func TestDaysSinceStartFork(t *testing.T) {
  98. dss1 := fixtureDaysSinceStart()
  99. dss1.commits[0] = []plumbing.Hash{plumbing.NewHash(
  100. "cce947b98a050c6d356bc6ba95030254914027b1")}
  101. clones := dss1.Fork(1)
  102. assert.Len(t, clones, 1)
  103. dss2 := clones[0].(*DaysSinceStart)
  104. assert.Equal(t, dss1.day0, dss2.day0)
  105. assert.Equal(t, dss1.previousDay, dss2.previousDay)
  106. assert.Equal(t, dss1.commits, dss2.commits)
  107. dss1.commits[0] = append(dss1.commits[0], plumbing.ZeroHash)
  108. assert.Len(t, dss2.commits[0], 2)
  109. assert.True(t, dss1 != dss2)
  110. // just for the sake of it
  111. dss1.Merge([]core.PipelineItem{dss2})
  112. }