| package git |
| |
| import ( |
| "log" |
| "os" |
| "testing" |
| "time" |
| ) |
| |
| func Test_Push_ToRemote(t *testing.T) { |
| repo := createBareTestRepo(t) |
| defer os.RemoveAll(repo.Path()) |
| repo2 := createTestRepo(t) |
| defer os.RemoveAll(repo2.Workdir()) |
| |
| remote, err := repo2.CreateRemote("test_push", repo.Path()) |
| checkFatal(t, err) |
| |
| index, err := repo2.Index() |
| checkFatal(t, err) |
| |
| index.AddByPath("README") |
| |
| err = index.Write() |
| checkFatal(t, err) |
| |
| newTreeId, err := index.WriteTree() |
| checkFatal(t, err) |
| |
| tree, err := repo2.LookupTree(newTreeId) |
| checkFatal(t, err) |
| |
| sig := &Signature{Name: "Rand Om Hacker", Email: "random@hacker.com", When: time.Now()} |
| // this should cause master branch to be created if it does not already exist |
| _, err = repo2.CreateCommit("HEAD", sig, sig, "message", tree) |
| checkFatal(t, err) |
| |
| push, err := remote.NewPush() |
| checkFatal(t, err) |
| |
| err = push.AddRefspec("refs/heads/master") |
| checkFatal(t, err) |
| |
| err = push.Finish() |
| checkFatal(t, err) |
| |
| err = push.StatusForeach(func(ref string, msg string) int { |
| log.Printf("%s -> %s", ref, msg) |
| return 0 |
| }) |
| checkFatal(t, err) |
| |
| if !push.UnpackOk() { |
| t.Fatalf("unable to unpack") |
| } |
| |
| defer remote.Free() |
| defer repo.Free() |
| } |