diff options
Diffstat (limited to 'pkg/gitdiff/text_test.go')
| -rw-r--r-- | pkg/gitdiff/text_test.go | 488 |
1 files changed, 0 insertions, 488 deletions
diff --git a/pkg/gitdiff/text_test.go b/pkg/gitdiff/text_test.go deleted file mode 100644 index 990b3bc..0000000 --- a/pkg/gitdiff/text_test.go +++ /dev/null @@ -1,488 +0,0 @@ -package gitdiff - -import ( - "io" - "reflect" - "testing" -) - -func TestParseTextFragmentHeader(t *testing.T) { - tests := map[string]struct { - Input string - Output *TextFragment - Err bool - }{ - "shortest": { - Input: "@@ -1 +1 @@\n", - Output: &TextFragment{ - OldPosition: 1, - OldLines: 1, - NewPosition: 1, - NewLines: 1, - }, - }, - "standard": { - Input: "@@ -21,5 +28,9 @@\n", - Output: &TextFragment{ - OldPosition: 21, - OldLines: 5, - NewPosition: 28, - NewLines: 9, - }, - }, - "trailingComment": { - Input: "@@ -21,5 +28,9 @@ func test(n int) {\n", - Output: &TextFragment{ - Comment: "func test(n int) {", - OldPosition: 21, - OldLines: 5, - NewPosition: 28, - NewLines: 9, - }, - }, - "incomplete": { - Input: "@@ -12,3 +2\n", - Err: true, - }, - "badNumbers": { - Input: "@@ -1a,2b +3c,4d @@\n", - Err: true, - }, - } - - for name, test := range tests { - t.Run(name, func(t *testing.T) { - p := newTestParser(test.Input, true) - - frag, err := p.ParseTextFragmentHeader() - if test.Err { - if err == nil || err == io.EOF { - t.Fatalf("expected error parsing header, but got %v", err) - } - return - } - if err != nil { - t.Fatalf("error parsing header: %v", err) - } - - if !reflect.DeepEqual(test.Output, frag) { - t.Errorf("incorrect fragment\nexpected: %+v\nactual: %+v", test.Output, frag) - } - }) - } -} - -func TestParseTextChunk(t *testing.T) { - tests := map[string]struct { - Input string - Fragment TextFragment - - Output *TextFragment - Err bool - }{ - "addWithContext": { - Input: ` context line -+new line 1 -+new line 2 - context line -`, - Fragment: TextFragment{ - OldLines: 2, - NewLines: 4, - }, - Output: &TextFragment{ - OldLines: 2, - NewLines: 4, - Lines: []Line{ - {OpContext, "context line\n"}, - {OpAdd, "new line 1\n"}, - {OpAdd, "new line 2\n"}, - {OpContext, "context line\n"}, - }, - LinesAdded: 2, - LeadingContext: 1, - TrailingContext: 1, - }, - }, - "deleteWithContext": { - Input: ` context line --old line 1 --old line 2 - context line -`, - Fragment: TextFragment{ - OldLines: 4, - NewLines: 2, - }, - Output: &TextFragment{ - OldLines: 4, - NewLines: 2, - Lines: []Line{ - {OpContext, "context line\n"}, - {OpDelete, "old line 1\n"}, - {OpDelete, "old line 2\n"}, - {OpContext, "context line\n"}, - }, - LinesDeleted: 2, - LeadingContext: 1, - TrailingContext: 1, - }, - }, - "replaceWithContext": { - Input: ` context line --old line 1 -+new line 1 - context line -`, - Fragment: TextFragment{ - OldLines: 3, - NewLines: 3, - }, - Output: &TextFragment{ - OldLines: 3, - NewLines: 3, - Lines: []Line{ - {OpContext, "context line\n"}, - {OpDelete, "old line 1\n"}, - {OpAdd, "new line 1\n"}, - {OpContext, "context line\n"}, - }, - LinesDeleted: 1, - LinesAdded: 1, - LeadingContext: 1, - TrailingContext: 1, - }, - }, - "middleContext": { - Input: ` context line --old line 1 - context line -+new line 1 - context line -`, - Fragment: TextFragment{ - OldLines: 4, - NewLines: 4, - }, - Output: &TextFragment{ - OldLines: 4, - NewLines: 4, - Lines: []Line{ - {OpContext, "context line\n"}, - {OpDelete, "old line 1\n"}, - {OpContext, "context line\n"}, - {OpAdd, "new line 1\n"}, - {OpContext, "context line\n"}, - }, - LinesDeleted: 1, - LinesAdded: 1, - LeadingContext: 1, - TrailingContext: 1, - }, - }, - "deleteFinalNewline": { - Input: ` context line --old line 1 -+new line 1 -\ No newline at end of file -`, - Fragment: TextFragment{ - OldLines: 2, - NewLines: 2, - }, - Output: &TextFragment{ - OldLines: 2, - NewLines: 2, - Lines: []Line{ - {OpContext, "context line\n"}, - {OpDelete, "old line 1\n"}, - {OpAdd, "new line 1"}, - }, - LinesDeleted: 1, - LinesAdded: 1, - LeadingContext: 1, - }, - }, - "addFinalNewline": { - Input: ` context line --old line 1 -\ No newline at end of file -+new line 1 -`, - Fragment: TextFragment{ - OldLines: 2, - NewLines: 2, - }, - Output: &TextFragment{ - OldLines: 2, - NewLines: 2, - Lines: []Line{ - {OpContext, "context line\n"}, - {OpDelete, "old line 1"}, - {OpAdd, "new line 1\n"}, - }, - LinesDeleted: 1, - LinesAdded: 1, - LeadingContext: 1, - }, - }, - "addAll": { - Input: `+new line 1 -+new line 2 -+new line 3 -`, - Fragment: TextFragment{ - OldLines: 0, - NewLines: 3, - }, - Output: &TextFragment{ - OldLines: 0, - NewLines: 3, - Lines: []Line{ - {OpAdd, "new line 1\n"}, - {OpAdd, "new line 2\n"}, - {OpAdd, "new line 3\n"}, - }, - LinesAdded: 3, - }, - }, - "deleteAll": { - Input: `-old line 1 --old line 2 --old line 3 -`, - Fragment: TextFragment{ - OldLines: 3, - NewLines: 0, - }, - Output: &TextFragment{ - OldLines: 3, - NewLines: 0, - Lines: []Line{ - {OpDelete, "old line 1\n"}, - {OpDelete, "old line 2\n"}, - {OpDelete, "old line 3\n"}, - }, - LinesDeleted: 3, - }, - }, - "emptyContextLine": { - Input: ` context line - -+new line - context line -`, - Fragment: TextFragment{ - OldLines: 3, - NewLines: 4, - }, - Output: &TextFragment{ - OldLines: 3, - NewLines: 4, - Lines: []Line{ - {OpContext, "context line\n"}, - {OpContext, "\n"}, - {OpAdd, "new line\n"}, - {OpContext, "context line\n"}, - }, - LinesAdded: 1, - LeadingContext: 2, - TrailingContext: 1, - }, - }, - "emptyChunk": { - Input: "", - Err: true, - }, - "invalidOperation": { - Input: ` context line -?wat line - context line -`, - Fragment: TextFragment{ - OldLines: 3, - NewLines: 3, - }, - Err: true, - }, - "unbalancedHeader": { - Input: ` context line --old line 1 -+new line 1 - context line -`, - Fragment: TextFragment{ - OldLines: 2, - NewLines: 5, - }, - Err: true, - }, - "onlyContext": { - Input: ` context line - context line -`, - Fragment: TextFragment{ - OldLines: 2, - NewLines: 2, - }, - Err: true, - }, - "unexpectedNoNewlineMarker": { - Input: `\ No newline at end of file`, - Fragment: TextFragment{ - OldLines: 1, - NewLines: 1, - }, - Err: true, - }, - } - - for name, test := range tests { - t.Run(name, func(t *testing.T) { - p := newTestParser(test.Input, true) - - frag := test.Fragment - err := p.ParseTextChunk(&frag) - if test.Err { - if err == nil || err == io.EOF { - t.Fatalf("expected error parsing text chunk, but got %v", err) - } - return - } - if err != nil { - t.Fatalf("error parsing text chunk: %v", err) - } - - if !reflect.DeepEqual(test.Output, &frag) { - t.Errorf("incorrect fragment\nexpected: %+v\nactual: %+v", test.Output, &frag) - } - }) - } -} - -func TestParseTextFragments(t *testing.T) { - tests := map[string]struct { - Input string - File File - - Fragments []*TextFragment - Err bool - }{ - "multipleChanges": { - Input: `@@ -1,3 +1,2 @@ - context line --old line 1 - context line -@@ -8,3 +7,3 @@ - context line --old line 2 -+new line 1 - context line -@@ -15,3 +14,4 @@ - context line --old line 3 -+new line 2 -+new line 3 - context line -`, - Fragments: []*TextFragment{ - { - OldPosition: 1, - OldLines: 3, - NewPosition: 1, - NewLines: 2, - Lines: []Line{ - {OpContext, "context line\n"}, - {OpDelete, "old line 1\n"}, - {OpContext, "context line\n"}, - }, - LinesDeleted: 1, - LeadingContext: 1, - TrailingContext: 1, - }, - { - OldPosition: 8, - OldLines: 3, - NewPosition: 7, - NewLines: 3, - Lines: []Line{ - {OpContext, "context line\n"}, - {OpDelete, "old line 2\n"}, - {OpAdd, "new line 1\n"}, - {OpContext, "context line\n"}, - }, - LinesDeleted: 1, - LinesAdded: 1, - LeadingContext: 1, - TrailingContext: 1, - }, - { - OldPosition: 15, - OldLines: 3, - NewPosition: 14, - NewLines: 4, - Lines: []Line{ - {OpContext, "context line\n"}, - {OpDelete, "old line 3\n"}, - {OpAdd, "new line 2\n"}, - {OpAdd, "new line 3\n"}, - {OpContext, "context line\n"}, - }, - LinesDeleted: 1, - LinesAdded: 2, - LeadingContext: 1, - TrailingContext: 1, - }, - }, - }, - "badNewFile": { - Input: `@@ -1 +1,2 @@ --old line 1 -+new line 1 -+new line 2 -`, - File: File{ - IsNew: true, - }, - Err: true, - }, - "badDeletedFile": { - Input: `@@ -1,2 +1 @@ --old line 1 - context line -`, - File: File{ - IsDelete: true, - }, - Err: true, - }, - } - - for name, test := range tests { - t.Run(name, func(t *testing.T) { - p := newTestParser(test.Input, true) - - file := test.File - n, err := p.ParseTextFragments(&file) - if test.Err { - if err == nil || err == io.EOF { - t.Fatalf("expected error parsing text fragments, but got %v", err) - } - return - } - if err != nil { - t.Fatalf("error parsing text fragments: %v", err) - } - - if len(test.Fragments) != n { - t.Fatalf("incorrect number of added fragments: expected %d, actual %d", len(test.Fragments), n) - } - - for i, frag := range test.Fragments { - if !reflect.DeepEqual(frag, file.TextFragments[i]) { - t.Errorf("incorrect fragment at position %d\nexpected: %+v\nactual: %+v", i, frag, file.TextFragments[i]) - } - } - }) - } -} |
