diff options
Diffstat (limited to 'clone_test.go')
| -rw-r--r-- | clone_test.go | 57 |
1 files changed, 56 insertions, 1 deletions
diff --git a/clone_test.go b/clone_test.go index fd83fec..24c3a09 100644 --- a/clone_test.go +++ b/clone_test.go @@ -5,8 +5,12 @@ import ( "testing" ) -func TestClone(t *testing.T) { +const ( + REMOTENAME = "testremote" +) +func TestClone(t *testing.T) { + t.Parallel() repo := createTestRepo(t) defer cleanupTestRepo(t, repo) @@ -15,8 +19,59 @@ func TestClone(t *testing.T) { 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") + } } |
