fix issues with decoding a pointer file from an empty buffer
This commit is contained in:
parent
077ec4c1b1
commit
aa0c3c9e7a
@ -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",
|
||||||
|
Loading…
Reference in New Issue
Block a user