fix issues with decoding a pointer file from an empty buffer

This commit is contained in:
Rick Olson 2015-05-28 15:57:29 -06:00
parent 077ec4c1b1
commit aa0c3c9e7a
2 changed files with 19 additions and 2 deletions

@ -64,11 +64,12 @@ func DecodePointer(reader io.Reader) (*Pointer, error) {
func DecodeFrom(reader io.Reader) ([]byte, *Pointer, error) { func DecodeFrom(reader io.Reader) ([]byte, *Pointer, error) {
buf := make([]byte, 512) buf := make([]byte, 512)
written, err := reader.Read(buf) written, err := reader.Read(buf)
output := buf[0:written]
if err != nil { if err != nil {
return buf, nil, err return output, nil, err
} }
output := buf[0:written]
p, err := decodeKV(bytes.TrimSpace(output)) p, err := decodeKV(bytes.TrimSpace(output))
return output, p, err return output, p, err
} }

@ -3,6 +3,7 @@ package lfs
import ( import (
"bufio" "bufio"
"bytes" "bytes"
"io"
"strings" "strings"
"testing" "testing"
@ -57,6 +58,21 @@ size 12345`
assertEqualWithExample(t, ex, int64(12345), p.Size) assertEqualWithExample(t, ex, int64(12345), p.Size)
} }
func TestDecodeFromEmptyReader(t *testing.T) {
by, p, err := DecodeFrom(strings.NewReader(""))
if err != io.EOF {
t.Fatal("unexpected error: %v", err)
}
if p != nil {
t.Fatalf("Unexpected pointer: %v", p)
}
if string(by) != "" {
t.Fatalf("unexpected result: '%s'", string(by))
}
}
func TestDecodeInvalid(t *testing.T) { func TestDecodeInvalid(t *testing.T) {
examples := []string{ examples := []string{
"invalid stuff", "invalid stuff",