github.com/billybanfield/evergreen@v0.0.0-20170525200750-eeee692790f7/repotracker/mock_poller.go (about) 1 package repotracker 2 3 import ( 4 "github.com/evergreen-ci/evergreen/model" 5 ) 6 7 // MockRepoPoller is a utility for testing the repotracker using a dummy 8 // project 9 type mockRepoPoller struct { 10 project *model.Project 11 revisions []model.Revision 12 13 ConfigGets uint 14 nextError error 15 badDistro string 16 } 17 18 // Creates a new MockRepo poller with the given project settings 19 func NewMockRepoPoller(mockProject *model.Project, mockRevisions []model.Revision) *mockRepoPoller { 20 return &mockRepoPoller{ 21 project: mockProject, 22 revisions: mockRevisions, 23 } 24 } 25 26 func (d *mockRepoPoller) setNextError(err error) { 27 d.nextError = err 28 } 29 30 func (d *mockRepoPoller) addBadDistro(distro string) { 31 d.badDistro = distro 32 } 33 34 func (d *mockRepoPoller) clearError() (err error) { 35 err, d.nextError = d.nextError, nil 36 return err 37 } 38 39 func (d *mockRepoPoller) GetChangedFiles(commitRevision string) ([]string, error) { 40 return nil, nil 41 } 42 43 func (d *mockRepoPoller) GetRemoteConfig(revision string) (*model.Project, error) { 44 d.ConfigGets++ 45 if d.nextError != nil { 46 return nil, d.clearError() 47 } 48 if d.badDistro != "" { 49 // change the target distros if we've called addBadDistro, creating a validation warning 50 d.project.BuildVariants[0].RunOn = append(d.project.BuildVariants[0].RunOn, d.badDistro) 51 d.badDistro = "" 52 } 53 return d.project, nil 54 } 55 56 func (d *mockRepoPoller) GetRevisionsSince(revision string, maxRevisionsToSearch int) ([]model.Revision, error) { 57 if d.nextError != nil { 58 return nil, d.clearError() 59 } 60 return d.revisions, nil 61 } 62 63 func (d *mockRepoPoller) GetRecentRevisions(maxRevisionsToSearch int) ([]model.Revision, error) { 64 if d.nextError != nil { 65 return nil, d.clearError() 66 } 67 return d.revisions, nil 68 }