зеркало из https://github.com/golang/build.git
maintner: fix un-initialized github panic
Previously processGithubIssueMutation called initGithub, but processGithubMutation did not, so if your on-disk mutation file had a GithubMutation before a GithubIssueMutation, c.github would be nil and Initialize() would panic. Call initGithub from processGithubMutation and add a test to protect against regressions. Change-Id: Ie706fa04cb8ea87c2e0259dbee024c0005f0523f Reviewed-on: https://go-review.googlesource.com/41298 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
Родитель
a98587f60c
Коммит
022bf90f00
|
@ -62,6 +62,9 @@ func (g *GitHub) Repo(owner, repo string) *GitHubRepo {
|
|||
}
|
||||
|
||||
func (g *GitHub) getOrCreateRepo(owner, repo string) *GitHubRepo {
|
||||
if g == nil {
|
||||
panic("cannot call methods on nil GitHub")
|
||||
}
|
||||
id := GithubRepoID{owner, repo}
|
||||
if !id.valid() {
|
||||
return nil
|
||||
|
@ -956,6 +959,10 @@ func (r *GitHubRepo) missingIssues() []int32 {
|
|||
|
||||
// processGithubMutation updates the corpus with the information in m.
|
||||
func (c *Corpus) processGithubMutation(m *maintpb.GithubMutation) {
|
||||
if c == nil {
|
||||
panic("nil corpus")
|
||||
}
|
||||
c.initGithub()
|
||||
gr := c.github.getOrCreateRepo(m.Owner, m.Repo)
|
||||
if gr == nil {
|
||||
log.Printf("bogus Owner/Repo %q/%q in mutation: %v", m.Owner, m.Repo, m)
|
||||
|
|
|
@ -112,6 +112,25 @@ func TestProcessMutation_Github_NewIssue(t *testing.T) {
|
|||
})
|
||||
}
|
||||
|
||||
func TestProcessMutation_Github(t *testing.T) {
|
||||
c := NewCorpus(&dummyMutationLogger{}, "")
|
||||
github := &GitHub{c: c}
|
||||
c.github = github
|
||||
github.repos = map[GithubRepoID]*GitHubRepo{
|
||||
GithubRepoID{"golang", "go"}: &GitHubRepo{
|
||||
github: github,
|
||||
id: GithubRepoID{"golang", "go"},
|
||||
issues: make(map[int32]*GitHubIssue),
|
||||
},
|
||||
}
|
||||
mutationTest{want: c}.test(t, &maintpb.Mutation{
|
||||
Github: &maintpb.GithubMutation{
|
||||
Owner: "golang",
|
||||
Repo: "go",
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func TestNewMutationsFromIssue(t *testing.T) {
|
||||
gh := &github.Issue{
|
||||
Number: github.Int(5),
|
||||
|
|
Загрузка…
Ссылка в новой задаче