add StatusFile function

This commit is contained in:
Ben Navetta 2014-08-18 23:12:45 -04:00
parent a093e20a88
commit 8fd7c2c609
2 changed files with 29 additions and 2 deletions

View File

@ -20,7 +20,7 @@ const (
StatusIndexRenamed = C.GIT_STATUS_INDEX_RENAMED
StatusIndexTypeChange = C.GIT_STATUS_INDEX_TYPECHANGE
StatusWtNew = C.GIT_STATUS_WT_NEW
StatusWtModified = C.GIT_STATUS_WT_NEW
StatusWtModified = C.GIT_STATUS_WT_MODIFIED
StatusWtDeleted = C.GIT_STATUS_WT_DELETED
StatusWtTypeChange = C.GIT_STATUS_WT_TYPECHANGE
StatusWtRenamed = C.GIT_STATUS_WT_RENAMED
@ -157,3 +157,14 @@ func (v *Repository) StatusList(opts *StatusOptions) (*StatusList, error) {
}
return newStatusListFromC(ptr), nil
}
func (v *Repository) StatusFile(path string) (Status, error) {
var statusFlags C.uint
cPath := C.CString(path)
ret := C.git_status_file(&statusFlags, v.ptr, cPath)
if ret < 0 {
return 0, MakeGitError(ret)
}
return Status(statusFlags), nil
}

View File

@ -7,12 +7,28 @@ import (
"testing"
)
func TestStatusFile(t *testing.T) {
repo := createTestRepo(t)
defer repo.Free()
defer os.RemoveAll(repo.Workdir())
err := ioutil.WriteFile(path.Join(path.Dir(repo.Workdir()), "hello.txt"), []byte("Hello, World"), 0644)
checkFatal(t, err)
status, err := repo.StatusFile("hello.txt")
checkFatal(t, err)
if status != StatusWtNew {
t.Fatal("Incorrect status flags: ", status)
}
}
func TestEntryCount(t *testing.T) {
repo := createTestRepo(t)
defer repo.Free()
defer os.RemoveAll(repo.Workdir())
err := ioutil.WriteFile(path.Join(path.Dir(repo.Path()), "hello.txt"), []byte("Hello, World"), 0644)
err := ioutil.WriteFile(path.Join(path.Dir(repo.Workdir()), "hello.txt"), []byte("Hello, World"), 0644)
checkFatal(t, err)
statusList, err := repo.StatusList(nil)