From ca4363ffb7b674775bea5df072b9d106b8057181 Mon Sep 17 00:00:00 2001 From: Alessio Treglia Date: Fri, 17 May 2019 02:34:54 +0100 Subject: [PATCH] Merge PR #4351: remove x/ dependency on cmd/gaia * remove x/ dependency on cmd/gaia This is an alternative patch to what is proposed in #4348 * Add pending entry * Ditto for CollectGenTxsCmd * Update pending * Update tests * Update pending --- .pending/breaking/sdk/4351-AddGenesisAccou | 1 + cmd/gaia/cmd/gaiad/main.go | 6 +-- .../genaccounts/client/cli/genesis_accts.go | 8 +-- x/genutil/client/cli/collect.go | 5 +- x/genutil/client/cli/init.go | 6 +-- x/genutil/client/cli/init_test.go | 53 ++++++++++--------- 6 files changed, 40 insertions(+), 39 deletions(-) create mode 100644 .pending/breaking/sdk/4351-AddGenesisAccou diff --git a/.pending/breaking/sdk/4351-AddGenesisAccou b/.pending/breaking/sdk/4351-AddGenesisAccou new file mode 100644 index 0000000000..92dfbcc377 --- /dev/null +++ b/.pending/breaking/sdk/4351-AddGenesisAccou @@ -0,0 +1 @@ +#4351 InitCmd, AddGenesisAccountCmd, and CollectGenTxsCmd take node's and client's default home directories as arguments. diff --git a/cmd/gaia/cmd/gaiad/main.go b/cmd/gaia/cmd/gaiad/main.go index c2aef45b3f..78d59c7c6e 100644 --- a/cmd/gaia/cmd/gaiad/main.go +++ b/cmd/gaia/cmd/gaiad/main.go @@ -46,11 +46,11 @@ func main() { PersistentPreRunE: server.PersistentPreRunEFn(ctx), } - rootCmd.AddCommand(genutilcli.InitCmd(ctx, cdc, app.ModuleBasics)) - rootCmd.AddCommand(genutilcli.CollectGenTxsCmd(ctx, cdc, genaccounts.AppModuleBasic{})) + rootCmd.AddCommand(genutilcli.InitCmd(ctx, cdc, app.ModuleBasics, app.DefaultNodeHome)) + rootCmd.AddCommand(genutilcli.CollectGenTxsCmd(ctx, cdc, genaccounts.AppModuleBasic{}, app.DefaultNodeHome)) rootCmd.AddCommand(genutilcli.GenTxCmd(ctx, cdc, app.ModuleBasics, genaccounts.AppModuleBasic{}, app.DefaultNodeHome, app.DefaultCLIHome)) rootCmd.AddCommand(genutilcli.ValidateGenesisCmd(ctx, cdc, app.ModuleBasics)) - rootCmd.AddCommand(genaccscli.AddGenesisAccountCmd(ctx, cdc)) + rootCmd.AddCommand(genaccscli.AddGenesisAccountCmd(ctx, cdc, app.DefaultNodeHome, app.DefaultCLIHome)) rootCmd.AddCommand(client.NewCompletionCmd(rootCmd, true)) rootCmd.AddCommand(testnetCmd(ctx, cdc, app.ModuleBasics, genaccounts.AppModuleBasic{})) rootCmd.AddCommand(replayCmd()) diff --git a/x/auth/genaccounts/client/cli/genesis_accts.go b/x/auth/genaccounts/client/cli/genesis_accts.go index 7ac0759b56..fbd1e9e5c5 100644 --- a/x/auth/genaccounts/client/cli/genesis_accts.go +++ b/x/auth/genaccounts/client/cli/genesis_accts.go @@ -8,7 +8,6 @@ import ( "github.com/tendermint/tendermint/libs/cli" "github.com/cosmos/cosmos-sdk/client/keys" - "github.com/cosmos/cosmos-sdk/cmd/gaia/app" "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/server" sdk "github.com/cosmos/cosmos-sdk/types" @@ -24,7 +23,8 @@ const ( ) // AddGenesisAccountCmd returns add-genesis-account cobra Command. -func AddGenesisAccountCmd(ctx *server.Context, cdc *codec.Codec) *cobra.Command { +func AddGenesisAccountCmd(ctx *server.Context, cdc *codec.Codec, + defaultNodeHome, defaultClientHome string) *cobra.Command { cmd := &cobra.Command{ Use: "add-genesis-account [address_or_key_name] [coin][,[coin]]", Short: "Add genesis account to genesis.json", @@ -95,8 +95,8 @@ func AddGenesisAccountCmd(ctx *server.Context, cdc *codec.Codec) *cobra.Command }, } - cmd.Flags().String(cli.HomeFlag, app.DefaultNodeHome, "node's home directory") - cmd.Flags().String(flagClientHome, app.DefaultCLIHome, "client's home directory") + cmd.Flags().String(cli.HomeFlag, defaultNodeHome, "node's home directory") + cmd.Flags().String(flagClientHome, defaultClientHome, "client's home directory") cmd.Flags().String(flagVestingAmt, "", "amount of coins for vesting accounts") cmd.Flags().Uint64(flagVestingStart, 0, "schedule start time (unix epoch) for vesting accounts") cmd.Flags().Uint64(flagVestingEnd, 0, "schedule end time (unix epoch) for vesting accounts") diff --git a/x/genutil/client/cli/collect.go b/x/genutil/client/cli/collect.go index 7484206dd8..5b2b9912c0 100644 --- a/x/genutil/client/cli/collect.go +++ b/x/genutil/client/cli/collect.go @@ -10,7 +10,6 @@ import ( tmtypes "github.com/tendermint/tendermint/types" "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/cmd/gaia/app" "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/server" "github.com/cosmos/cosmos-sdk/x/genutil" @@ -20,7 +19,7 @@ const flagGenTxDir = "gentx-dir" // CollectGenTxsCmd - return the cobra command to collect genesis transactions func CollectGenTxsCmd(ctx *server.Context, cdc *codec.Codec, - genAccIterator genutil.GenesisAccountsIterator) *cobra.Command { + genAccIterator genutil.GenesisAccountsIterator, defaultNodeHome string) *cobra.Command { cmd := &cobra.Command{ Use: "collect-gentxs", @@ -59,7 +58,7 @@ func CollectGenTxsCmd(ctx *server.Context, cdc *codec.Codec, }, } - cmd.Flags().String(cli.HomeFlag, app.DefaultNodeHome, "node's home directory") + cmd.Flags().String(cli.HomeFlag, defaultNodeHome, "node's home directory") cmd.Flags().String(flagGenTxDir, "", "override default \"gentx\" directory from which collect and execute "+ "genesis transactions; default [--home]/config/gentx/") diff --git a/x/genutil/client/cli/init.go b/x/genutil/client/cli/init.go index dc89e96f8b..0c2f04834e 100644 --- a/x/genutil/client/cli/init.go +++ b/x/genutil/client/cli/init.go @@ -14,7 +14,6 @@ import ( "github.com/tendermint/tendermint/types" "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/cmd/gaia/app" "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/server" sdk "github.com/cosmos/cosmos-sdk/types" @@ -58,7 +57,8 @@ func displayInfo(cdc *codec.Codec, info printInfo) error { // InitCmd returns a command that initializes all files needed for Tendermint // and the respective application. -func InitCmd(ctx *server.Context, cdc *codec.Codec, mbm sdk.ModuleBasicManager) *cobra.Command { // nolint: golint +func InitCmd(ctx *server.Context, cdc *codec.Codec, mbm sdk.ModuleBasicManager, + defaultNodeHome string) *cobra.Command { // nolint: golint cmd := &cobra.Command{ Use: "init [moniker]", Short: "Initialize private validator, p2p, genesis, and application configuration files", @@ -115,7 +115,7 @@ func InitCmd(ctx *server.Context, cdc *codec.Codec, mbm sdk.ModuleBasicManager) }, } - cmd.Flags().String(cli.HomeFlag, app.DefaultNodeHome, "node's home directory") + cmd.Flags().String(cli.HomeFlag, defaultNodeHome, "node's home directory") cmd.Flags().BoolP(flagOverwrite, "o", false, "overwrite the genesis.json file") cmd.Flags().String(client.FlagChainID, "", "genesis file chain-id, if left blank will be randomly created") diff --git a/x/genutil/client/cli/init_test.go b/x/genutil/client/cli/init_test.go index 5d5aea8a0d..41e02ac134 100644 --- a/x/genutil/client/cli/init_test.go +++ b/x/genutil/client/cli/init_test.go @@ -3,7 +3,6 @@ package cli import ( "bytes" "io" - "io/ioutil" "os" "testing" "time" @@ -16,9 +15,10 @@ import ( "github.com/tendermint/tendermint/libs/log" "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/cmd/gaia/app" + "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/server" "github.com/cosmos/cosmos-sdk/server/mock" + "github.com/cosmos/cosmos-sdk/tests" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/genutil" ) @@ -28,42 +28,41 @@ var testMbm = sdk.NewModuleBasicManager(genutil.AppModuleBasic{}) func TestInitCmd(t *testing.T) { defer server.SetupViper(t)() defer setupClientHome(t)() + home, cleanup := tests.NewTestCaseDir(t) + defer cleanup() logger := log.NewNopLogger() cfg, err := tcmd.ParseConfig() require.Nil(t, err) ctx := server.NewContext(cfg, logger) - cdc := app.MakeCodec() - cmd := InitCmd(ctx, cdc, testMbm) + cdc := makeCodec() + cmd := InitCmd(ctx, cdc, testMbm, home) require.NoError(t, cmd.RunE(nil, []string{"gaianode-test"})) } func setupClientHome(t *testing.T) func() { - clientDir, err := ioutil.TempDir("", "mock-sdk-cmd") - require.Nil(t, err) + clientDir, cleanup := tests.NewTestCaseDir(t) viper.Set(flagClientHome, clientDir) - return func() { - if err := os.RemoveAll(clientDir); err != nil { - // TODO: Handle with #870 - panic(err) - } - } + return cleanup } func TestEmptyState(t *testing.T) { defer server.SetupViper(t)() defer setupClientHome(t)() + home, cleanup := tests.NewTestCaseDir(t) + defer cleanup() + logger := log.NewNopLogger() cfg, err := tcmd.ParseConfig() require.Nil(t, err) ctx := server.NewContext(cfg, logger) - cdc := app.MakeCodec() + cdc := makeCodec() - cmd := InitCmd(ctx, cdc, testMbm) + cmd := InitCmd(ctx, cdc, testMbm, home) require.NoError(t, cmd.RunE(nil, []string{"gaianode-test"})) old := os.Stdout @@ -93,11 +92,8 @@ func TestEmptyState(t *testing.T) { } func TestStartStandAlone(t *testing.T) { - home, err := ioutil.TempDir("", "mock-sdk-cmd") - require.Nil(t, err) - defer func() { - os.RemoveAll(home) - }() + home, cleanup := tests.NewTestCaseDir(t) + defer cleanup() viper.Set(cli.HomeFlag, home) defer setupClientHome(t)() @@ -105,8 +101,8 @@ func TestStartStandAlone(t *testing.T) { cfg, err := tcmd.ParseConfig() require.Nil(t, err) ctx := server.NewContext(cfg, logger) - cdc := app.MakeCodec() - initCmd := InitCmd(ctx, cdc, testMbm) + cdc := makeCodec() + initCmd := InitCmd(ctx, cdc, testMbm, home) require.NoError(t, initCmd.RunE(nil, []string{"gaianode-test"})) app, err := mock.NewApp(home, logger) @@ -126,11 +122,8 @@ func TestStartStandAlone(t *testing.T) { } func TestInitNodeValidatorFiles(t *testing.T) { - home, err := ioutil.TempDir("", "mock-sdk-cmd") - require.Nil(t, err) - defer func() { - os.RemoveAll(home) - }() + home, cleanup := tests.NewTestCaseDir(t) + defer cleanup() viper.Set(cli.HomeFlag, home) viper.Set(client.FlagName, "moniker") cfg, err := tcmd.ParseConfig() @@ -140,3 +133,11 @@ func TestInitNodeValidatorFiles(t *testing.T) { require.NotEqual(t, "", nodeID) require.NotEqual(t, 0, len(valPubKey.Bytes())) } + +// custom tx codec +func makeCodec() *codec.Codec { + var cdc = codec.New() + sdk.RegisterCodec(cdc) + codec.RegisterCrypto(cdc) + return cdc +}