Skip to content

Commit

Permalink
fix(cmd): Execute commands using RunE instead of Run
Browse files Browse the repository at this point in the history
In order to better understand why cmd tests fail, use RunE. This returns an err
and avoids calling os.Exit, which is bad since it silences test output. Other
behavior, like failing when a command is given invalid arguments, stays the
same even with this change.
  • Loading branch information
dustmop committed Jul 31, 2018
1 parent 66192a2 commit 5457ccb
Show file tree
Hide file tree
Showing 22 changed files with 225 additions and 82 deletions.
11 changes: 8 additions & 3 deletions cmd/add.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,14 @@ changes to qri.`,
create a dataset with a dataset data file:
$ qri add --file dataset.yaml --body comics.csv me/comic_characters`,
Run: func(cmd *cobra.Command, args []string) {
ExitIfErr(o.ErrOut, o.Complete(f))
ExitIfErr(o.ErrOut, o.Run(args))
RunE: func(cmd *cobra.Command, args []string) error {
if err := o.Complete(f); err != nil {
return err
}
if err := o.Run(args); err != nil {
return err
}
return nil
},
}

Expand Down
11 changes: 8 additions & 3 deletions cmd/body.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,14 @@ body reads records from a dataset`,
"group": "dataset",
},
Args: cobra.MinimumNArgs(1),
Run: func(cmd *cobra.Command, args []string) {
ExitIfErr(o.ErrOut, o.Complete(f, args))
ExitIfErr(o.ErrOut, o.Run())
RunE: func(cmd *cobra.Command, args []string) error {
if err := o.Complete(f, args); err != nil {
return err
}
if err := o.Run(); err != nil {
return err
}
return nil
},
}

Expand Down
8 changes: 7 additions & 1 deletion cmd/cmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,15 @@ func Execute() {
}

root := NewQriCommand(EnvPathFactory, os.Stdin, os.Stdout, os.Stderr)
// If the subcommand hits an error, don't show usage or the error, since we'll show
// the error message below, on our own. Usage is still shown if the subcommand
// is missing command-line arguments.
root.SilenceUsage = true
root.SilenceErrors = true
// Execute the subcommand
if err := root.Execute(); err != nil {
printErr(os.Stdin, err)
os.Exit(-1)
os.Exit(1)
}
}

Expand Down
23 changes: 17 additions & 6 deletions cmd/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,18 +52,29 @@ The --with-private-keys option will show private keys.
PLEASE PLEASE PLEASE NEVER SHARE YOUR PRIVATE KEYS WITH ANYONE. EVER.
Anyone with your private keys can impersonate you on qri.`,
Args: cobra.MaximumNArgs(1),
Run: func(cmd *cobra.Command, args []string) {
ExitIfErr(o.ErrOut, o.Complete(f))
ExitIfErr(o.ErrOut, o.Get(args))
RunE: func(cmd *cobra.Command, args []string) error {
if err := o.Complete(f); err != nil {
return err
}
if err := o.Get(args); err != nil {
return err
}
return nil
},
}

set := &cobra.Command{
Use: "set",
Short: "Set a configuration option",
Run: func(cmd *cobra.Command, args []string) {
ExitIfErr(o.ErrOut, o.Complete(f))
ExitIfErr(o.ErrOut, o.Set(args))
RunE: func(cmd *cobra.Command, args []string) error {
cmd.SilenceUsage = true
if err := o.Complete(f); err != nil {
return err
}
if err := o.Set(args); err != nil {
return err
}
return nil
},
}

Expand Down
11 changes: 8 additions & 3 deletions cmd/connect.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,14 @@ things:
When you run connect you are connecting to the distributed web, interacting with
peers & swapping data.`,
Run: func(cmd *cobra.Command, args []string) {
ExitIfErr(o.ErrOut, o.Complete(f, args))
ExitIfErr(o.ErrOut, o.Run())
RunE: func(cmd *cobra.Command, args []string) error {
if err := o.Complete(f, args); err != nil {
return err
}
if err := o.Run(); err != nil {
return err
}
return nil
},
}

Expand Down
11 changes: 8 additions & 3 deletions cmd/diff.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,14 @@ either by name or by their hash`,
"group": "dataset",
},
Args: cobra.MinimumNArgs(2),
Run: func(cmd *cobra.Command, args []string) {
ExitIfErr(o.ErrOut, o.Complete(f, args))
ExitIfErr(o.ErrOut, o.Run())
RunE: func(cmd *cobra.Command, args []string) error {
if err := o.Complete(f, args); err != nil {
return err
}
if err := o.Run(); err != nil {
return err
}
return nil
},
}

Expand Down
11 changes: 8 additions & 3 deletions cmd/export.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,14 @@ To export everything about a dataset, use the --dataset flag.`,
Annotations: map[string]string{
"group": "dataset",
},
Run: func(cmd *cobra.Command, args []string) {
ExitIfErr(o.ErrOut, o.Complete(f, args))
ExitIfErr(o.ErrOut, o.Run())
RunE: func(cmd *cobra.Command, args []string) error {
if err := o.Complete(f, args); err != nil {
return err
}
if err := o.Run(); err != nil {
return err
}
return nil
},
}

Expand Down
11 changes: 8 additions & 3 deletions cmd/get.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,14 @@ func NewGetCommand(f Factory, ioStreams IOStreams) *cobra.Command {
Annotations: map[string]string{
"group": "dataset",
},
Run: func(cmd *cobra.Command, args []string) {
ExitIfErr(o.ErrOut, o.Complete(f, args))
ExitIfErr(o.ErrOut, o.Run())
RunE: func(cmd *cobra.Command, args []string) error {
if err := o.Complete(f, args); err != nil {
return err
}
if err := o.Run(); err != nil {
return err
}
return nil
},
}

Expand Down
11 changes: 8 additions & 3 deletions cmd/info.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,14 @@ func NewInfoCommand(f Factory, ioStreams IOStreams) *cobra.Command {
"group": "dataset",
},
Args: cobra.MinimumNArgs(1),
Run: func(cmd *cobra.Command, args []string) {
ExitIfErr(o.ErrOut, o.Complete(f, args))
ExitIfErr(o.ErrOut, o.Run())
RunE: func(cmd *cobra.Command, args []string) error {
if err := o.Complete(f, args); err != nil {
return err
}
if err := o.Run(); err != nil {
return err
}
return nil
},
}

Expand Down
11 changes: 8 additions & 3 deletions cmd/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,14 @@ qri repository.`,
Annotations: map[string]string{
"group": "dataset",
},
Run: func(cmd *cobra.Command, args []string) {
ExitIfErr(o.ErrOut, o.Complete(f, args))
ExitIfErr(o.ErrOut, o.Run())
RunE: func(cmd *cobra.Command, args []string) error {
if err := o.Complete(f, args); err != nil {
return err
}
if err := o.Run(); err != nil {
return err
}
return nil
},
}

Expand Down
11 changes: 8 additions & 3 deletions cmd/log.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,14 @@ working backwards in time.`,
"group": "dataset",
},
Args: cobra.ExactArgs(1),
Run: func(cmd *cobra.Command, args []string) {
ExitIfErr(o.ErrOut, o.Complete(f, args))
ExitIfErr(o.ErrOut, o.Run())
RunE: func(cmd *cobra.Command, args []string) error {
if err := o.Complete(f, args); err != nil {
return err
}
if err := o.Run(); err != nil {
return err
}
return nil
},
}

Expand Down
44 changes: 32 additions & 12 deletions cmd/peers.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,14 @@ format is yaml.`,
show info in json:
$ qri peers info b5 --format json`,
Args: cobra.MinimumNArgs(1),
Run: func(cmd *cobra.Command, args []string) {
ExitIfErr(o.ErrOut, o.Complete(f, args))
ExitIfErr(o.ErrOut, o.Info())
RunE: func(cmd *cobra.Command, args []string) error {
if err := o.Complete(f, args); err != nil {
return err
}
if err := o.Info(); err != nil {
return err
}
return nil
},
}

Expand All @@ -54,29 +59,44 @@ command in the background or in another terminal window.
to ensure you get a cached version of the list:
$ qri peers list --cached`,
Aliases: []string{"ls"},
Run: func(cmd *cobra.Command, args []string) {
ExitIfErr(o.ErrOut, o.Complete(f, args))
ExitIfErr(o.ErrOut, o.List())
RunE: func(cmd *cobra.Command, args []string) error {
if err := o.Complete(f, args); err != nil {
return err
}
if err := o.List(); err != nil {
return err
}
return nil
},
}

connect := &cobra.Command{
Use: "connect",
Short: "connect to a peer",
Args: cobra.MinimumNArgs(1),
Run: func(cmd *cobra.Command, args []string) {
ExitIfErr(o.ErrOut, o.Complete(f, args))
ExitIfErr(o.ErrOut, o.Connect())
RunE: func(cmd *cobra.Command, args []string) error {
if err := o.Complete(f, args); err != nil {
return err
}
if err := o.Connect(); err != nil {
return err
}
return nil
},
}

disconnect := &cobra.Command{
Use: "disconnect",
Short: "explicitly close a connection to a peer",
Args: cobra.MinimumNArgs(1),
Run: func(cmd *cobra.Command, args []string) {
ExitIfErr(o.ErrOut, o.Complete(f, args))
ExitIfErr(o.ErrOut, o.Disconnect())
RunE: func(cmd *cobra.Command, args []string) error {
if err := o.Complete(f, args); err != nil {
return err
}
if err := o.Disconnect(); err != nil {
return err
}
return nil
},
}

Expand Down
22 changes: 16 additions & 6 deletions cmd/registry.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,14 @@ $ qri config set registry.location ""`,
Example: ` Publish a dataset you've created to the registry:
$ qri registry publish me/dataset_name`,
Args: cobra.MinimumNArgs(1),
Run: func(cmd *cobra.Command, args []string) {
ExitIfErr(o.ErrOut, o.Complete(f, args))
ExitIfErr(o.ErrOut, o.Publish())
RunE: func(cmd *cobra.Command, args []string) error {
if err := o.Complete(f, args); err != nil {
return err
}
if err := o.Publish(); err != nil {
return err
}
return nil
},
}

Expand All @@ -61,9 +66,14 @@ $ qri config set registry.location ""`,
Example: ` Remove a dataset from the registry:
$ qri registry unpublish me/dataset_name`,
Args: cobra.MinimumNArgs(1),
Run: func(cmd *cobra.Command, args []string) {
ExitIfErr(o.ErrOut, o.Complete(f, args))
ExitIfErr(o.ErrOut, o.Unpublish())
RunE: func(cmd *cobra.Command, args []string) error {
if err := o.Complete(f, args); err != nil {
return err
}
if err := o.Unpublish(); err != nil {
return err
}
return nil
},
}

Expand Down
11 changes: 8 additions & 3 deletions cmd/remove.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,14 @@ both qri & IPFS. Promise.`,
Annotations: map[string]string{
"group": "dataset",
},
Run: func(cmd *cobra.Command, args []string) {
ExitIfErr(o.ErrOut, o.Complete(f, args))
ExitIfErr(o.ErrOut, o.Run())
RunE: func(cmd *cobra.Command, args []string) error {
if err := o.Complete(f, args); err != nil {
return err
}
if err := o.Run(); err != nil {
return err
}
return nil
},
}

Expand Down
11 changes: 8 additions & 3 deletions cmd/rename.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,14 @@ renames to a minimum.`,
Annotations: map[string]string{
"group": "dataset",
},
Run: func(cmd *cobra.Command, args []string) {
ExitIfErr(o.ErrOut, o.Complete(f, args))
ExitIfErr(o.ErrOut, o.Run())
RunE: func(cmd *cobra.Command, args []string) error {
if err := o.Complete(f, args); err != nil {
return err
}
if err := o.Run(); err != nil {
return err
}
return nil
},
}

Expand Down
15 changes: 11 additions & 4 deletions cmd/render.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,17 @@ func NewRenderCommand(f Factory, ioStreams IOStreams) *cobra.Command {
Annotations: map[string]string{
"group": "dataset",
},
Run: func(cmd *cobra.Command, args []string) {
ExitIfErr(o.ErrOut, o.Complete(f, args))
ExitIfErr(o.ErrOut, o.Validate())
ExitIfErr(o.ErrOut, o.Run())
RunE: func(cmd *cobra.Command, args []string) error {
if err := o.Complete(f, args); err != nil {
return err
}
if err := o.Validate(); err != nil {
return err
}
if err := o.Run(); err != nil {
return err
}
return nil
},
}

Expand Down
Loading

0 comments on commit 5457ccb

Please sign in to comment.