package genutil_test import ( "encoding/json" "os" "path/filepath" "testing" "github.com/cosmos/gogoproto/proto" "git.cw.tr/mukan-network/mukan-sdk/codec" addresscodec "git.cw.tr/mukan-network/mukan-sdk/codec/address" cdctypes "git.cw.tr/mukan-network/mukan-sdk/codec/types" "git.cw.tr/mukan-network/mukan-sdk/server" sdk "git.cw.tr/mukan-network/mukan-sdk/types" bankexported "git.cw.tr/mukan-network/mukan-sdk/x/bank/exported" "git.cw.tr/mukan-network/mukan-sdk/x/genutil" "git.cw.tr/mukan-network/mukan-sdk/x/genutil/types" ) type doNothingUnmarshalJSON struct { codec.JSONCodec } func (dnj *doNothingUnmarshalJSON) UnmarshalJSON(_ []byte, _ proto.Message) error { return nil } type doNothingIterator struct { types.GenesisBalancesIterator } func (dni *doNothingIterator) IterateGenesisBalances(_ codec.JSONCodec, _ map[string]json.RawMessage, _ func(bankexported.GenesisBalance) bool) { } // Ensures that CollectTx correctly traverses directories and won't error out on encountering // a directory during traversal of the first level. See issue https://git.cw.tr/mukan-network/mukan-sdk/issues/6788. func TestCollectTxsHandlesDirectories(t *testing.T) { testDir := t.TempDir() // 1. We'll insert a directory as the first element before JSON file. subDirPath := filepath.Join(testDir, "_adir") if err := os.MkdirAll(subDirPath, 0o755); err != nil { t.Fatal(err) } txDecoder := sdk.TxDecoder(func(txBytes []byte) (sdk.Tx, error) { return nil, nil }) // 2. Ensure that we don't encounter any error traversing the directory. srvCtx := server.NewDefaultContext() _ = srvCtx cdc := codec.NewProtoCodec(cdctypes.NewInterfaceRegistry()) genesis := &types.AppGenesis{AppState: []byte("{}")} balItr := new(doNothingIterator) dnc := &doNothingUnmarshalJSON{cdc} if _, _, err := genutil.CollectTxs(dnc, txDecoder, "foo", testDir, genesis, balItr, types.DefaultMessageValidator, addresscodec.NewBech32Codec("cosmosvaloper")); err != nil { t.Fatal(err) } }