Merge remote-tracking branch 'upstream/master' into v22
This commit is contained in:
commit
640e65514a
|
@ -13,6 +13,7 @@ go:
|
||||||
- 1.1
|
- 1.1
|
||||||
- 1.2
|
- 1.2
|
||||||
- 1.3
|
- 1.3
|
||||||
|
- 1.4
|
||||||
- tip
|
- tip
|
||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
|
|
16
README.md
16
README.md
|
@ -1,6 +1,6 @@
|
||||||
git2go
|
git2go
|
||||||
======
|
======
|
||||||
[](http://godoc.org/github.com/libgit2/git2go) [](https://travis-ci.org/libgit2/git2go)
|
[](http://godoc.org/github.com/libgit2/git2go) [](https://travis-ci.org/libgit2/git2go)
|
||||||
|
|
||||||
|
|
||||||
Go bindings for [libgit2](http://libgit2.github.com/). The `master` branch follows the latest libgit2 release. The versioned branches indicate which libgit2 version they work against.
|
Go bindings for [libgit2](http://libgit2.github.com/). The `master` branch follows the latest libgit2 release. The versioned branches indicate which libgit2 version they work against.
|
||||||
|
@ -8,17 +8,23 @@ Go bindings for [libgit2](http://libgit2.github.com/). The `master` branch follo
|
||||||
Installing
|
Installing
|
||||||
----------
|
----------
|
||||||
|
|
||||||
This project needs libgit2, which is written in C so we need to build that as well. In order to build libgit2, you need `cmake`, `pkg-config` and a C compiler. You will also need the development packages for OpenSSL and LibSSH2 installed if you want libgit2 to support HTTPS and SSH respectively.
|
This project wraps the functionality provided by libgit2. If you're using a stable version, install it to your system via your system's package manger and then install git2go as usual.
|
||||||
|
|
||||||
|
Otherwise (`next` which tracks an unstable version), we need to build libgit2 as well. In order to build it, you need `cmake`, `pkg-config` and a C compiler. You will also need the development packages for OpenSSL and LibSSH2 installed if you want libgit2 to support HTTPS and SSH respectively.
|
||||||
|
|
||||||
### Stable version
|
### Stable version
|
||||||
|
|
||||||
git2go has versioned branches which indicate which version of libgit2 they work against. Install the development package it on your system via your favourite package manager or from source and you can use a service like gopkg.in to use the appropriate version. For the libgit2 v0.22 case, you can use
|
git2go has `master` which tracks the latest release of libgit2, and versioned branches which indicate which version of libgit2 they work against. Install the development package it on your system via your favourite package manager or from source and you can use a service like gopkg.in to use the appropriate version. For the libgit2 v0.22 case, you can use
|
||||||
|
|
||||||
import "gopkg.in/libgit2/git2go.v22"
|
import "gopkg.in/libgit2/git2go.v22"
|
||||||
|
|
||||||
to use a version of git2go which will work against libgit2 v0.22 and dynamically link to the library.
|
to use a version of git2go which will work against libgit2 v0.22 and dynamically link to the library. You can use
|
||||||
|
|
||||||
### From master
|
import "github.com/libgit2/git2go"
|
||||||
|
|
||||||
|
to use the version which works against the latest release.
|
||||||
|
|
||||||
|
### From `next`
|
||||||
|
|
||||||
The `next` branch follows libgit2's master branch, which means there is no stable API or ABI to link against. git2go can statically link against a vendored version of libgit2.
|
The `next` branch follows libgit2's master branch, which means there is no stable API or ABI to link against. git2go can statically link against a vendored version of libgit2.
|
||||||
|
|
||||||
|
|
|
@ -1,15 +1,13 @@
|
||||||
package git
|
package git
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
|
||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestBlame(t *testing.T) {
|
func TestBlame(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer repo.Free()
|
defer cleanupTestRepo(t, repo)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
|
||||||
|
|
||||||
commitId1, _ := seedTestRepo(t, repo)
|
commitId1, _ := seedTestRepo(t, repo)
|
||||||
commitId2, _ := updateReadme(t, repo, "foo\nbar\nbaz\n")
|
commitId2, _ := updateReadme(t, repo, "foo\nbar\nbaz\n")
|
||||||
|
|
|
@ -1,13 +1,12 @@
|
||||||
package git
|
package git
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestCreateBlobFromBuffer(t *testing.T) {
|
func TestCreateBlobFromBuffer(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
id, err := repo.CreateBlobFromBuffer(make([]byte, 0))
|
id, err := repo.CreateBlobFromBuffer(make([]byte, 0))
|
||||||
checkFatal(t, err)
|
checkFatal(t, err)
|
||||||
|
|
|
@ -1,9 +1,13 @@
|
||||||
package git
|
package git
|
||||||
|
|
||||||
import "testing"
|
import (
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
func TestBranchIterator(t *testing.T) {
|
func TestBranchIterator(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
seedTestRepo(t, repo)
|
seedTestRepo(t, repo)
|
||||||
|
|
||||||
i, err := repo.NewBranchIterator(BranchLocal)
|
i, err := repo.NewBranchIterator(BranchLocal)
|
||||||
|
@ -24,6 +28,8 @@ func TestBranchIterator(t *testing.T) {
|
||||||
|
|
||||||
func TestBranchIteratorEach(t *testing.T) {
|
func TestBranchIteratorEach(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
seedTestRepo(t, repo)
|
seedTestRepo(t, repo)
|
||||||
|
|
||||||
i, err := repo.NewBranchIterator(BranchLocal)
|
i, err := repo.NewBranchIterator(BranchLocal)
|
||||||
|
|
|
@ -38,6 +38,7 @@ type CheckoutOpts struct {
|
||||||
FileMode os.FileMode // Default is 0644 or 0755 as dictated by blob
|
FileMode os.FileMode // Default is 0644 or 0755 as dictated by blob
|
||||||
FileOpenFlags int // Default is O_CREAT | O_TRUNC | O_WRONLY
|
FileOpenFlags int // Default is O_CREAT | O_TRUNC | O_WRONLY
|
||||||
TargetDirectory string // Alternative checkout path to workdir
|
TargetDirectory string // Alternative checkout path to workdir
|
||||||
|
Paths []string
|
||||||
}
|
}
|
||||||
|
|
||||||
func checkoutOptionsFromC(c *C.git_checkout_options) CheckoutOpts {
|
func checkoutOptionsFromC(c *C.git_checkout_options) CheckoutOpts {
|
||||||
|
@ -78,6 +79,11 @@ func populateCheckoutOpts(ptr *C.git_checkout_options, opts *CheckoutOpts) *C.gi
|
||||||
if opts.TargetDirectory != "" {
|
if opts.TargetDirectory != "" {
|
||||||
ptr.target_directory = C.CString(opts.TargetDirectory)
|
ptr.target_directory = C.CString(opts.TargetDirectory)
|
||||||
}
|
}
|
||||||
|
if len(opts.Paths) > 0 {
|
||||||
|
ptr.paths.strings = makeCStringsFromStrings(opts.Paths)
|
||||||
|
ptr.paths.count = C.size_t(len(opts.Paths))
|
||||||
|
}
|
||||||
|
|
||||||
return ptr
|
return ptr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,6 +92,9 @@ func freeCheckoutOpts(ptr *C.git_checkout_options) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
C.free(unsafe.Pointer(ptr.target_directory))
|
C.free(unsafe.Pointer(ptr.target_directory))
|
||||||
|
if ptr.paths.count > 0 {
|
||||||
|
freeStrarray(&ptr.paths)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Updates files in the index and the working tree to match the content of
|
// Updates files in the index and the working tree to match the content of
|
||||||
|
|
|
@ -34,6 +34,8 @@ func readReadme(t *testing.T, repo *Repository) string {
|
||||||
|
|
||||||
func TestCherrypick(t *testing.T) {
|
func TestCherrypick(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
c1, _ := seedTestRepo(t, repo)
|
c1, _ := seedTestRepo(t, repo)
|
||||||
c2, _ := updateReadme(t, repo, content)
|
c2, _ := updateReadme(t, repo, content)
|
||||||
|
|
||||||
|
|
|
@ -2,22 +2,21 @@ package git
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestClone(t *testing.T) {
|
func TestClone(t *testing.T) {
|
||||||
|
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
seedTestRepo(t, repo)
|
seedTestRepo(t, repo)
|
||||||
|
|
||||||
path, err := ioutil.TempDir("", "git2go")
|
path, err := ioutil.TempDir("", "git2go")
|
||||||
checkFatal(t, err)
|
checkFatal(t, err)
|
||||||
|
|
||||||
_, err = Clone(repo.Path(), path, &CloneOptions{Bare: true})
|
repo2, err := Clone(repo.Path(), path, &CloneOptions{Bare: true})
|
||||||
defer os.RemoveAll(path)
|
defer cleanupTestRepo(t, repo2)
|
||||||
|
|
||||||
checkFatal(t, err)
|
checkFatal(t, err)
|
||||||
}
|
}
|
||||||
|
|
38
commit.go
38
commit.go
|
@ -9,6 +9,7 @@ import "C"
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"runtime"
|
"runtime"
|
||||||
|
"unsafe"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Commit
|
// Commit
|
||||||
|
@ -70,3 +71,40 @@ func (c *Commit) ParentId(n uint) *Oid {
|
||||||
func (c *Commit) ParentCount() uint {
|
func (c *Commit) ParentCount() uint {
|
||||||
return uint(C.git_commit_parentcount(c.cast_ptr))
|
return uint(C.git_commit_parentcount(c.cast_ptr))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *Commit) Amend(refname string, author, committer *Signature, message string, tree *Tree) (*Oid, error) {
|
||||||
|
var cref *C.char
|
||||||
|
if refname == "" {
|
||||||
|
cref = nil
|
||||||
|
} else {
|
||||||
|
cref = C.CString(refname)
|
||||||
|
defer C.free(unsafe.Pointer(cref))
|
||||||
|
}
|
||||||
|
|
||||||
|
cmsg := C.CString(message)
|
||||||
|
defer C.free(unsafe.Pointer(cmsg))
|
||||||
|
|
||||||
|
runtime.LockOSThread()
|
||||||
|
defer runtime.UnlockOSThread()
|
||||||
|
|
||||||
|
authorSig, err := author.toC()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer C.git_signature_free(authorSig)
|
||||||
|
|
||||||
|
committerSig, err := committer.toC()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer C.git_signature_free(committerSig)
|
||||||
|
|
||||||
|
oid := new(Oid)
|
||||||
|
|
||||||
|
cerr := C.git_commit_amend(oid.toC(), c.cast_ptr, cref, authorSig, committerSig, nil, cmsg, tree.cast_ptr)
|
||||||
|
if cerr < 0 {
|
||||||
|
return nil, MakeGitError(cerr)
|
||||||
|
}
|
||||||
|
|
||||||
|
return oid, nil
|
||||||
|
}
|
||||||
|
|
50
diff.go
50
diff.go
|
@ -595,3 +595,53 @@ func (v *Repository) DiffTreeToWorkdir(oldTree *Tree, opts *DiffOptions) (*Diff,
|
||||||
}
|
}
|
||||||
return newDiffFromC(diffPtr), nil
|
return newDiffFromC(diffPtr), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (v *Repository) DiffTreeToWorkdirWithIndex(oldTree *Tree, opts *DiffOptions) (*Diff, error) {
|
||||||
|
var diffPtr *C.git_diff
|
||||||
|
var oldPtr *C.git_tree
|
||||||
|
|
||||||
|
if oldTree != nil {
|
||||||
|
oldPtr = oldTree.cast_ptr
|
||||||
|
}
|
||||||
|
|
||||||
|
copts, notifyData := diffOptionsToC(opts)
|
||||||
|
defer freeDiffOptions(copts)
|
||||||
|
|
||||||
|
runtime.LockOSThread()
|
||||||
|
defer runtime.UnlockOSThread()
|
||||||
|
|
||||||
|
ecode := C.git_diff_tree_to_workdir_with_index(&diffPtr, v.ptr, oldPtr, copts)
|
||||||
|
if ecode < 0 {
|
||||||
|
return nil, MakeGitError(ecode)
|
||||||
|
}
|
||||||
|
|
||||||
|
if notifyData != nil && notifyData.Diff != nil {
|
||||||
|
return notifyData.Diff, nil
|
||||||
|
}
|
||||||
|
return newDiffFromC(diffPtr), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *Repository) DiffIndexToWorkdir(index *Index, opts *DiffOptions) (*Diff, error) {
|
||||||
|
var diffPtr *C.git_diff
|
||||||
|
var indexPtr *C.git_index
|
||||||
|
|
||||||
|
if index != nil {
|
||||||
|
indexPtr = index.ptr
|
||||||
|
}
|
||||||
|
|
||||||
|
copts, notifyData := diffOptionsToC(opts)
|
||||||
|
defer freeDiffOptions(copts)
|
||||||
|
|
||||||
|
runtime.LockOSThread()
|
||||||
|
defer runtime.UnlockOSThread()
|
||||||
|
|
||||||
|
ecode := C.git_diff_index_to_workdir(&diffPtr, v.ptr, indexPtr, copts)
|
||||||
|
if ecode < 0 {
|
||||||
|
return nil, MakeGitError(ecode)
|
||||||
|
}
|
||||||
|
|
||||||
|
if notifyData != nil && notifyData.Diff != nil {
|
||||||
|
return notifyData.Diff, nil
|
||||||
|
}
|
||||||
|
return newDiffFromC(diffPtr), nil
|
||||||
|
}
|
||||||
|
|
|
@ -2,15 +2,13 @@ package git
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"os"
|
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestFindSimilar(t *testing.T) {
|
func TestFindSimilar(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer repo.Free()
|
defer cleanupTestRepo(t, repo)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
|
||||||
|
|
||||||
originalTree, newTree := createTestTrees(t, repo)
|
originalTree, newTree := createTestTrees(t, repo)
|
||||||
|
|
||||||
|
@ -65,8 +63,7 @@ func TestFindSimilar(t *testing.T) {
|
||||||
func TestDiffTreeToTree(t *testing.T) {
|
func TestDiffTreeToTree(t *testing.T) {
|
||||||
|
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer repo.Free()
|
defer cleanupTestRepo(t, repo)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
|
||||||
|
|
||||||
originalTree, newTree := createTestTrees(t, repo)
|
originalTree, newTree := createTestTrees(t, repo)
|
||||||
|
|
||||||
|
|
13
git_test.go
13
git_test.go
|
@ -2,11 +2,24 @@ package git
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
"path"
|
"path"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func cleanupTestRepo(t *testing.T, r *Repository) {
|
||||||
|
var err error
|
||||||
|
if r.IsBare() {
|
||||||
|
err = os.RemoveAll(r.Path())
|
||||||
|
} else {
|
||||||
|
err = os.RemoveAll(r.Workdir())
|
||||||
|
}
|
||||||
|
checkFatal(t, err)
|
||||||
|
|
||||||
|
r.Free()
|
||||||
|
}
|
||||||
|
|
||||||
func createTestRepo(t *testing.T) *Repository {
|
func createTestRepo(t *testing.T) *Repository {
|
||||||
// figure out where we can create the test repo
|
// figure out where we can create the test repo
|
||||||
path, err := ioutil.TempDir("", "git2go")
|
path, err := ioutil.TempDir("", "git2go")
|
||||||
|
|
39
index.go
39
index.go
|
@ -96,6 +96,30 @@ func NewIndex() (*Index, error) {
|
||||||
return &Index{ptr: ptr}, nil
|
return &Index{ptr: ptr}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// OpenIndex creates a new index at the given path. If the file does
|
||||||
|
// not exist it will be created when Write() is called.
|
||||||
|
func OpenIndex(path string) (*Index, error) {
|
||||||
|
var ptr *C.git_index
|
||||||
|
|
||||||
|
var cpath = C.CString(path)
|
||||||
|
defer C.free(unsafe.Pointer(cpath))
|
||||||
|
|
||||||
|
runtime.LockOSThread()
|
||||||
|
defer runtime.UnlockOSThread()
|
||||||
|
|
||||||
|
if err := C.git_index_open(&ptr, cpath); err < 0 {
|
||||||
|
return nil, MakeGitError(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return &Index{ptr: ptr}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Path returns the index' path on disk or an empty string if it
|
||||||
|
// exists only in memory.
|
||||||
|
func (v *Index) Path() string {
|
||||||
|
return C.GoString(C.git_index_path(v.ptr))
|
||||||
|
}
|
||||||
|
|
||||||
// Add adds or replaces the given entry to the index, making a copy of
|
// Add adds or replaces the given entry to the index, making a copy of
|
||||||
// the data
|
// the data
|
||||||
func (v *Index) Add(entry *IndexEntry) error {
|
func (v *Index) Add(entry *IndexEntry) error {
|
||||||
|
@ -240,6 +264,20 @@ func (v *Index) WriteTreeTo(repo *Repository) (*Oid, error) {
|
||||||
return oid, nil
|
return oid, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ReadTree replaces the contents of the index with those of the given
|
||||||
|
// tree
|
||||||
|
func (v *Index) ReadTree(tree *Tree) error {
|
||||||
|
runtime.LockOSThread()
|
||||||
|
defer runtime.UnlockOSThread()
|
||||||
|
|
||||||
|
ret := C.git_index_read_tree(v.ptr, tree.cast_ptr);
|
||||||
|
if ret < 0 {
|
||||||
|
return MakeGitError(ret)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (v *Index) WriteTree() (*Oid, error) {
|
func (v *Index) WriteTree() (*Oid, error) {
|
||||||
oid := new(Oid)
|
oid := new(Oid)
|
||||||
|
|
||||||
|
@ -287,6 +325,7 @@ func (v *Index) HasConflicts() bool {
|
||||||
return C.git_index_has_conflicts(v.ptr) != 0
|
return C.git_index_has_conflicts(v.ptr) != 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: this might return an error
|
||||||
func (v *Index) CleanupConflicts() {
|
func (v *Index) CleanupConflicts() {
|
||||||
C.git_index_conflict_cleanup(v.ptr)
|
C.git_index_conflict_cleanup(v.ptr)
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ import (
|
||||||
|
|
||||||
func TestCreateRepoAndStage(t *testing.T) {
|
func TestCreateRepoAndStage(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
idx, err := repo.Index()
|
idx, err := repo.Index()
|
||||||
checkFatal(t, err)
|
checkFatal(t, err)
|
||||||
|
@ -23,12 +23,40 @@ func TestCreateRepoAndStage(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestIndexReadTree(t *testing.T) {
|
||||||
|
repo := createTestRepo(t)
|
||||||
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
|
_, _ = seedTestRepo(t, repo)
|
||||||
|
|
||||||
|
ref, err := repo.Head()
|
||||||
|
checkFatal(t, err)
|
||||||
|
|
||||||
|
obj, err := ref.Peel(ObjectTree);
|
||||||
|
checkFatal(t, err)
|
||||||
|
|
||||||
|
tree := obj.(*Tree)
|
||||||
|
|
||||||
|
idx, err := NewIndex()
|
||||||
|
checkFatal(t, err)
|
||||||
|
|
||||||
|
err = idx.ReadTree(tree)
|
||||||
|
checkFatal(t, err)
|
||||||
|
|
||||||
|
id, err := idx.WriteTreeTo(repo)
|
||||||
|
checkFatal(t, err)
|
||||||
|
|
||||||
|
if tree.Id().Cmp(id) != 0 {
|
||||||
|
t.Fatalf("Read and written trees are not the same")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestIndexWriteTreeTo(t *testing.T) {
|
func TestIndexWriteTreeTo(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
repo2 := createTestRepo(t)
|
repo2 := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo2)
|
||||||
|
|
||||||
idx, err := repo.Index()
|
idx, err := repo.Index()
|
||||||
checkFatal(t, err)
|
checkFatal(t, err)
|
||||||
|
@ -44,7 +72,7 @@ func TestIndexWriteTreeTo(t *testing.T) {
|
||||||
|
|
||||||
func TestIndexAddAndWriteTreeTo(t *testing.T) {
|
func TestIndexAddAndWriteTreeTo(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
odb, err := repo.Odb()
|
odb, err := repo.Odb()
|
||||||
checkFatal(t, err)
|
checkFatal(t, err)
|
||||||
|
@ -55,6 +83,10 @@ func TestIndexAddAndWriteTreeTo(t *testing.T) {
|
||||||
idx, err := NewIndex()
|
idx, err := NewIndex()
|
||||||
checkFatal(t, err)
|
checkFatal(t, err)
|
||||||
|
|
||||||
|
if idx.Path() != "" {
|
||||||
|
t.Fatal("in-memory repo has a path")
|
||||||
|
}
|
||||||
|
|
||||||
entry := IndexEntry{
|
entry := IndexEntry{
|
||||||
Path: "README",
|
Path: "README",
|
||||||
Id: blobID,
|
Id: blobID,
|
||||||
|
@ -74,7 +106,7 @@ func TestIndexAddAndWriteTreeTo(t *testing.T) {
|
||||||
|
|
||||||
func TestIndexAddAllNoCallback(t *testing.T) {
|
func TestIndexAddAllNoCallback(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
err := ioutil.WriteFile(repo.Workdir()+"/README", []byte("foo\n"), 0644)
|
err := ioutil.WriteFile(repo.Workdir()+"/README", []byte("foo\n"), 0644)
|
||||||
checkFatal(t, err)
|
checkFatal(t, err)
|
||||||
|
@ -95,7 +127,7 @@ func TestIndexAddAllNoCallback(t *testing.T) {
|
||||||
|
|
||||||
func TestIndexAddAllCallback(t *testing.T) {
|
func TestIndexAddAllCallback(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
err := ioutil.WriteFile(repo.Workdir()+"/README", []byte("foo\n"), 0644)
|
err := ioutil.WriteFile(repo.Workdir()+"/README", []byte("foo\n"), 0644)
|
||||||
checkFatal(t, err)
|
checkFatal(t, err)
|
||||||
|
@ -121,6 +153,33 @@ func TestIndexAddAllCallback(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestIndexOpen(t *testing.T) {
|
||||||
|
repo := createTestRepo(t)
|
||||||
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
|
path := repo.Workdir() + "/heyindex"
|
||||||
|
|
||||||
|
_, err := os.Stat(path)
|
||||||
|
if !os.IsNotExist(err) {
|
||||||
|
t.Fatal("new index file already exists")
|
||||||
|
}
|
||||||
|
|
||||||
|
idx, err := OpenIndex(path)
|
||||||
|
checkFatal(t, err)
|
||||||
|
|
||||||
|
if path != idx.Path() {
|
||||||
|
t.Fatalf("mismatched index paths, expected %v, got %v", path, idx.Path())
|
||||||
|
}
|
||||||
|
|
||||||
|
err = idx.Write()
|
||||||
|
checkFatal(t, err)
|
||||||
|
|
||||||
|
_, err = os.Stat(path)
|
||||||
|
if os.IsNotExist(err) {
|
||||||
|
t.Fatal("new index file did not get written")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func checkFatal(t *testing.T, err error) {
|
func checkFatal(t *testing.T, err error) {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
return
|
return
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
package git
|
package git
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestMergeWithSelf(t *testing.T) {
|
func TestMergeWithSelf(t *testing.T) {
|
||||||
|
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
seedTestRepo(t, repo)
|
seedTestRepo(t, repo)
|
||||||
|
|
||||||
master, err := repo.LookupReference("refs/heads/master")
|
master, err := repo.LookupReference("refs/heads/master")
|
||||||
|
@ -23,8 +23,9 @@ func TestMergeWithSelf(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestMergeAnalysisWithSelf(t *testing.T) {
|
func TestMergeAnalysisWithSelf(t *testing.T) {
|
||||||
|
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
seedTestRepo(t, repo)
|
seedTestRepo(t, repo)
|
||||||
|
|
||||||
master, err := repo.LookupReference("refs/heads/master")
|
master, err := repo.LookupReference("refs/heads/master")
|
||||||
|
@ -44,7 +45,6 @@ func TestMergeAnalysisWithSelf(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestMergeSameFile(t *testing.T) {
|
func TestMergeSameFile(t *testing.T) {
|
||||||
|
|
||||||
file := MergeFileInput{
|
file := MergeFileInput{
|
||||||
Path: "test",
|
Path: "test",
|
||||||
Mode: 33188,
|
Mode: 33188,
|
||||||
|
@ -68,8 +68,7 @@ func TestMergeSameFile(t *testing.T) {
|
||||||
}
|
}
|
||||||
func TestMergeTreesWithoutAncestor(t *testing.T) {
|
func TestMergeTreesWithoutAncestor(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer repo.Free()
|
defer cleanupTestRepo(t, repo)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
|
||||||
|
|
||||||
_, originalTreeId := seedTestRepo(t, repo)
|
_, originalTreeId := seedTestRepo(t, repo)
|
||||||
originalTree, err := repo.LookupTree(originalTreeId)
|
originalTree, err := repo.LookupTree(originalTreeId)
|
||||||
|
|
10
note_test.go
10
note_test.go
|
@ -2,7 +2,6 @@ package git
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
|
||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
@ -10,7 +9,7 @@ import (
|
||||||
|
|
||||||
func TestCreateNote(t *testing.T) {
|
func TestCreateNote(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
commitId, _ := seedTestRepo(t, repo)
|
commitId, _ := seedTestRepo(t, repo)
|
||||||
|
|
||||||
|
@ -29,7 +28,8 @@ func TestCreateNote(t *testing.T) {
|
||||||
|
|
||||||
func TestNoteIterator(t *testing.T) {
|
func TestNoteIterator(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
seedTestRepo(t, repo)
|
seedTestRepo(t, repo)
|
||||||
|
|
||||||
notes := make([]*Note, 5)
|
notes := make([]*Note, 5)
|
||||||
|
@ -64,7 +64,7 @@ func TestNoteIterator(t *testing.T) {
|
||||||
|
|
||||||
func TestRemoveNote(t *testing.T) {
|
func TestRemoveNote(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
commitId, _ := seedTestRepo(t, repo)
|
commitId, _ := seedTestRepo(t, repo)
|
||||||
|
|
||||||
|
@ -87,7 +87,7 @@ func TestRemoveNote(t *testing.T) {
|
||||||
|
|
||||||
func TestDefaultNoteRef(t *testing.T) {
|
func TestDefaultNoteRef(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
ref, err := repo.DefaultNoteRef()
|
ref, err := repo.DefaultNoteRef()
|
||||||
checkFatal(t, err)
|
checkFatal(t, err)
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
package git
|
package git
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestObjectPoymorphism(t *testing.T) {
|
func TestObjectPoymorphism(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
commitId, treeId := seedTestRepo(t, repo)
|
commitId, treeId := seedTestRepo(t, repo)
|
||||||
|
|
||||||
var obj Object
|
var obj Object
|
||||||
|
@ -89,7 +89,8 @@ func checkOwner(t *testing.T, repo *Repository, obj Object) {
|
||||||
|
|
||||||
func TestObjectOwner(t *testing.T) {
|
func TestObjectOwner(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
commitId, treeId := seedTestRepo(t, repo)
|
commitId, treeId := seedTestRepo(t, repo)
|
||||||
|
|
||||||
commit, err := repo.LookupCommit(commitId)
|
commit, err := repo.LookupCommit(commitId)
|
||||||
|
|
10
odb_test.go
10
odb_test.go
|
@ -3,13 +3,13 @@ package git
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"io"
|
"io"
|
||||||
"os"
|
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestOdbStream(t *testing.T) {
|
func TestOdbStream(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
_, _ = seedTestRepo(t, repo)
|
_, _ = seedTestRepo(t, repo)
|
||||||
|
|
||||||
odb, error := repo.Odb()
|
odb, error := repo.Odb()
|
||||||
|
@ -38,7 +38,8 @@ func TestOdbStream(t *testing.T) {
|
||||||
func TestOdbHash(t *testing.T) {
|
func TestOdbHash(t *testing.T) {
|
||||||
|
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
_, _ = seedTestRepo(t, repo)
|
_, _ = seedTestRepo(t, repo)
|
||||||
|
|
||||||
odb, error := repo.Odb()
|
odb, error := repo.Odb()
|
||||||
|
@ -64,7 +65,8 @@ Initial commit.`
|
||||||
|
|
||||||
func TestOdbForeach(t *testing.T) {
|
func TestOdbForeach(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
_, _ = seedTestRepo(t, repo)
|
_, _ = seedTestRepo(t, repo)
|
||||||
|
|
||||||
odb, err := repo.Odb()
|
odb, err := repo.Odb()
|
||||||
|
|
|
@ -7,8 +7,7 @@ import (
|
||||||
|
|
||||||
func TestPatch(t *testing.T) {
|
func TestPatch(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer repo.Free()
|
defer cleanupTestRepo(t, repo)
|
||||||
//defer os.RemoveAll(repo.Workdir())
|
|
||||||
|
|
||||||
_, originalTreeId := seedTestRepo(t, repo)
|
_, originalTreeId := seedTestRepo(t, repo)
|
||||||
originalTree, err := repo.LookupTree(originalTreeId)
|
originalTree, err := repo.LookupTree(originalTreeId)
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
package git
|
package git
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestRemotePush(t *testing.T) {
|
func TestRemotePush(t *testing.T) {
|
||||||
repo := createBareTestRepo(t)
|
repo := createBareTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Path())
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
localRepo := createTestRepo(t)
|
localRepo := createTestRepo(t)
|
||||||
defer os.RemoveAll(localRepo.Workdir())
|
defer cleanupTestRepo(t, localRepo)
|
||||||
|
|
||||||
remote, err := localRepo.CreateRemote("test_push", repo.Path())
|
remote, err := localRepo.CreateRemote("test_push", repo.Path())
|
||||||
checkFatal(t, err)
|
checkFatal(t, err)
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package git
|
package git
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
|
||||||
"runtime"
|
"runtime"
|
||||||
"sort"
|
"sort"
|
||||||
"testing"
|
"testing"
|
||||||
|
@ -10,7 +9,7 @@ import (
|
||||||
|
|
||||||
func TestRefModification(t *testing.T) {
|
func TestRefModification(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
commitId, treeId := seedTestRepo(t, repo)
|
commitId, treeId := seedTestRepo(t, repo)
|
||||||
|
|
||||||
|
@ -62,7 +61,7 @@ func TestRefModification(t *testing.T) {
|
||||||
|
|
||||||
func TestReferenceIterator(t *testing.T) {
|
func TestReferenceIterator(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
loc, err := time.LoadLocation("Europe/Berlin")
|
loc, err := time.LoadLocation("Europe/Berlin")
|
||||||
checkFatal(t, err)
|
checkFatal(t, err)
|
||||||
|
@ -140,7 +139,8 @@ func TestReferenceIterator(t *testing.T) {
|
||||||
|
|
||||||
func TestReferenceOwner(t *testing.T) {
|
func TestReferenceOwner(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
commitId, _ := seedTestRepo(t, repo)
|
commitId, _ := seedTestRepo(t, repo)
|
||||||
|
|
||||||
ref, err := repo.CreateReference("refs/heads/foo", commitId, true, nil, "")
|
ref, err := repo.CreateReference("refs/heads/foo", commitId, true, nil, "")
|
||||||
|
@ -158,7 +158,7 @@ func TestReferenceOwner(t *testing.T) {
|
||||||
|
|
||||||
func TestUtil(t *testing.T) {
|
func TestUtil(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
commitId, _ := seedTestRepo(t, repo)
|
commitId, _ := seedTestRepo(t, repo)
|
||||||
|
|
||||||
|
|
|
@ -2,15 +2,13 @@ package git
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestRefspecs(t *testing.T) {
|
func TestRefspecs(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo)
|
||||||
defer repo.Free()
|
|
||||||
|
|
||||||
remote, err := repo.CreateAnonymousRemote("git://foo/bar", "refs/heads/*:refs/heads/*")
|
remote, err := repo.CreateAnonymousRemote("git://foo/bar", "refs/heads/*:refs/heads/*")
|
||||||
checkFatal(t, err)
|
checkFatal(t, err)
|
||||||
|
@ -31,8 +29,7 @@ func TestRefspecs(t *testing.T) {
|
||||||
|
|
||||||
func TestListRemotes(t *testing.T) {
|
func TestListRemotes(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo)
|
||||||
defer repo.Free()
|
|
||||||
|
|
||||||
_, err := repo.CreateRemote("test", "git://foo/bar")
|
_, err := repo.CreateRemote("test", "git://foo/bar")
|
||||||
|
|
||||||
|
@ -59,8 +56,7 @@ func assertHostname(cert *Certificate, valid bool, hostname string, t *testing.T
|
||||||
|
|
||||||
func TestCertificateCheck(t *testing.T) {
|
func TestCertificateCheck(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo)
|
||||||
defer repo.Free()
|
|
||||||
|
|
||||||
remote, err := repo.CreateRemote("origin", "https://github.com/libgit2/TestGitRepository")
|
remote, err := repo.CreateRemote("origin", "https://github.com/libgit2/TestGitRepository")
|
||||||
checkFatal(t, err)
|
checkFatal(t, err)
|
||||||
|
@ -79,8 +75,7 @@ func TestCertificateCheck(t *testing.T) {
|
||||||
|
|
||||||
func TestRemoteConnect(t *testing.T) {
|
func TestRemoteConnect(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo)
|
||||||
defer repo.Free()
|
|
||||||
|
|
||||||
remote, err := repo.CreateRemote("origin", "https://github.com/libgit2/TestGitRepository")
|
remote, err := repo.CreateRemote("origin", "https://github.com/libgit2/TestGitRepository")
|
||||||
checkFatal(t, err)
|
checkFatal(t, err)
|
||||||
|
@ -91,8 +86,7 @@ func TestRemoteConnect(t *testing.T) {
|
||||||
|
|
||||||
func TestRemoteLs(t *testing.T) {
|
func TestRemoteLs(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo)
|
||||||
defer repo.Free()
|
|
||||||
|
|
||||||
remote, err := repo.CreateRemote("origin", "https://github.com/libgit2/TestGitRepository")
|
remote, err := repo.CreateRemote("origin", "https://github.com/libgit2/TestGitRepository")
|
||||||
checkFatal(t, err)
|
checkFatal(t, err)
|
||||||
|
@ -110,8 +104,7 @@ func TestRemoteLs(t *testing.T) {
|
||||||
|
|
||||||
func TestRemoteLsFiltering(t *testing.T) {
|
func TestRemoteLsFiltering(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo)
|
||||||
defer repo.Free()
|
|
||||||
|
|
||||||
remote, err := repo.CreateRemote("origin", "https://github.com/libgit2/TestGitRepository")
|
remote, err := repo.CreateRemote("origin", "https://github.com/libgit2/TestGitRepository")
|
||||||
checkFatal(t, err)
|
checkFatal(t, err)
|
||||||
|
@ -137,8 +130,7 @@ func TestRemoteLsFiltering(t *testing.T) {
|
||||||
|
|
||||||
func TestRemotePruneRefs(t *testing.T) {
|
func TestRemotePruneRefs(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo)
|
||||||
defer repo.Free()
|
|
||||||
|
|
||||||
config, err := repo.Config()
|
config, err := repo.Config()
|
||||||
checkFatal(t, err)
|
checkFatal(t, err)
|
||||||
|
@ -160,8 +152,7 @@ func TestRemotePruneRefs(t *testing.T) {
|
||||||
|
|
||||||
func TestRemotePrune(t *testing.T) {
|
func TestRemotePrune(t *testing.T) {
|
||||||
remoteRepo := createTestRepo(t)
|
remoteRepo := createTestRepo(t)
|
||||||
defer os.RemoveAll(remoteRepo.Workdir())
|
defer cleanupTestRepo(t, remoteRepo)
|
||||||
defer remoteRepo.Free()
|
|
||||||
|
|
||||||
head, _ := seedTestRepo(t, remoteRepo)
|
head, _ := seedTestRepo(t, remoteRepo)
|
||||||
commit, err := remoteRepo.LookupCommit(head)
|
commit, err := remoteRepo.LookupCommit(head)
|
||||||
|
@ -178,8 +169,7 @@ func TestRemotePrune(t *testing.T) {
|
||||||
checkFatal(t, err)
|
checkFatal(t, err)
|
||||||
|
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo)
|
||||||
defer repo.Free()
|
|
||||||
|
|
||||||
config, err := repo.Config()
|
config, err := repo.Config()
|
||||||
checkFatal(t, err)
|
checkFatal(t, err)
|
||||||
|
|
|
@ -1,13 +1,12 @@
|
||||||
package git
|
package git
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestRevparse(t *testing.T) {
|
func TestRevparse(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
commitId, _ := seedTestRepo(t, repo)
|
commitId, _ := seedTestRepo(t, repo)
|
||||||
|
|
||||||
|
@ -19,7 +18,7 @@ func TestRevparse(t *testing.T) {
|
||||||
|
|
||||||
func TestRevparseSingle(t *testing.T) {
|
func TestRevparseSingle(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
commitId, _ := seedTestRepo(t, repo)
|
commitId, _ := seedTestRepo(t, repo)
|
||||||
|
|
||||||
|
@ -31,7 +30,7 @@ func TestRevparseSingle(t *testing.T) {
|
||||||
|
|
||||||
func TestRevparseExt(t *testing.T) {
|
func TestRevparseExt(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
_, treeId := seedTestRepo(t, repo)
|
_, treeId := seedTestRepo(t, repo)
|
||||||
|
|
||||||
|
|
|
@ -2,15 +2,13 @@ package git
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
|
||||||
"path"
|
"path"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestStatusFile(t *testing.T) {
|
func TestStatusFile(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer repo.Free()
|
defer cleanupTestRepo(t, repo)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
|
||||||
|
|
||||||
state := repo.State()
|
state := repo.State()
|
||||||
if state != RepositoryStateNone {
|
if state != RepositoryStateNone {
|
||||||
|
@ -30,10 +28,10 @@ func TestStatusFile(t *testing.T) {
|
||||||
|
|
||||||
func TestStatusList(t *testing.T) {
|
func TestStatusList(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
// This commits the test repo README, so it doesn't show up in the status list and there's a head to compare to
|
// This commits the test repo README, so it doesn't show up in the status list and there's a head to compare to
|
||||||
seedTestRepo(t, repo)
|
seedTestRepo(t, repo)
|
||||||
defer repo.Free()
|
|
||||||
defer os.RemoveAll(repo.Workdir())
|
|
||||||
|
|
||||||
err := ioutil.WriteFile(path.Join(path.Dir(repo.Workdir()), "hello.txt"), []byte("Hello, World"), 0644)
|
err := ioutil.WriteFile(path.Join(path.Dir(repo.Workdir()), "hello.txt"), []byte("Hello, World"), 0644)
|
||||||
checkFatal(t, err)
|
checkFatal(t, err)
|
||||||
|
|
|
@ -6,6 +6,8 @@ import (
|
||||||
|
|
||||||
func TestSubmoduleForeach(t *testing.T) {
|
func TestSubmoduleForeach(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
seedTestRepo(t, repo)
|
seedTestRepo(t, repo)
|
||||||
|
|
||||||
_, err := repo.AddSubmodule("http://example.org/submodule", "submodule", true)
|
_, err := repo.AddSubmodule("http://example.org/submodule", "submodule", true)
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
package git
|
package git
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestCreateTag(t *testing.T) {
|
func TestCreateTag(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer os.RemoveAll(repo.Workdir())
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
commitId, _ := seedTestRepo(t, repo)
|
commitId, _ := seedTestRepo(t, repo)
|
||||||
|
|
||||||
commit, err := repo.LookupCommit(commitId)
|
commit, err := repo.LookupCommit(commitId)
|
||||||
|
|
Loading…
Reference in New Issue