| package git |
| |
| import ( |
| "io/ioutil" |
| "testing" |
| ) |
| |
| const ( |
| REMOTENAME = "testremote" |
| ) |
| |
| func TestClone(t *testing.T) { |
| t.Parallel() |
| repo := createTestRepo(t) |
| defer cleanupTestRepo(t, repo) |
| |
| seedTestRepo(t, repo) |
| |
| path, err := ioutil.TempDir("", "git2go") |
| checkFatal(t, err) |
| |
| ref, err := repo.References.Lookup("refs/heads/master") |
| checkFatal(t, err) |
| |
| repo2, err := Clone(repo.Path(), path, &CloneOptions{Bare: true}) |
| defer cleanupTestRepo(t, repo2) |
| |
| checkFatal(t, err) |
| |
| ref2, err := repo2.References.Lookup("refs/heads/master") |
| checkFatal(t, err) |
| |
| if ref.Cmp(ref2) != 0 { |
| t.Fatal("reference in clone does not match original ref") |
| } |
| } |
| |
| func TestCloneWithCallback(t *testing.T) { |
| t.Parallel() |
| testPayload := 0 |
| |
| repo := createTestRepo(t) |
| defer cleanupTestRepo(t, repo) |
| |
| seedTestRepo(t, repo) |
| |
| path, err := ioutil.TempDir("", "git2go") |
| checkFatal(t, err) |
| |
| opts := CloneOptions{ |
| Bare: true, |
| RemoteCreateCallback: func(r *Repository, name, url string) (*Remote, ErrorCode) { |
| testPayload += 1 |
| |
| remote, err := r.Remotes.Create(REMOTENAME, url) |
| if err != nil { |
| return nil, ErrGeneric |
| } |
| |
| return remote, ErrOk |
| }, |
| } |
| |
| repo2, err := Clone(repo.Path(), path, &opts) |
| defer cleanupTestRepo(t, repo2) |
| |
| checkFatal(t, err) |
| |
| if testPayload != 1 { |
| t.Fatal("Payload's value has not been changed") |
| } |
| |
| remote, err := repo2.Remotes.Lookup(REMOTENAME) |
| if err != nil || remote == nil { |
| t.Fatal("Remote was not created properly") |
| } |
| } |