1package getter
2
3import (
4	"net/url"
5)
6
7// MockGetter is an implementation of Getter that can be used for tests.
8type MockGetter struct {
9	getter
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
26func (g *MockGetter) Get(dst string, u *url.URL) error {
27	g.GetCalled = true
28	g.GetDst = dst
29	g.GetURL = u
30
31	if g.Proxy != nil {
32		return g.Proxy.Get(dst, u)
33	}
34
35	return g.GetErr
36}
37
38func (g *MockGetter) GetFile(dst string, u *url.URL) error {
39	g.GetFileCalled = true
40	g.GetFileDst = dst
41	g.GetFileURL = u
42
43	if g.Proxy != nil {
44		return g.Proxy.GetFile(dst, u)
45	}
46	return g.GetFileErr
47}
48
49func (g *MockGetter) ClientMode(u *url.URL) (ClientMode, error) {
50	if l := len(u.Path); l > 0 && u.Path[l-1:] == "/" {
51		return ClientModeDir, nil
52	}
53	return ClientModeFile, nil
54}
55