github.com/hashicorp/go-getter/v2@v2.2.2/get_mock.go (about)

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