summaryrefslogtreecommitdiff
path: root/remote_test.go
diff options
context:
space:
mode:
authorCarlos Martín Nieto <[email protected]>2015-01-09 10:17:55 +0100
committerCarlos Martín Nieto <[email protected]>2015-01-09 10:17:55 +0100
commitd260f21be3ae02814a23d6d077e29da63b983b77 (patch)
tree4819dae68b0c7fe9844c2bb8010995cc70f6be43 /remote_test.go
parentd54ebd5f5b29a4a893f0a58d0911bf94aa497087 (diff)
parentdbddb88a8cf1302049bcfaccf25aba21b2224f10 (diff)
Merge pull request #165 from calavera/remote_prune_refs
Add prune methods to Remote.
Diffstat (limited to 'remote_test.go')
-rw-r--r--remote_test.go83
1 files changed, 83 insertions, 0 deletions
diff --git a/remote_test.go b/remote_test.go
index 631a6cd..54a66ed 100644
--- a/remote_test.go
+++ b/remote_test.go
@@ -1,8 +1,10 @@
package git
import (
+ "fmt"
"os"
"testing"
+ "time"
)
func TestRefspecs(t *testing.T) {
@@ -132,3 +134,84 @@ func TestRemoteLsFiltering(t *testing.T) {
t.Fatalf("Expected head to have a name, but it's empty")
}
}
+
+func TestRemotePruneRefs(t *testing.T) {
+ repo := createTestRepo(t)
+ defer os.RemoveAll(repo.Workdir())
+ defer repo.Free()
+
+ config, err := repo.Config()
+ checkFatal(t, err)
+ defer config.Free()
+
+ err = config.SetBool("remote.origin.prune", true)
+ checkFatal(t, err)
+
+ _, err = repo.CreateRemote("origin", "https://github.com/libgit2/TestGitRepository")
+ checkFatal(t, err)
+
+ remote, err := repo.LookupRemote("origin")
+ checkFatal(t, err)
+
+ if !remote.PruneRefs() {
+ t.Fatal("Expected remote to be configured to prune references")
+ }
+}
+
+func TestRemotePrune(t *testing.T) {
+ remoteRepo := createTestRepo(t)
+ defer os.RemoveAll(remoteRepo.Workdir())
+ defer remoteRepo.Free()
+
+ head, _ := seedTestRepo(t, remoteRepo)
+ commit, err := remoteRepo.LookupCommit(head)
+ checkFatal(t, err)
+ defer commit.Free()
+
+ sig := &Signature{
+ Name: "Rand Om Hacker",
+ Email: "[email protected]",
+ When: time.Now(),
+ }
+
+ remoteRef, err := remoteRepo.CreateBranch("test-prune", commit, true, sig, "branch test-prune")
+ checkFatal(t, err)
+
+ repo := createTestRepo(t)
+ defer os.RemoveAll(repo.Workdir())
+ defer repo.Free()
+
+ config, err := repo.Config()
+ checkFatal(t, err)
+ defer config.Free()
+
+ remoteUrl := fmt.Sprintf("file://%s", remoteRepo.Workdir())
+ remote, err := repo.CreateRemote("origin", remoteUrl)
+ checkFatal(t, err)
+
+ err = remote.Fetch([]string{"test-prune"}, sig, "")
+ checkFatal(t, err)
+
+ _, err = repo.CreateReference("refs/remotes/origin/test-prune", head, true, sig, "remote reference")
+ checkFatal(t, err)
+
+ err = remoteRef.Delete()
+ checkFatal(t, err)
+
+ err = config.SetBool("remote.origin.prune", true)
+ checkFatal(t, err)
+
+ rr, err := repo.LookupRemote("origin")
+ checkFatal(t, err)
+
+ err = rr.ConnectFetch()
+ checkFatal(t, err)
+
+ err = rr.Prune()
+ checkFatal(t, err)
+
+ _, err = repo.LookupReference("refs/remotes/origin/test-prune")
+ if err == nil {
+ t.Fatal("Expected error getting a pruned reference")
+ }
+}