From 8fd7c2c60940300b125c40213c82b26dd38e7a78 Mon Sep 17 00:00:00 2001 From: Ben Navetta Date: Mon, 18 Aug 2014 23:12:45 -0400 Subject: [PATCH] add StatusFile function --- status.go | 13 ++++++++++++- status_test.go | 18 +++++++++++++++++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/status.go b/status.go index 5f4b7e1..ab0469f 100644 --- a/status.go +++ b/status.go @@ -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 +} diff --git a/status_test.go b/status_test.go index 3fababe..13b778c 100644 --- a/status_test.go +++ b/status_test.go @@ -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)