1package getter
2
3import (
4	"io/ioutil"
5	"net/http"
6	"net/http/httptest"
7	"net/url"
8	"os"
9	"path/filepath"
10	"reflect"
11	"testing"
12
13	urlhelper "github.com/hashicorp/go-getter/helper/url"
14)
15
16const fixtureDir = "./testdata"
17
18func tempDir(t *testing.T) string {
19	dir, err := ioutil.TempDir("", "tf")
20	if err != nil {
21		t.Fatalf("err: %s", err)
22	}
23	if err := os.RemoveAll(dir); err != nil {
24		t.Fatalf("err: %s", err)
25	}
26
27	return dir
28}
29
30func tempTestFile(t *testing.T) string {
31	dir := tempDir(t)
32	return filepath.Join(dir, "foo")
33}
34
35func testModule(n string) string {
36	p := filepath.Join(fixtureDir, n)
37	p, err := filepath.Abs(p)
38	if err != nil {
39		panic(err)
40	}
41	return fmtFileURL(p)
42}
43func httpTestModule(n string) *httptest.Server {
44	p := filepath.Join(fixtureDir, n)
45	p, err := filepath.Abs(p)
46	if err != nil {
47		panic(err)
48	}
49
50	return httptest.NewServer(http.FileServer(http.Dir(p)))
51}
52
53func testModuleURL(n string) *url.URL {
54	n, subDir := SourceDirSubdir(n)
55	u, err := urlhelper.Parse(testModule(n))
56	if err != nil {
57		panic(err)
58	}
59	if subDir != "" {
60		u.Path += "//" + subDir
61		u.RawPath = u.Path
62	}
63
64	return u
65}
66
67func testURL(s string) *url.URL {
68	u, err := urlhelper.Parse(s)
69	if err != nil {
70		panic(err)
71	}
72
73	return u
74}
75
76func testStorage(t *testing.T) Storage {
77	return &FolderStorage{StorageDir: tempDir(t)}
78}
79
80func assertContents(t *testing.T, path string, contents string) {
81	data, err := ioutil.ReadFile(path)
82	if err != nil {
83		t.Fatalf("err: %s", err)
84	}
85
86	if !reflect.DeepEqual(data, []byte(contents)) {
87		t.Fatalf("bad. expected:\n\n%s\n\nGot:\n\n%s", contents, string(data))
88	}
89}
90