github.com/kazu/ghq@v0.8.1-0.20180818162325-dedd532b4440/local_repository_test.go (about) 1 package main 2 3 import ( 4 . "github.com/onsi/gomega" 5 "io/ioutil" 6 "path/filepath" 7 "testing" 8 ) 9 10 import ( 11 "net/url" 12 "os" 13 ) 14 15 func TestNewLocalRepository(t *testing.T) { 16 RegisterTestingT(t) 17 18 _localRepositoryRoots = []string{"/repos"} 19 20 r, err := LocalRepositoryFromFullPath("/repos/github.com/motemen/ghq") 21 Expect(err).To(BeNil()) 22 Expect(r.NonHostPath()).To(Equal("motemen/ghq")) 23 Expect(r.Subpaths()).To(Equal([]string{"ghq", "motemen/ghq", "github.com/motemen/ghq"})) 24 25 r, err = LocalRepositoryFromFullPath("/repos/stash.com/scm/motemen/ghq") 26 Expect(err).To(BeNil()) 27 Expect(r.NonHostPath()).To(Equal("scm/motemen/ghq")) 28 Expect(r.Subpaths()).To(Equal([]string{"ghq", "motemen/ghq", "scm/motemen/ghq", "stash.com/scm/motemen/ghq"})) 29 30 githubURL, _ := url.Parse("ssh://git@github.com/motemen/ghq.git") 31 r = LocalRepositoryFromURL(githubURL) 32 Expect(r.FullPath).To(Equal("/repos/github.com/motemen/ghq")) 33 34 stashURL, _ := url.Parse("ssh://git@stash.com/scm/motemen/ghq") 35 r = LocalRepositoryFromURL(stashURL) 36 Expect(r.FullPath).To(Equal("/repos/stash.com/scm/motemen/ghq")) 37 38 svnSourceforgeURL, _ := url.Parse("http://svn.code.sf.net/p/ghq/code/trunk") 39 r = LocalRepositoryFromURL(svnSourceforgeURL) 40 Expect(r.FullPath).To(Equal("/repos/svn.code.sf.net/p/ghq/code/trunk")) 41 42 gitSourceforgeURL, _ := url.Parse("http://git.code.sf.net/p/ghq/code") 43 r = LocalRepositoryFromURL(gitSourceforgeURL) 44 Expect(r.FullPath).To(Equal("/repos/git.code.sf.net/p/ghq/code")) 45 46 svnSourceforgeJpURL, _ := url.Parse("http://scm.sourceforge.jp/svnroot/ghq/") 47 r = LocalRepositoryFromURL(svnSourceforgeJpURL) 48 Expect(r.FullPath).To(Equal("/repos/scm.sourceforge.jp/svnroot/ghq")) 49 50 gitSourceforgeJpURL, _ := url.Parse("http://scm.sourceforge.jp/gitroot/ghq/ghq.git") 51 r = LocalRepositoryFromURL(gitSourceforgeJpURL) 52 Expect(r.FullPath).To(Equal("/repos/scm.sourceforge.jp/gitroot/ghq/ghq")) 53 54 svnAssemblaURL, _ := url.Parse("https://subversion.assembla.com/svn/ghq/") 55 r = LocalRepositoryFromURL(svnAssemblaURL) 56 Expect(r.FullPath).To(Equal("/repos/subversion.assembla.com/svn/ghq")) 57 58 gitAssemblaURL, _ := url.Parse("https://git.assembla.com/ghq.git") 59 r = LocalRepositoryFromURL(gitAssemblaURL) 60 Expect(r.FullPath).To(Equal("/repos/git.assembla.com/ghq")) 61 } 62 63 func TestLocalRepositoryRoots(t *testing.T) { 64 RegisterTestingT(t) 65 66 defer func(orig string) { os.Setenv("GHQ_ROOT", orig) }(os.Getenv("GHQ_ROOT")) 67 68 _localRepositoryRoots = nil 69 os.Setenv("GHQ_ROOT", "/path/to/ghqroot") 70 Expect(localRepositoryRoots()).To(Equal([]string{"/path/to/ghqroot"})) 71 72 _localRepositoryRoots = nil 73 os.Setenv("GHQ_ROOT", "/path/to/ghqroot1"+string(os.PathListSeparator)+"/path/to/ghqroot2") 74 Expect(localRepositoryRoots()).To(Equal([]string{"/path/to/ghqroot1", "/path/to/ghqroot2"})) 75 } 76 77 // https://gist.github.com/kyanny/c231f48e5d08b98ff2c3 78 func TestList_Symlink(t *testing.T) { 79 RegisterTestingT(t) 80 81 root, err := ioutil.TempDir("", "") 82 Expect(err).To(BeNil()) 83 84 symDir, err := ioutil.TempDir("", "") 85 Expect(err).To(BeNil()) 86 87 _localRepositoryRoots = []string{root} 88 89 err = os.MkdirAll(filepath.Join(root, "github.com", "atom", "atom", ".git"), 0777) 90 Expect(err).To(BeNil()) 91 92 err = os.MkdirAll(filepath.Join(root, "github.com", "zabbix", "zabbix", ".git"), 0777) 93 Expect(err).To(BeNil()) 94 95 err = os.Symlink(symDir, filepath.Join(root, "github.com", "ghq")) 96 Expect(err).To(BeNil()) 97 98 paths := []string{} 99 walkLocalRepositories(func(repo *LocalRepository) { 100 paths = append(paths, repo.RelPath) 101 }) 102 103 Expect(paths).To(HaveLen(2)) 104 }