-
Couldn't load subscription status.
- Fork 7.3k
Avoid printing header if piped to a script #796
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Avoid printing header if piped to a script #796
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
For now I'd rather see us stick with the IsTerminal helper in utils.
This reverts commit 70deeb6.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for updates!
| } | ||
|
|
||
| func TestPRList(t *testing.T) { | ||
| func TestPRList_stdout_is_not_a_tty(t *testing.T) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The updated test name makes me think that we should really have a way to force "tty mode" in tests to be able to assert such output. 🤔
This is not something that you have to do in this PR, btw. I don't know yet how would we pass that information to tests.
This comment was marked as spam.
This comment was marked as spam.
Sorry, something went wrong.
| } | ||
|
|
||
| eq(t, output.Stderr(), ` | ||
| Showing 3 of 3 pull requests in OWNER/REPO |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would recommend that we hold off merging this until we figure out how to simulate tty mode for tests so we can keep asserting this output. The header is an important part of output and I wish we can keep test coverage of it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think that is fair. In reviewing #572 and then returning to this I think we need to step back and design a holistic approach to determining what kind of output (both formatting and color) to use; something routed via the cmd reference that can be stubbed appropriately when running commands in a test.
This comment was marked as spam.
This comment was marked as spam.
Sorry, something went wrong.
command/pr.go
Outdated
| // TODO: avoid printing header if piped to a script | ||
| fmt.Fprintf(colorableErr(cmd), "\n%s\n\n", title) | ||
|
|
||
| if utils.IsTerminal(os.Stdout) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Instead of using global os.Stdout, we reference the output stream inside commands as cmd.OutOrStdout(), so you should be checking that object instead. This gives us the ability to override the output stream for tests. Note that the output stream is a Writer and not necessarily a File, so you would have to do an additional check.
This comment was marked as spam.
This comment was marked as spam.
Sorry, something went wrong.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yas
command/pr.go
Outdated
| // TODO: avoid printing header if piped to a script | ||
| fmt.Fprintf(colorableErr(cmd), "\n%s\n\n", title) | ||
|
|
||
| if utils.IsTerminal(os.Stdout) { |
This comment was marked as spam.
This comment was marked as spam.
Sorry, something went wrong.
| } | ||
|
|
||
| eq(t, output.Stderr(), ` | ||
| Showing 3 of 3 pull requests in OWNER/REPO |
This comment was marked as spam.
This comment was marked as spam.
Sorry, something went wrong.
Fixes TODO
Ref. #940