forked from typester/gh-open
-
Notifications
You must be signed in to change notification settings - Fork 0
/
remote_test.go
139 lines (117 loc) · 2.89 KB
/
remote_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
package main
import (
"io/ioutil"
"os/exec"
"regexp"
"syscall"
"testing"
)
func TestDetectRemote_NotGit(t *testing.T) {
dir, err := ioutil.TempDir("", "")
if err != nil {
t.Error("failed to create tempdir:", err)
}
defer syscall.Rmdir(dir)
remotes, err := DetectRemote(dir)
if remotes != nil {
t.Error("unexpected result:", remotes)
}
if err == nil {
t.Error("error should be set")
}
re := regexp.MustCompile(`^exit status \d+`)
if re.MatchString(err.Error()) == false {
t.Error("unexpected error", err)
}
}
func TestDetectRemote_NotFound(t *testing.T) {
dir, err := ioutil.TempDir("", "")
if err != nil {
t.Error("failed to create tempdir:", err)
}
defer syscall.Rmdir(dir)
remotes, err := DetectRemote(dir + "/not_found")
if remotes != nil {
t.Error("unexpected result:", remotes)
}
if err == nil {
t.Error("error should be set")
}
re := regexp.MustCompile(`^chdir `)
if re.MatchString(err.Error()) == false {
t.Error("unexpected error", err)
}
}
func TestDetectRemote(t *testing.T) {
dir, err := ioutil.TempDir("", "")
if err != nil {
t.Error("failed to create tempdir:", err)
}
defer syscall.Rmdir(dir)
git := exec.Command("git", "init")
git.Dir = dir
if err := git.Run(); err != nil {
t.Error("failed to run git init:", err)
}
git = exec.Command("git", "remote", "add", "origin", "git@github.com:username/repo.git")
git.Dir = dir
if err := git.Run(); err != nil {
t.Error("failed to run git init:", err)
}
remotes, err := DetectRemote(dir)
if err != nil {
t.Error("error should be nil:", err)
}
if len(remotes) < 1 {
t.Error("unexpected remotes count")
}
if remotes[0].Name != "origin" {
t.Error("unexpected remote name", remotes[0].Name)
}
if remotes[0].Url != "git@github.com:username/repo.git" {
t.Error("unexpected remote url", remotes[0].Url)
}
}
func TestMangleURL(t *testing.T) {
expected := "https://github.com/username/repo"
// ssh
u, err := MangleURL("git@github.com:username/repo.git")
if err != nil {
t.Error("error should be nil:", err)
}
if u != expected {
t.Error("unexpected url:", u)
}
// https
u, err = MangleURL("https://github.com/username/repo.git")
if err != nil {
t.Error("error should be nil:", err)
}
if u != expected {
t.Error("unexpected url:", u)
}
// git
u, err = MangleURL("git://github.com/username/repo.git")
if err != nil {
t.Error("error should be nil:", err)
}
if u != expected {
t.Error("unexpected url:", u)
}
// different host
u, err = MangleURL("git@example.com:username/repo.git")
if err == nil {
t.Error("error should be set:", err)
}
if err.Error() != "invalid github host: example.com" {
t.Error("unexpected error:", err)
}
// unsupported host
u, err = MangleURL("git@example.com:repo.git")
if err == nil {
t.Error("error should be set:", err)
}
if err.Error() != "unsupported remote url: git@example.com:repo.git" {
t.Error("unexpected error:", err)
}
}