tree d2c7de0518980b746ceda76e0037ec5979afd60e
parent 00c71e85b4164a438f88341fcc1c4708c0b058a4
author Dmitri Shuralyov <dmitshur@golang.org> 1670272926 -0500
committer Gopher Robot <gobot@golang.org> 1670275398 +0000

internal/task: move loadMilestoneIssues method into GitHubClient

TestMilestones is a destructive test that operates on a real GitHub
repo. This was useful during the initial development of MilestoneTasks,
but now it's preferable to have a small and quick-to-run test to go
alongside small behavior adjustments we might want to make.

It was tempting to add a test-only hook like:

	 func (m *MilestoneTasks) loadMilestoneIssues(...) {
	+	if m.testHookLoadMilestoneIssues != nil {
	+		// easily return milestone issues for a test case
	+	}
	 	// real implementation

But we already have GitHubClientInterface that's meant to help.
It's possible to mock its Query method, but doing that is very
verbose and fragile. Instead, factor in the loadMilestoneIssues
method to be a part of GitHubClientInterface since it fits well.
While here, also s/load/fetch/ in its name for consistency.

As a result, we now have TestCheckBlockers. The next CL in the stack
changes how beta 2/3/etc. are handled to match our previous behavior.
The one after that adds handling for the new okay-after-rc1 label.

Change-Id: I8fb8df6eedd668c08ea954b3e29176a654801a36
Reviewed-on: https://go-review.googlesource.com/c/build/+/453980
Run-TryBot: Dmitri Shuralyov <dmitshur@golang.org>
Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Heschi Kreinick <heschi@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
