github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/app/test_helpers.go (about) 1 package app 2 3 import ( 4 "github.com/spf13/viper" 5 6 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/codec" 7 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 8 abci "github.com/fibonacci-chain/fbc/libs/tendermint/abci/types" 9 "github.com/fibonacci-chain/fbc/libs/tendermint/libs/log" 10 "github.com/fibonacci-chain/fbc/libs/tendermint/types" 11 dbm "github.com/fibonacci-chain/fbc/libs/tm-db" 12 ) 13 14 type Option func(option *SetupOption) 15 16 type SetupOption struct { 17 chainId string 18 } 19 20 func WithChainId(chainId string) Option { 21 return func(option *SetupOption) { 22 option.chainId = chainId 23 } 24 } 25 26 // Setup initializes a new FBChainApp. A Nop logger is set in FBChainApp. 27 func Setup(isCheckTx bool, options ...Option) *FBChainApp { 28 viper.Set(sdk.FlagDBBackend, string(dbm.MemDBBackend)) 29 types.DBBackend = string(dbm.MemDBBackend) 30 db := dbm.NewMemDB() 31 app := NewFBChainApp(log.NewNopLogger(), db, nil, true, map[int64]bool{}, 0) 32 33 if !isCheckTx { 34 setupOption := &SetupOption{chainId: ""} 35 for _, opt := range options { 36 opt(setupOption) 37 } 38 // init chain must be called to stop deliverState from being nil 39 genesisState := NewDefaultGenesisState() 40 stateBytes, err := codec.MarshalJSONIndent(app.Codec(), genesisState) 41 if err != nil { 42 panic(err) 43 } 44 45 // Initialize the chain 46 app.InitChain( 47 abci.RequestInitChain{ 48 Validators: []abci.ValidatorUpdate{}, 49 AppStateBytes: stateBytes, 50 ChainId: setupOption.chainId, 51 }, 52 ) 53 } 54 55 return app 56 }