forked from mirror/cobra
Avoid storing pointer to nil (#411)
* Fix shellcheck Before this change: In - line 204: declare -F $next_command >/dev/null && $next_command ^-- SC2086: Double quote to prevent globbing and word splitting. --- FAIL: TestBashCompletions (0.34s) bash_completions_test.go:138: shellcheck failed: exit status 1 * Avoid storing pointer to nil Before this change, the new test fails with: --- FAIL: TestSetOutput (0.00s) command_test.go:198: expected setting output to nil to revert back to stdout, got <nil>
This commit is contained in:
parent
6421115516
commit
7aeaa2cce6
|
@ -225,7 +225,7 @@ __handle_command()
|
||||||
fi
|
fi
|
||||||
c=$((c+1))
|
c=$((c+1))
|
||||||
__debug "${FUNCNAME[0]}: looking for ${next_command}"
|
__debug "${FUNCNAME[0]}: looking for ${next_command}"
|
||||||
declare -F $next_command >/dev/null && $next_command
|
declare -F "$next_command" >/dev/null && $next_command
|
||||||
}
|
}
|
||||||
|
|
||||||
__handle_word()
|
__handle_word()
|
||||||
|
|
|
@ -113,7 +113,7 @@ type Command struct {
|
||||||
flagErrorBuf *bytes.Buffer
|
flagErrorBuf *bytes.Buffer
|
||||||
|
|
||||||
args []string // actual args parsed from flags
|
args []string // actual args parsed from flags
|
||||||
output *io.Writer // out writer if set in SetOutput(w)
|
output io.Writer // out writer if set in SetOutput(w)
|
||||||
usageFunc func(*Command) error // Usage can be defined by application
|
usageFunc func(*Command) error // Usage can be defined by application
|
||||||
usageTemplate string // Can be defined by Application
|
usageTemplate string // Can be defined by Application
|
||||||
flagErrorFunc func(*Command, error) error
|
flagErrorFunc func(*Command, error) error
|
||||||
|
@ -141,7 +141,7 @@ func (c *Command) SetArgs(a []string) {
|
||||||
// SetOutput sets the destination for usage and error messages.
|
// SetOutput sets the destination for usage and error messages.
|
||||||
// If output is nil, os.Stderr is used.
|
// If output is nil, os.Stderr is used.
|
||||||
func (c *Command) SetOutput(output io.Writer) {
|
func (c *Command) SetOutput(output io.Writer) {
|
||||||
c.output = &output
|
c.output = output
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetUsageFunc sets usage function. Usage can be defined by application.
|
// SetUsageFunc sets usage function. Usage can be defined by application.
|
||||||
|
@ -199,7 +199,7 @@ func (c *Command) OutOrStderr() io.Writer {
|
||||||
|
|
||||||
func (c *Command) getOut(def io.Writer) io.Writer {
|
func (c *Command) getOut(def io.Writer) io.Writer {
|
||||||
if c.output != nil {
|
if c.output != nil {
|
||||||
return *c.output
|
return c.output
|
||||||
}
|
}
|
||||||
if c.HasParent() {
|
if c.HasParent() {
|
||||||
return c.parent.getOut(def)
|
return c.parent.getOut(def)
|
||||||
|
|
|
@ -191,6 +191,14 @@ func TestEnableCommandSortingIsDisabled(t *testing.T) {
|
||||||
EnableCommandSorting = true
|
EnableCommandSorting = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSetOutput(t *testing.T) {
|
||||||
|
cmd := &Command{}
|
||||||
|
cmd.SetOutput(nil)
|
||||||
|
if out := cmd.OutOrStdout(); out != os.Stdout {
|
||||||
|
t.Fatalf("expected setting output to nil to revert back to stdout, got %v", out)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestFlagErrorFunc(t *testing.T) {
|
func TestFlagErrorFunc(t *testing.T) {
|
||||||
|
|
||||||
cmd := &Command{
|
cmd := &Command{
|
||||||
|
|
Loading…
Reference in New Issue