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  }