From 2dea1e1779a79b3e0849c55e313c4476a5f30f34 Mon Sep 17 00:00:00 2001 From: namedfarouk Date: Sat, 4 Apr 2026 06:02:56 +0100 Subject: [PATCH 1/2] fix(app): return InitChainer errors instead of panics --- app/app.go | 6 +++--- app/app_test.go | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/app/app.go b/app/app.go index 166f86d4..f5926888 100644 --- a/app/app.go +++ b/app/app.go @@ -378,16 +378,16 @@ func (app *KiichainApp) EndBlocker(ctx sdk.Context) (sdk.EndBlock, error) { func (app *KiichainApp) InitChainer(ctx sdk.Context, req *abci.RequestInitChain) (*abci.ResponseInitChain, error) { var genesisState GenesisState if err := tmjson.Unmarshal(req.AppStateBytes, &genesisState); err != nil { - panic(err) + return nil, fmt.Errorf("failed to unmarshal genesis state: %w", err) } if err := app.UpgradeKeeper.SetModuleVersionMap(ctx, app.mm.GetVersionMap()); err != nil { - panic(err) + return nil, fmt.Errorf("failed to set module version map: %w", err) } response, err := app.mm.InitGenesis(ctx, app.appCodec, genesisState) if err != nil { - panic(err) + return nil, fmt.Errorf("failed to initialize genesis: %w", err) } return response, nil diff --git a/app/app_test.go b/app/app_test.go index 9ab15748..44ebdce5 100644 --- a/app/app_test.go +++ b/app/app_test.go @@ -5,6 +5,7 @@ import ( "github.com/stretchr/testify/require" + abci "github.com/cometbft/cometbft/abci/types" db "github.com/cosmos/cosmos-db" "cosmossdk.io/log" @@ -49,3 +50,18 @@ func TestKiichainApp_Export(t *testing.T) { _, err := app.ExportAppStateAndValidators(true, []string{}, []string{}) require.NoError(t, err, "ExportAppStateAndValidators should not have an error") } + +func TestKiichainApp_InitChainerReturnsErrorForInvalidGenesisJSON(t *testing.T) { + app := kiihelpers.Setup(t) + + req := &abci.RequestInitChain{ + AppStateBytes: []byte("{ invalid json }"), + } + + var err error + require.NotPanics(t, func() { + _, err = app.InitChainer(app.NewContext(false), req) + }) + require.Error(t, err) + require.ErrorContains(t, err, "failed to unmarshal genesis state") +} From f3aef40c94eef2ccaba3006af6f9fe86e6c33270 Mon Sep 17 00:00:00 2001 From: namedfarouk Date: Sat, 4 Apr 2026 06:09:17 +0100 Subject: [PATCH 2/2] test(app): assert nil InitChainer response on invalid genesis --- app/app_test.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/app_test.go b/app/app_test.go index 44ebdce5..f43b4ebb 100644 --- a/app/app_test.go +++ b/app/app_test.go @@ -58,10 +58,14 @@ func TestKiichainApp_InitChainerReturnsErrorForInvalidGenesisJSON(t *testing.T) AppStateBytes: []byte("{ invalid json }"), } - var err error + var ( + resp *abci.ResponseInitChain + err error + ) require.NotPanics(t, func() { - _, err = app.InitChainer(app.NewContext(false), req) + resp, err = app.InitChainer(app.NewContext(false), req) }) + require.Nil(t, resp) require.Error(t, err) require.ErrorContains(t, err, "failed to unmarshal genesis state") }