Skip to content

Commit

Permalink
fix(simapp): home flag is not respected (#18994)
Browse files Browse the repository at this point in the history
Co-authored-by: Julien Robert <julien@rbrt.fr>
  • Loading branch information
PoisonPhang and julienrbrt committed Jan 30, 2024
1 parent b2c26cd commit 3e05255
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 10 deletions.
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,8 @@ Every module contains its own CHANGELOG.md. Please refer to the module you are i
* (simulation) [#18196](https://github.com/cosmos/cosmos-sdk/pull/18196) Fix the problem of `validator set is empty after InitGenesis` in simulation test.
* (baseapp) [#18551](https://github.com/cosmos/cosmos-sdk/pull/18551) Fix SelectTxForProposal the calculation method of tx bytes size is inconsistent with CometBFT
* (abci): [#19200](https://github.com/cosmos/cosmos-sdk/pull/19200) Ensure that sdk side ve math matches cometbft

* (server) [#18994](https://github.com/cosmos/cosmos-sdk/pull/18994) Update server context directly rather than a reference to a sub-object

### API Breaking Changes

* (server) [#18303](https://github.com/cosmos/cosmos-sdk/pull/18303) `x/genutil` now handles the application export. `server.AddCommands` does not take an `AppExporter` but instead `genutilcli.Commands` does.
Expand Down
10 changes: 9 additions & 1 deletion client/cmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -359,6 +359,14 @@ func GetClientContextFromCmd(cmd *cobra.Command) Context {
// SetCmdClientContext sets a command's Context value to the provided argument.
// If the context has not been set, set the given context as the default.
func SetCmdClientContext(cmd *cobra.Command, clientCtx Context) error {
cmd.SetContext(context.WithValue(cmd.Context(), ClientContextKey, &clientCtx))
var cmdCtx context.Context

if cmd.Context() == nil {
cmdCtx = context.Background()
} else {
cmdCtx = cmd.Context()
}

cmd.SetContext(context.WithValue(cmdCtx, ClientContextKey, &clientCtx))
return nil
}
4 changes: 2 additions & 2 deletions scripts/init-simapp.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash

SIMD_BIN=${SIMD_BIN:=$(which simd 2>/dev/null)}

Expand All @@ -15,4 +15,4 @@ $SIMD_BIN init test --chain-id demo
$SIMD_BIN genesis add-genesis-account alice 5000000000stake --keyring-backend test
$SIMD_BIN genesis add-genesis-account bob 5000000000stake --keyring-backend test
$SIMD_BIN genesis gentx alice 1000000stake --chain-id demo
$SIMD_BIN genesis collect-gentxs
$SIMD_BIN genesis collect-gentxs
12 changes: 7 additions & 5 deletions server/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -215,13 +215,15 @@ func GetServerContextFromCmd(cmd *cobra.Command) *Context {
// SetCmdServerContext sets a command's Context value to the provided argument.
// If the context has not been set, set the given context as the default.
func SetCmdServerContext(cmd *cobra.Command, serverCtx *Context) error {
v := cmd.Context().Value(ServerContextKey)
if v == nil {
v = serverCtx
var cmdCtx context.Context

if cmd.Context() == nil {
cmdCtx = context.Background()
} else {
cmdCtx = cmd.Context()
}

serverCtxPtr := v.(*Context)
*serverCtxPtr = *serverCtx
cmd.SetContext(context.WithValue(cmdCtx, ServerContextKey, serverCtx))

return nil
}
Expand Down
18 changes: 18 additions & 0 deletions server/util_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ func TestInterceptConfigsPreRunHandlerCreatesConfigFilesWhenMissing(t *testing.T
t.Fatalf("function failed with [%T] %v", err, err)
}

serverCtx = server.GetServerContextFromCmd(cmd)

// Test that config.toml is created
configTomlPath := path.Join(tempDir, "config", "config.toml")
s, err := os.Stat(configTomlPath)
Expand Down Expand Up @@ -142,6 +144,8 @@ func TestInterceptConfigsPreRunHandlerReadsConfigToml(t *testing.T) {
t.Fatalf("function failed with [%T] %v", err, err)
}

serverCtx = server.GetServerContextFromCmd(cmd)

if testDbBackend != serverCtx.Config.DBBackend {
t.Error("backend was not set from config.toml")
}
Expand Down Expand Up @@ -180,6 +184,8 @@ func TestInterceptConfigsPreRunHandlerReadsAppToml(t *testing.T) {
t.Fatalf("function failed with [%T] %v", err, err)
}

serverCtx = server.GetServerContextFromCmd(cmd)

if testHaltTime != serverCtx.Viper.GetInt("halt-time") {
t.Error("Halt time was not set from app.toml")
}
Expand Down Expand Up @@ -208,6 +214,8 @@ func TestInterceptConfigsPreRunHandlerReadsFlags(t *testing.T) {
t.Fatalf("function failed with [%T] %v", err, err)
}

serverCtx = server.GetServerContextFromCmd(cmd)

if testAddr != serverCtx.Config.RPC.ListenAddress {
t.Error("RPCListenAddress was not set from command flags")
}
Expand Down Expand Up @@ -244,6 +252,8 @@ func TestInterceptConfigsPreRunHandlerReadsEnvVars(t *testing.T) {
t.Fatalf("function failed with [%T] %v", err, err)
}

serverCtx = server.GetServerContextFromCmd(cmd)

if testAddr != serverCtx.Config.RPC.ListenAddress {
t.Errorf("RPCListenAddress was not set from env. var. %q", envVarName)
}
Expand Down Expand Up @@ -351,6 +361,8 @@ func TestInterceptConfigsPreRunHandlerPrecedenceFlag(t *testing.T) {
t.Fatalf("function failed with [%T] %v", err, err)
}

serverCtx = server.GetServerContextFromCmd(testCommon.cmd)

if TestAddrExpected != serverCtx.Config.RPC.ListenAddress {
t.Fatalf("RPCListenAddress was not set from flag %q", testCommon.flagName)
}
Expand All @@ -367,6 +379,8 @@ func TestInterceptConfigsPreRunHandlerPrecedenceEnvVar(t *testing.T) {
t.Fatalf("function failed with [%T] %v", err, err)
}

serverCtx = server.GetServerContextFromCmd(testCommon.cmd)

if TestAddrExpected != serverCtx.Config.RPC.ListenAddress {
t.Errorf("RPCListenAddress was not set from env. var. %q", testCommon.envVarName)
}
Expand All @@ -383,6 +397,8 @@ func TestInterceptConfigsPreRunHandlerPrecedenceConfigFile(t *testing.T) {
t.Fatalf("function failed with [%T] %v", err, err)
}

serverCtx = server.GetServerContextFromCmd(testCommon.cmd)

if TestAddrExpected != serverCtx.Config.RPC.ListenAddress {
t.Errorf("RPCListenAddress was not read from file %q", testCommon.configTomlPath)
}
Expand All @@ -399,6 +415,8 @@ func TestInterceptConfigsPreRunHandlerPrecedenceConfigDefault(t *testing.T) {
t.Fatalf("function failed with [%T] %v", err, err)
}

serverCtx = server.GetServerContextFromCmd(testCommon.cmd)

if serverCtx.Config.RPC.ListenAddress != "tcp://127.0.0.1:26657" {
t.Error("RPCListenAddress is not using default")
}
Expand Down
2 changes: 1 addition & 1 deletion simapp/simd/cmd/root_v2.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ func NewRootCmd() *cobra.Command {
cmd.SetOut(cmd.OutOrStdout())
cmd.SetErr(cmd.ErrOrStderr())

clientCtx = clientCtx.WithCmdContext(cmd.Context())
clientCtx = clientCtx.WithCmdContext(cmd.Context()).WithViper("")
clientCtx, err := client.ReadPersistentCommandFlags(clientCtx, cmd.Flags())
if err != nil {
return err
Expand Down

0 comments on commit 3e05255

Please sign in to comment.