github.com/stffabi/git-lfs@v2.3.5-0.20180214015214-8eeaa8d88902+incompatible/git/odb/memory_storer_test.go (about) 1 package odb 2 3 import ( 4 "bytes" 5 "encoding/hex" 6 "io" 7 "io/ioutil" 8 "os" 9 "strings" 10 "testing" 11 12 "github.com/stretchr/testify/assert" 13 ) 14 15 func TestMemoryStorerIncludesGivenEntries(t *testing.T) { 16 sha := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" 17 hex, err := hex.DecodeString(sha) 18 19 assert.Nil(t, err) 20 21 ms := newMemoryStorer(map[string]io.ReadWriter{ 22 sha: bytes.NewBuffer([]byte{0x1}), 23 }) 24 25 buf, err := ms.Open(hex) 26 assert.Nil(t, err) 27 28 contents, err := ioutil.ReadAll(buf) 29 assert.Nil(t, err) 30 assert.Equal(t, []byte{0x1}, contents) 31 } 32 33 func TestMemoryStorerAcceptsNilEntries(t *testing.T) { 34 ms := newMemoryStorer(nil) 35 36 assert.NotNil(t, ms) 37 assert.Equal(t, 0, len(ms.fs)) 38 } 39 40 func TestMemoryStorerDoesntOpenMissingEntries(t *testing.T) { 41 sha := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" 42 43 hex, err := hex.DecodeString(sha) 44 assert.Nil(t, err) 45 46 ms := newMemoryStorer(nil) 47 48 f, err := ms.Open(hex) 49 assert.Equal(t, os.ErrNotExist, err) 50 assert.Nil(t, f) 51 } 52 53 func TestMemoryStorerStoresNewEntries(t *testing.T) { 54 hex, err := hex.DecodeString("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") 55 assert.Nil(t, err) 56 57 ms := newMemoryStorer(nil) 58 59 assert.Equal(t, 0, len(ms.fs)) 60 61 _, err = ms.Store(hex, strings.NewReader("hello")) 62 assert.Nil(t, err) 63 assert.Equal(t, 1, len(ms.fs)) 64 65 got, err := ms.Open(hex) 66 assert.Nil(t, err) 67 68 contents, err := ioutil.ReadAll(got) 69 assert.Nil(t, err) 70 assert.Equal(t, "hello", string(contents)) 71 } 72 73 func TestMemoryStorerStoresExistingEntries(t *testing.T) { 74 hex, err := hex.DecodeString("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") 75 assert.Nil(t, err) 76 77 ms := newMemoryStorer(nil) 78 79 assert.Equal(t, 0, len(ms.fs)) 80 81 _, err = ms.Store(hex, new(bytes.Buffer)) 82 assert.Nil(t, err) 83 assert.Equal(t, 1, len(ms.fs)) 84 85 n, err := ms.Store(hex, new(bytes.Buffer)) 86 assert.Nil(t, err) 87 assert.EqualValues(t, 0, n) 88 }