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  }