Fix some stdout issues with concurrence #20283
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
If
HOMEBREW_DOWNLOAD_CONCURRENCY
is set, everybrew
command callsTty::hide_cursor
andTty::show_cursor
, which prints invisible characters tostdout
. This breaks things likebrew info --json=v2 wget | jq .
and also some ofbrew tests
.This PR modifies the
DownloadQueue#fetch
method to return early if there are no pending downloads, and to handle a single download as ifHOMEBREW_DOWNLOAD_CONCURRENCY
is set to 1. This means that we only enter the region that needs to hide and show the cursor if we actually need.To avoid this regressing in the future, we should really have at least one integration test that has concurrency enabled, but I held off on that for now since we may get that for free if concurrent downloads ever become the default