| package vcs |
| |
| import ( |
| "fmt" |
| "io/ioutil" |
| "os" |
| "testing" |
| ) |
| |
| func ExampleNewRepo() { |
| remote := "https://github.com/Masterminds/vcs" |
| local, _ := ioutil.TempDir("", "go-vcs") |
| repo, _ := NewRepo(remote, local) |
| // Returns: instance of GitRepo |
| |
| repo.Vcs() |
| // Returns Git as this is a Git repo |
| |
| err := repo.Get() |
| // Pulls down a repo, or a checkout in the case of SVN, and returns an |
| // error if that didn't happen successfully. |
| if err != nil { |
| fmt.Println(err) |
| } |
| |
| err = repo.UpdateVersion("master") |
| // Checkouts out a specific version. In most cases this can be a commit id, |
| // branch, or tag. |
| if err != nil { |
| fmt.Println(err) |
| } |
| } |
| |
| func TestTypeSwitch(t *testing.T) { |
| |
| // To test repo type switching we checkout as SVN and then try to get it as |
| // a git repo afterwards. |
| tempDir, err := ioutil.TempDir("", "go-vcs-svn-tests") |
| if err != nil { |
| t.Error(err) |
| } |
| defer func() { |
| err = os.RemoveAll(tempDir) |
| if err != nil { |
| t.Error(err) |
| } |
| }() |
| |
| repo, err := NewSvnRepo("https://github.com/Masterminds/VCSTestRepo/trunk", tempDir+"/VCSTestRepo") |
| if err != nil { |
| t.Error(err) |
| } |
| err = repo.Get() |
| if err != nil { |
| t.Errorf("Unable to checkout SVN repo for repo switching tests. Err was %s", err) |
| } |
| |
| _, err = NewRepo("https://github.com/Masterminds/VCSTestRepo", tempDir+"/VCSTestRepo") |
| if err != ErrWrongVCS { |
| t.Errorf("Not detecting repo switch from SVN to Git") |
| } |
| } |
| |
| func TestDepInstalled(t *testing.T) { |
| i := depInstalled("git") |
| if i != true { |
| t.Error("depInstalled not finding installed dep.") |
| } |
| |
| i = depInstalled("thisreallyisntinstalled") |
| if i != false { |
| t.Error("depInstalled finding not installed dep.") |
| } |
| } |