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  }