github.com/jingweno/gh@v2.1.1-0.20221007190738-04a7985fa9a1+incompatible/github/project_test.go (about) 1 package github 2 3 import ( 4 "github.com/bmizerany/assert" 5 "net/url" 6 "os" 7 "testing" 8 ) 9 10 func TestWebURL(t *testing.T) { 11 project := Project{Name: "foo", Owner: "bar", Host: "github.com"} 12 url := project.WebURL("", "", "baz") 13 assert.Equal(t, "https://github.com/bar/foo/baz", url) 14 15 url = project.WebURL("1", "2", "") 16 assert.Equal(t, "https://github.com/2/1", url) 17 18 url = project.WebURL("hub.wiki", "defunkt", "") 19 assert.Equal(t, "https://github.com/defunkt/hub/wiki", url) 20 21 url = project.WebURL("hub.wiki", "defunkt", "commits") 22 assert.Equal(t, "https://github.com/defunkt/hub/wiki/_history", url) 23 24 url = project.WebURL("hub.wiki", "defunkt", "pages") 25 assert.Equal(t, "https://github.com/defunkt/hub/wiki/_pages", url) 26 } 27 28 func TestGitURLGitHub(t *testing.T) { 29 os.Setenv("GH_PROTOCOL", "https") 30 project := Project{Name: "foo", Owner: "bar", Host: "github.com"} 31 32 url := project.GitURL("gh", "jingweno", false) 33 assert.Equal(t, "https://github.com/jingweno/gh.git", url) 34 35 os.Setenv("GH_PROTOCOL", "git") 36 url = project.GitURL("gh", "jingweno", false) 37 assert.Equal(t, "git://github.com/jingweno/gh.git", url) 38 39 url = project.GitURL("gh", "jingweno", true) 40 assert.Equal(t, "git@github.com:jingweno/gh.git", url) 41 } 42 43 func TestGitURLEnterprise(t *testing.T) { 44 project := Project{Name: "foo", Owner: "bar", Host: "https://github.corporate.com"} 45 46 os.Setenv("GH_PROTOCOL", "https") 47 url := project.GitURL("gh", "jingweno", false) 48 assert.Equal(t, "https://github.corporate.com/jingweno/gh.git", url) 49 50 os.Setenv("GH_PROTOCOL", "git") 51 url = project.GitURL("gh", "jingweno", false) 52 assert.Equal(t, "git://github.corporate.com/jingweno/gh.git", url) 53 54 url = project.GitURL("gh", "jingweno", true) 55 assert.Equal(t, "git@github.corporate.com:jingweno/gh.git", url) 56 } 57 58 func TestParseOwnerAndName(t *testing.T) { 59 owner, name := parseOwnerAndName("git://github.com/jingweno/gh.git") 60 assert.Equal(t, "gh", name) 61 assert.Equal(t, "jingweno", owner) 62 } 63 64 func TestMustMatchGitHubURL(t *testing.T) { 65 url, _ := mustMatchGitHubURL("git://github.com/jingweno/gh.git") 66 assert.Equal(t, "git://github.com/jingweno/gh.git", url[0]) 67 assert.Equal(t, "jingweno", url[1]) 68 assert.Equal(t, "gh", url[2]) 69 70 url, _ = mustMatchGitHubURL("git://github.com/jingweno/gh") 71 assert.Equal(t, "git://github.com/jingweno/gh", url[0]) 72 assert.Equal(t, "jingweno", url[1]) 73 assert.Equal(t, "gh", url[2]) 74 75 url, _ = mustMatchGitHubURL("git://git@github.com/jingweno/gh") 76 assert.Equal(t, "git://git@github.com/jingweno/gh", url[0]) 77 assert.Equal(t, "jingweno", url[1]) 78 assert.Equal(t, "gh", url[2]) 79 80 url, _ = mustMatchGitHubURL("git@github.com:jingweno/gh.git") 81 assert.Equal(t, "git@github.com:jingweno/gh.git", url[0]) 82 assert.Equal(t, "jingweno", url[1]) 83 assert.Equal(t, "gh", url[2]) 84 85 url, _ = mustMatchGitHubURL("git@github.com:jingweno/gh") 86 assert.Equal(t, "git@github.com:jingweno/gh", url[0]) 87 assert.Equal(t, "jingweno", url[1]) 88 assert.Equal(t, "gh", url[2]) 89 90 url, _ = mustMatchGitHubURL("https://github.com/jingweno/gh.git") 91 assert.Equal(t, "https://github.com/jingweno/gh.git", url[0]) 92 assert.Equal(t, "jingweno", url[1]) 93 assert.Equal(t, "gh", url[2]) 94 95 url, _ = mustMatchGitHubURL("https://github.com/jingweno/gh") 96 assert.Equal(t, "https://github.com/jingweno/gh", url[0]) 97 assert.Equal(t, "jingweno", url[1]) 98 assert.Equal(t, "gh", url[2]) 99 } 100 101 func TestNewProjectFromURL(t *testing.T) { 102 u, _ := url.Parse("ssh://git@github.com/octokit/go-octokit.git") 103 p, err := NewProjectFromURL(u) 104 105 assert.Equal(t, nil, err) 106 assert.Equal(t, "go-octokit", p.Name) 107 assert.Equal(t, "octokit", p.Owner) 108 109 u, _ = url.Parse("git://github.com/octokit/go-octokit.git") 110 p, err = NewProjectFromURL(u) 111 112 assert.Equal(t, nil, err) 113 assert.Equal(t, "go-octokit", p.Name) 114 assert.Equal(t, "octokit", p.Owner) 115 116 u, _ = url.Parse("https://github.com/octokit/go-octokit") 117 p, err = NewProjectFromURL(u) 118 119 assert.Equal(t, nil, err) 120 assert.Equal(t, "go-octokit", p.Name) 121 assert.Equal(t, "octokit", p.Owner) 122 123 u, _ = url.Parse("origin/master") 124 _, err = NewProjectFromURL(u) 125 126 assert.NotEqual(t, nil, err) 127 }