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