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
|
||||
c=$((c+1))
|
||||
__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()
|
||||
|
|
|
@ -113,7 +113,7 @@ type Command struct {
|
|||
flagErrorBuf *bytes.Buffer
|
||||
|
||||
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
|
||||
usageTemplate string // Can be defined by Application
|
||||
flagErrorFunc func(*Command, error) error
|
||||
|
@ -141,7 +141,7 @@ func (c *Command) SetArgs(a []string) {
|
|||
// SetOutput sets the destination for usage and error messages.
|
||||
// If output is nil, os.Stderr is used.
|
||||
func (c *Command) SetOutput(output io.Writer) {
|
||||
c.output = &output
|
||||
c.output = output
|
||||
}
|
||||
|
||||
// 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 {
|
||||
if c.output != nil {
|
||||
return *c.output
|
||||
return c.output
|
||||
}
|
||||
if c.HasParent() {
|
||||
return c.parent.getOut(def)
|
||||
|
|
|
@ -191,6 +191,14 @@ func TestEnableCommandSortingIsDisabled(t *testing.T) {
|
|||
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) {
|
||||
|
||||
cmd := &Command{
|
||||
|
|
Loading…
Reference in New Issue