diff options
| author | Quinn Slack <[email protected]> | 2014-11-18 05:06:03 -0800 |
|---|---|---|
| committer | Quinn Slack <[email protected]> | 2014-11-18 05:06:03 -0800 |
| commit | 3268bdbeb2314d696ea608b439c3c98927a9db1a (patch) | |
| tree | 1acf416265a97fa4a3939357f28a84afaf858fa1 | |
| parent | ebb657ce2f8fdeac32dda6fb88d3a20548e034a7 (diff) | |
add (*Blame).HunkByLine (git_blame_get_hunk_byline) and test
| -rw-r--r-- | blame.go | 8 | ||||
| -rw-r--r-- | blame_test.go | 33 |
2 files changed, 30 insertions, 11 deletions
@@ -99,6 +99,14 @@ func (blame *Blame) HunkByIndex(index int) (BlameHunk, error) { return blameHunkFromC(ptr), nil } +func (blame *Blame) HunkByLine(lineno int) (BlameHunk, error) { + ptr := C.git_blame_get_hunk_byline(blame.ptr, C.uint32_t(lineno)) + if ptr == nil { + return BlameHunk{}, ErrInvalid + } + return blameHunkFromC(ptr), nil +} + func newBlameFromC(ptr *C.git_blame) *Blame { if ptr == nil { return nil diff --git a/blame_test.go b/blame_test.go index 7c730a0..1785042 100644 --- a/blame_test.go +++ b/blame_test.go @@ -27,9 +27,7 @@ func TestBlame(t *testing.T) { t.Errorf("got hunk count %d, want 2", blame.HunkCount()) } - hunk1, err := blame.HunkByIndex(0) - checkFatal(t, err) - checkHunk(t, hunk1, BlameHunk{ + wantHunk1 := BlameHunk{ LinesInHunk: 1, FinalCommitId: commitId1, FinalStartLineNumber: 1, @@ -37,11 +35,8 @@ func TestBlame(t *testing.T) { OrigPath: "README", OrigStartLineNumber: 1, Boundary: true, - }) - - hunk2, err := blame.HunkByIndex(1) - checkFatal(t, err) - checkHunk(t, hunk2, BlameHunk{ + } + wantHunk2 := BlameHunk{ LinesInHunk: 2, FinalCommitId: commitId2, FinalStartLineNumber: 2, @@ -49,15 +44,31 @@ func TestBlame(t *testing.T) { OrigPath: "README", OrigStartLineNumber: 2, Boundary: false, - }) + } + + hunk1, err := blame.HunkByIndex(0) + checkFatal(t, err) + checkHunk(t, "index 0", hunk1, wantHunk1) + + hunk2, err := blame.HunkByIndex(1) + checkFatal(t, err) + checkHunk(t, "index 1", hunk2, wantHunk2) + + hunkLine1, err := blame.HunkByLine(1) + checkFatal(t, err) + checkHunk(t, "line 1", hunkLine1, wantHunk1) + + hunkLine2, err := blame.HunkByLine(3) + checkFatal(t, err) + checkHunk(t, "line 2", hunkLine2, wantHunk2) } -func checkHunk(t *testing.T, hunk, want BlameHunk) { +func checkHunk(t *testing.T, label string, hunk, want BlameHunk) { hunk.FinalSignature = nil want.FinalSignature = nil hunk.OrigSignature = nil want.OrigSignature = nil if !reflect.DeepEqual(hunk, want) { - t.Fatalf("got hunk %+v, want %+v", hunk, want) + t.Fatalf("%s: got hunk %+v, want %+v", label, hunk, want) } } |
