summaryrefslogtreecommitdiff
path: root/clone_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'clone_test.go')
-rw-r--r--clone_test.go45
1 files changed, 44 insertions, 1 deletions
diff --git a/clone_test.go b/clone_test.go
index 7cdc362..a6bbf94 100644
--- a/clone_test.go
+++ b/clone_test.go
@@ -5,8 +5,11 @@ import (
"testing"
)
-func TestClone(t *testing.T) {
+const (
+ REMOTENAME = "testremote"
+)
+func TestClone(t *testing.T) {
repo := createTestRepo(t)
defer cleanupTestRepo(t, repo)
@@ -30,3 +33,43 @@ func TestClone(t *testing.T) {
t.Fatal("reference in clone does not match original ref")
}
}
+
+func TestCloneWithCallback(t *testing.T) {
+ 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")
+ }
+}