google / google/subcommands

Commander misses initializing flagset output

Open
#38 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
795
Forks
51
PR merge metrics
No merged PRs in 30d

Description

## Description

In the `*Commander.Execute` method, a new `flag.FlagSet` is initialized for the command to run. However, the `FlagSet.output` of that `FlagSet` is not initialized, which causes potential errors to be reported by `f.failf()`, which in turn invokes `f.Output()`, which falls back to `os.Stderr` because the field is not initialized.

This causes the error output not to match the commander `.Error` property, preventing capture/redirection especially during tests.

## What should happen

The output of the newly created `FieldSet` should be set to either the `cdr.topFlags` output, or to `cdr.Error` during initialization, with the latter slightly being more logical.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.