From 0cfd720d4f475df383ae7ed66377d1b9e6f14c72 Mon Sep 17 00:00:00 2001 From: Billy Keyes Date: Wed, 10 Apr 2019 23:02:48 -0700 Subject: [PATCH] Add test for binary marker parsing --- gitdiff/parser_binary_test.go | 54 +++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 gitdiff/parser_binary_test.go diff --git a/gitdiff/parser_binary_test.go b/gitdiff/parser_binary_test.go new file mode 100644 index 0000000..322f11d --- /dev/null +++ b/gitdiff/parser_binary_test.go @@ -0,0 +1,54 @@ +package gitdiff + +import ( + "io" + "testing" +) + +func TestParseBinaryMarker(t *testing.T) { + tests := map[string]struct { + Input string + IsBinary bool + HasData bool + Err bool + }{ + "binaryPatch": { + Input: "GIT binary patch\n", + IsBinary: true, + HasData: true, + }, + "binaryFileNoPatch": { + Input: "Binary files differ\n", + IsBinary: true, + HasData: false, + }, + "textFile": { + Input: "@@ -10,14 +22,31 @@\n", + IsBinary: false, + HasData: false, + }, + } + + for name, test := range tests { + t.Run(name, func(t *testing.T) { + p := newTestParser(test.Input, true) + + isBinary, hasData, err := p.ParseBinaryMarker() + if test.Err { + if err != nil || err == io.EOF { + t.Fatalf("expected error parsing binary marker, but got %v", err) + } + return + } + if err != nil { + t.Fatalf("unexpected error parsing binary marker: %v", err) + } + if test.IsBinary != isBinary { + t.Errorf("incorrect isBinary value: expected %t, actual %t", test.IsBinary, isBinary) + } + if test.HasData != hasData { + t.Errorf("incorrect hasData value: expected %t, actual %t", test.HasData, hasData) + } + }) + } +}