From cfe72d1cfa0b90e2dc8efc70b48781c41c09c89f Mon Sep 17 00:00:00 2001 From: Mindaugas Rukas <3825716+mindaugasrukas@users.noreply.github.com> Date: Wed, 26 Apr 2023 10:15:42 -0700 Subject: [PATCH 1/3] Fix error return bug and some minor code style --- tools/cassandra/handler.go | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/tools/cassandra/handler.go b/tools/cassandra/handler.go index ce20d04349e..2ae3b07798e 100644 --- a/tools/cassandra/handler.go +++ b/tools/cassandra/handler.go @@ -25,6 +25,7 @@ package cassandra import ( + "errors" "strings" "github.com/urfave/cli" @@ -96,7 +97,8 @@ func createKeyspace(cli *cli.Context, logger log.Logger) error { } keyspace := cli.String(schema.CLIOptKeyspace) if keyspace == "" { - logger.Error("Unable to read config.", tag.Error(schema.NewConfigError("missing "+flag(schema.CLIOptKeyspace)+" argument "))) + err := errors.New("missing " + flag(schema.CLIOptKeyspace) + " argument ") + logger.Error("Unable to read config.", tag.Error(schema.NewConfigError(err.Error()))) return err } err = doCreateKeyspace(config, keyspace, logger) @@ -115,7 +117,8 @@ func dropKeyspace(cli *cli.Context, logger log.Logger) error { } keyspace := cli.String(schema.CLIOptKeyspace) if keyspace == "" { - logger.Error("Unable to read config.", tag.Error(schema.NewConfigError("missing "+flag(schema.CLIOptKeyspace)+" argument "))) + err := errors.New("missing " + flag(schema.CLIOptKeyspace) + " argument ") + logger.Error("Unable to read config.", tag.Error(schema.NewConfigError(err.Error()))) return err } err = doDropKeyspace(config, keyspace, logger) @@ -161,12 +164,8 @@ func doDropKeyspace(cfg *CQLClientConfig, name string, logger log.Logger) error if err != nil { return err } - err = client.dropKeyspace(name) - if err != nil { - return err - } - client.Close() - return nil + defer client.Close() + return client.dropKeyspace(name) } func newCQLClientConfig(cli *cli.Context) (*CQLClientConfig, error) { From eea170d9aaf2b85113d408a1920e32c9727bc822 Mon Sep 17 00:00:00 2001 From: Mindaugas Rukas <3825716+mindaugasrukas@users.noreply.github.com> Date: Wed, 26 Apr 2023 12:43:19 -0700 Subject: [PATCH 2/3] Add unit tests --- tools/cassandra/handler_test.go | 26 ++++++++++++++++++++++++++ tools/cassandra/main.go | 4 +++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/tools/cassandra/handler_test.go b/tools/cassandra/handler_test.go index 837ca5b0baf..aec0e5e7361 100644 --- a/tools/cassandra/handler_test.go +++ b/tools/cassandra/handler_test.go @@ -71,3 +71,29 @@ func (s *HandlerTestSuite) TestParsingOfOptionsMap() { s.Assert().Equal(0, len(parsedMap2)) } + +func (s *HandlerTestSuite) TestDropKeyspaceError() { + // fake exit function to avoid exiting the application + back := osExit + defer func() { osExit = back }() + osExit = func(i int) { + s.Equal(1, i) + } + args := []string{"./tool", "drop-keyspace", "-f", "--keyspace", ""} + app := buildCLIOptions() + err := app.Run(args) + s.Nil(err) +} + +func (s *HandlerTestSuite) TestCreateKeyspaceError() { + // fake exit function to avoid exiting the application + back := osExit + defer func() { osExit = back }() + osExit = func(i int) { + s.Equal(1, i) + } + args := []string{"./tool", "create-keyspace", "--keyspace", ""} + app := buildCLIOptions() + err := app.Run(args) + s.Nil(err) +} diff --git a/tools/cassandra/main.go b/tools/cassandra/main.go index 3e3d9279301..07e5eb002bf 100644 --- a/tools/cassandra/main.go +++ b/tools/cassandra/main.go @@ -41,12 +41,14 @@ func RunTool(args []string) error { return app.Run(args) } +var osExit = os.Exit + // root handler for all cli commands func cliHandler(c *cli.Context, handler func(c *cli.Context, logger log.Logger) error, logger log.Logger) { quiet := c.GlobalBool(schema.CLIOptQuiet) err := handler(c, logger) if err != nil && !quiet { - os.Exit(1) + osExit(1) } } From 605553a602b6c123950a0691f7ed304ffcd3b198 Mon Sep 17 00:00:00 2001 From: Mindaugas Rukas <3825716+mindaugasrukas@users.noreply.github.com> Date: Wed, 26 Apr 2023 12:50:26 -0700 Subject: [PATCH 3/3] Update error formatting --- tools/cassandra/handler.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/cassandra/handler.go b/tools/cassandra/handler.go index 2ae3b07798e..11c56760fb8 100644 --- a/tools/cassandra/handler.go +++ b/tools/cassandra/handler.go @@ -25,7 +25,7 @@ package cassandra import ( - "errors" + "fmt" "strings" "github.com/urfave/cli" @@ -97,7 +97,7 @@ func createKeyspace(cli *cli.Context, logger log.Logger) error { } keyspace := cli.String(schema.CLIOptKeyspace) if keyspace == "" { - err := errors.New("missing " + flag(schema.CLIOptKeyspace) + " argument ") + err := fmt.Errorf("missing %s argument", flag(schema.CLIOptKeyspace)) logger.Error("Unable to read config.", tag.Error(schema.NewConfigError(err.Error()))) return err } @@ -117,7 +117,7 @@ func dropKeyspace(cli *cli.Context, logger log.Logger) error { } keyspace := cli.String(schema.CLIOptKeyspace) if keyspace == "" { - err := errors.New("missing " + flag(schema.CLIOptKeyspace) + " argument ") + err := fmt.Errorf("missing %s argument", flag(schema.CLIOptKeyspace)) logger.Error("Unable to read config.", tag.Error(schema.NewConfigError(err.Error()))) return err }