fix: bstore: Handle codecs correctly in membstore Get
This commit is contained in:
parent
e40fc14f85
commit
516ad171d2
@ -47,6 +47,9 @@ func (m MemBlockstore) Get(ctx context.Context, k cid.Cid) (blocks.Block, error)
|
|||||||
if !ok {
|
if !ok {
|
||||||
return nil, ipld.ErrNotFound{Cid: k}
|
return nil, ipld.ErrNotFound{Cid: k}
|
||||||
}
|
}
|
||||||
|
if b.Cid().Prefix().Codec != k.Prefix().Codec {
|
||||||
|
return blocks.NewBlockWithCid(b.RawData(), k)
|
||||||
|
}
|
||||||
return b, nil
|
return b, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
45
blockstore/mem_test.go
Normal file
45
blockstore/mem_test.go
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
package blockstore
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
blocks "github.com/ipfs/go-block-format"
|
||||||
|
"github.com/ipfs/go-cid"
|
||||||
|
mh "github.com/multiformats/go-multihash"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestMemGetCodec(t *testing.T) {
|
||||||
|
ctx := context.Background()
|
||||||
|
bs := NewMemory()
|
||||||
|
|
||||||
|
cborArr := []byte{0x82, 1, 2}
|
||||||
|
|
||||||
|
h, err := mh.Sum(cborArr, mh.SHA2_256, -1)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
rawCid := cid.NewCidV1(cid.Raw, h)
|
||||||
|
rawBlk, err := blocks.NewBlockWithCid(cborArr, rawCid)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
err = bs.Put(ctx, rawBlk)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
cborCid := cid.NewCidV1(cid.DagCBOR, h)
|
||||||
|
|
||||||
|
cborBlk, err := bs.Get(ctx, cborCid)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
require.Equal(t, cborCid.Prefix(), cborBlk.Cid().Prefix())
|
||||||
|
require.EqualValues(t, cborArr, cborBlk.RawData())
|
||||||
|
|
||||||
|
// was allocated
|
||||||
|
require.NotEqual(t, cborBlk, rawBlk)
|
||||||
|
|
||||||
|
gotRawBlk, err := bs.Get(ctx, rawCid)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
// not allocated
|
||||||
|
require.Equal(t, rawBlk, gotRawBlk)
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user