github.com/remind101/go-getter@v0.0.0-20180809191950-4bda8fa99001/get_mock.go (about)

     1  package getter
     2  
     3  import (
     4  	"net/url"
     5  )
     6  
     7  // MockGetter is an implementation of Getter that can be used for tests.
     8  type MockGetter struct {
     9  	// Proxy, if set, will be called after recording the calls below.
    10  	// If it isn't set, then the *Err values will be returned.
    11  	Proxy Getter
    12  
    13  	GetCalled bool
    14  	GetDst    string
    15  	GetURL    *url.URL
    16  	GetErr    error
    17  
    18  	GetFileCalled bool
    19  	GetFileDst    string
    20  	GetFileURL    *url.URL
    21  	GetFileErr    error
    22  }
    23  
    24  func (g *MockGetter) Get(dst string, u *url.URL) error {
    25  	g.GetCalled = true
    26  	g.GetDst = dst
    27  	g.GetURL = u
    28  
    29  	if g.Proxy != nil {
    30  		return g.Proxy.Get(dst, u)
    31  	}
    32  
    33  	return g.GetErr
    34  }
    35  
    36  func (g *MockGetter) GetFile(dst string, u *url.URL) error {
    37  	g.GetFileCalled = true
    38  	g.GetFileDst = dst
    39  	g.GetFileURL = u
    40  
    41  	if g.Proxy != nil {
    42  		return g.Proxy.GetFile(dst, u)
    43  	}
    44  	return g.GetFileErr
    45  }
    46  
    47  func (g *MockGetter) ClientMode(u *url.URL) (ClientMode, error) {
    48  	if l := len(u.Path); l > 0 && u.Path[l-1:] == "/" {
    49  		return ClientModeDir, nil
    50  	}
    51  	return ClientModeFile, nil
    52  }