x/tools/gopls: show progress reporting for all commands #40634
Thanks @hasheddan! I actually spent a bit of time looking into this with https://golang.org/cl/247320, but it turned out to be a little more complex than I expected, so it may not be the best issue to start with (basically each command type needs its own progress reporting, which is a little unpleasant). Also, I think this needs to wait until #40527 is resolved.
However, any issue with the help wanted label is totally available. Let me know if any of those sound good to you!
This change contains several improvements for progress reporting: + Consolidate the 'progressWriter' interface into the workDone interface. Now all progress reporting should use workDone, and the workDoneWriter struct is just an io.Writer adapter on top of workDone. + Factor out the pattern of progress reporting, and use for all asynchronous commands. + Make several commands that were previously synchronous async. + Add a test for cancellation when the WorkDone API is not supported. + Always report workdone progress using a detached context. + Update 'run tests' to use the -v option, and merge stderr and stdout, to increase the amount of information reported. + Since $/progress reporting is now always run with a detached context, the 'NoOutstandingWork' expectation should now behave correctly. Use it in a few places. A follow-up CL will improve the messages reported on command completion. For golang/go#40634 Change-Id: I7401ae62f7ed22d76e558ccc046e981622a64b12 Reviewed-on: https://go-review.googlesource.com/c/tools/+/248918 Run-TryBot: Robert Findley <email@example.com> TryBot-Result: Gobot Gobot <firstname.lastname@example.org> Reviewed-by: Heschi Kreinick <email@example.com>