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 }