git-lfs/pointer/pointer_test.go

119 lines
3.1 KiB
Go
Raw Normal View History

package pointer
2013-10-04 13:48:08 +00:00
import (
2014-07-24 22:02:27 +00:00
"bufio"
2013-10-04 13:48:08 +00:00
"bytes"
2014-07-24 20:49:47 +00:00
"github.com/bmizerany/assert"
2014-07-24 21:37:18 +00:00
"strings"
2013-10-04 13:48:08 +00:00
"testing"
)
func TestEncode(t *testing.T) {
var buf bytes.Buffer
2014-07-24 22:02:27 +00:00
pointer := NewPointer("booya", 12345)
_, err := Encode(&buf, pointer)
assert.Equal(t, nil, err)
bufReader := bufio.NewReader(&buf)
2014-08-14 17:15:22 +00:00
assertLine(t, bufReader, "version http://git-media.io/v/2\n")
assertLine(t, bufReader, "oid sha256:booya\n")
assertLine(t, bufReader, "size 12345\n")
2014-07-24 22:02:27 +00:00
line, err := bufReader.ReadString('\n')
if err == nil {
t.Fatalf("More to read: %s", line)
2013-10-04 13:48:08 +00:00
}
2014-07-24 22:02:27 +00:00
assert.Equal(t, "EOF", err.Error())
}
2013-10-04 13:48:08 +00:00
2014-07-24 22:02:27 +00:00
func assertLine(t *testing.T, r *bufio.Reader, expected string) {
actual, err := r.ReadString('\n')
assert.Equal(t, nil, err)
assert.Equal(t, expected, actual)
2013-10-04 13:48:08 +00:00
}
2014-07-24 21:37:18 +00:00
func TestIniV2Decode(t *testing.T) {
2014-08-14 17:15:22 +00:00
ex := `version http://git-media.io/v/2
oid sha256:4d7a214614ab2935c943f9e0ff69d22eadbb8f32b1258daaa5e2ca24d17e2393
size 12345`
2014-07-24 20:49:47 +00:00
2014-07-24 21:37:18 +00:00
p, err := Decode(bytes.NewBufferString(ex))
assertEqualWithExample(t, ex, nil, err)
assertEqualWithExample(t, ex, latest, p.Version)
assertEqualWithExample(t, ex, "4d7a214614ab2935c943f9e0ff69d22eadbb8f32b1258daaa5e2ca24d17e2393", p.Oid)
assertEqualWithExample(t, ex, int64(12345), p.Size)
2014-07-24 20:49:47 +00:00
}
func TestAlphaDecode(t *testing.T) {
2014-07-24 21:37:18 +00:00
examples := []string{
"# git-media\nabc\n",
"# external\nabc\n",
2014-04-16 21:11:52 +00:00
}
2014-07-24 21:37:18 +00:00
for _, ex := range examples {
p, err := Decode(bytes.NewBufferString(ex))
assertEqualWithExample(t, ex, nil, err)
assertEqualWithExample(t, ex, "abc", p.Oid)
assertEqualWithExample(t, ex, int64(0), p.Size)
assertEqualWithExample(t, ex, "sha256", p.OidType)
assertEqualWithExample(t, ex, alpha, p.Version)
2013-10-04 13:48:08 +00:00
}
}
func TestDecodeInvalid(t *testing.T) {
2014-07-24 21:37:18 +00:00
examples := []string{
"invalid stuff",
2014-07-24 21:41:41 +00:00
// no sha
2014-07-24 21:37:18 +00:00
"# git-media",
2014-07-24 21:41:41 +00:00
// bad oid type
2014-08-14 17:15:22 +00:00
`version http://git-media.io/v/2
oid shazam:4d7a214614ab2935c943f9e0ff69d22eadbb8f32b1258daaa5e2ca24d17e2393
size 12345`,
2014-07-24 21:41:41 +00:00
// no oid
2014-08-14 17:15:22 +00:00
`version http://git-media.io/v/2
size 12345`,
2014-07-24 21:41:41 +00:00
// bad version
2014-08-14 17:15:22 +00:00
`version http://git-media.io/v/whatever
oid sha256:4d7a214614ab2935c943f9e0ff69d22eadbb8f32b1258daaa5e2ca24d17e2393
size 12345`,
2014-07-24 21:41:41 +00:00
// no version
2014-08-14 17:15:22 +00:00
`oid sha256:4d7a214614ab2935c943f9e0ff69d22eadbb8f32b1258daaa5e2ca24d17e2393
size 12345`,
2014-07-24 21:41:41 +00:00
// bad size
2014-08-14 17:15:22 +00:00
`version http://git-media.io/v/2
oid sha256:4d7a214614ab2935c943f9e0ff69d22eadbb8f32b1258daaa5e2ca24d17e2393
size fif`,
2014-07-24 21:41:41 +00:00
// no size
2014-08-14 17:15:22 +00:00
`version http://git-media.io/v/2
oid sha256:4d7a214614ab2935c943f9e0ff69d22eadbb8f32b1258daaa5e2ca24d17e2393`,
// bad `key value` format
`version=http://git-media.io/v/2
oid=sha256:4d7a214614ab2935c943f9e0ff69d22eadbb8f32b1258daaa5e2ca24d17e2393
2014-08-14 20:23:19 +00:00
size=fif`,
// no git-media
`version=http://wat.io/v/2
oid=sha256:4d7a214614ab2935c943f9e0ff69d22eadbb8f32b1258daaa5e2ca24d17e2393
2014-08-14 17:15:22 +00:00
size=fif`,
}
2014-07-24 21:37:18 +00:00
for _, ex := range examples {
p, err := Decode(bytes.NewBufferString(ex))
if err == nil {
t.Errorf("No error decoding: %v\nFrom:\n%s", p, strings.TrimSpace(ex))
}
}
}
2014-07-24 21:37:18 +00:00
func assertEqualWithExample(t *testing.T, example string, expected, actual interface{}) {
assert.Equalf(t, expected, actual, "Example:\n%s", strings.TrimSpace(example))
}