lotus/chain/vm/runtime_test.go

48 lines
913 B
Go
Raw Normal View History

2020-04-28 13:21:56 +00:00
package vm
import (
"io"
"testing"
cbor "github.com/ipfs/go-ipld-cbor"
cbg "github.com/whyrusleeping/cbor-gen"
"golang.org/x/xerrors"
2020-09-07 03:49:10 +00:00
"github.com/filecoin-project/go-state-types/exitcode"
2020-04-28 13:21:56 +00:00
"github.com/filecoin-project/lotus/chain/actors/aerrors"
)
2020-04-29 18:06:05 +00:00
type NotAVeryGoodMarshaler struct{}
2020-04-28 13:21:56 +00:00
func (*NotAVeryGoodMarshaler) MarshalCBOR(writer io.Writer) error {
return xerrors.Errorf("no")
}
var _ cbg.CBORMarshaler = &NotAVeryGoodMarshaler{}
func TestRuntimePutErrors(t *testing.T) {
defer func() {
err := recover()
if err == nil {
t.Fatal("expected non-nil recovery")
}
aerr := err.(aerrors.ActorError)
if aerr.IsFatal() {
t.Fatal("expected non-fatal actor error")
}
if aerr.RetCode() != exitcode.ErrSerialization {
t.Fatal("expected serialization error")
}
}()
rt := Runtime{
cst: cbor.NewCborStore(nil),
}
rt.Put(&NotAVeryGoodMarshaler{})
t.Error("expected panic")
}