1package getter
2
3import (
4	"os"
5	"os/exec"
6	"path/filepath"
7	"testing"
8)
9
10var testHasHg bool
11
12func init() {
13	if _, err := exec.LookPath("hg"); err == nil {
14		testHasHg = true
15	}
16}
17
18func TestHgGetter_impl(t *testing.T) {
19	var _ Getter = new(HgGetter)
20}
21
22func TestHgGetter(t *testing.T) {
23	if !testHasHg {
24		t.Log("hg not found, skipping")
25		t.Skip()
26	}
27
28	g := new(HgGetter)
29	dst := tempDir(t)
30
31	// With a dir that doesn't exist
32	if err := g.Get(dst, testModuleURL("basic-hg")); err != nil {
33		t.Fatalf("err: %s", err)
34	}
35
36	// Verify the main file exists
37	mainPath := filepath.Join(dst, "main.tf")
38	if _, err := os.Stat(mainPath); err != nil {
39		t.Fatalf("err: %s", err)
40	}
41}
42
43func TestHgGetter_branch(t *testing.T) {
44	if !testHasHg {
45		t.Log("hg not found, skipping")
46		t.Skip()
47	}
48
49	g := new(HgGetter)
50	dst := tempDir(t)
51
52	url := testModuleURL("basic-hg")
53	q := url.Query()
54	q.Add("rev", "test-branch")
55	url.RawQuery = q.Encode()
56
57	if err := g.Get(dst, url); err != nil {
58		t.Fatalf("err: %s", err)
59	}
60
61	// Verify the main file exists
62	mainPath := filepath.Join(dst, "main_branch.tf")
63	if _, err := os.Stat(mainPath); err != nil {
64		t.Fatalf("err: %s", err)
65	}
66
67	// Get again should work
68	if err := g.Get(dst, url); err != nil {
69		t.Fatalf("err: %s", err)
70	}
71
72	// Verify the main file exists
73	mainPath = filepath.Join(dst, "main_branch.tf")
74	if _, err := os.Stat(mainPath); err != nil {
75		t.Fatalf("err: %s", err)
76	}
77}
78
79func TestHgGetter_GetFile(t *testing.T) {
80	if !testHasHg {
81		t.Log("hg not found, skipping")
82		t.Skip()
83	}
84
85	g := new(HgGetter)
86	dst := tempTestFile(t)
87	defer os.RemoveAll(filepath.Dir(dst))
88
89	// Download
90	if err := g.GetFile(dst, testModuleURL("basic-hg/foo.txt")); err != nil {
91		t.Fatalf("err: %s", err)
92	}
93
94	// Verify the main file exists
95	if _, err := os.Stat(dst); err != nil {
96		t.Fatalf("err: %s", err)
97	}
98	assertContents(t, dst, "Hello\n")
99}
100