refactor testRepoState

This commit is contained in:
Kirill Zhuravlev 2023-02-15 18:16:00 +01:00 committed by Avelino
parent 1e6ba5dd3e
commit 8bac0087c0
No known key found for this signature in database
GPG Key ID: B345B4D52E98180A
1 changed files with 17 additions and 13 deletions

View File

@ -154,9 +154,9 @@ func containsOpenIssue(link string, openIssues map[string]bool) bool {
return ok return ok
} }
func testRepoState(toRun bool, href string, client *http.Client, staleRepos *[]string) bool { func getRepoStates(toRun bool, href string, client *http.Client) ([]string, bool) {
if !toRun { if !toRun {
return false return nil, false
} }
ownerRepo := strings.ReplaceAll(href, "https://github.com", "") ownerRepo := strings.ReplaceAll(href, "https://github.com", "")
@ -164,13 +164,13 @@ func testRepoState(toRun bool, href string, client *http.Client, staleRepos *[]s
req, err := http.NewRequest("GET", apiCall, nil) req, err := http.NewRequest("GET", apiCall, nil)
if err != nil { if err != nil {
log.Printf("Failed at repository %s\n", href) log.Printf("Failed at repository %s\n", href)
return false return nil, false
} }
resp, err := client.Do(req) resp, err := client.Do(req)
if err != nil { if err != nil {
log.Printf("Failed at repository %s\n", href) log.Printf("Failed at repository %s\n", href)
return false return nil, false
} }
defer resp.Body.Close() defer resp.Body.Close()
@ -180,36 +180,38 @@ func testRepoState(toRun bool, href string, client *http.Client, staleRepos *[]s
} }
if err := json.NewDecoder(resp.Body).Decode(&repoResp); err != nil { if err := json.NewDecoder(resp.Body).Decode(&repoResp); err != nil {
return false return nil, false
} }
isRepoAdded := false var isRepoAdded bool
var staleRepos []string
if resp.StatusCode == http.StatusMovedPermanently { if resp.StatusCode == http.StatusMovedPermanently {
*staleRepos = append(*staleRepos, href+movedPermanently) staleRepos = append(staleRepos, href+movedPermanently)
log.Printf("%s returned %d", href, resp.StatusCode) log.Printf("%s returned %d", href, resp.StatusCode)
isRepoAdded = true isRepoAdded = true
} }
if resp.StatusCode == http.StatusFound && !isRepoAdded { if resp.StatusCode == http.StatusFound && !isRepoAdded {
*staleRepos = append(*staleRepos, href+status302) staleRepos = append(staleRepos, href+status302)
log.Printf("%s returned %d", href, resp.StatusCode) log.Printf("%s returned %d", href, resp.StatusCode)
isRepoAdded = true isRepoAdded = true
} }
if resp.StatusCode >= http.StatusBadRequest && !isRepoAdded { if resp.StatusCode >= http.StatusBadRequest && !isRepoAdded {
*staleRepos = append(*staleRepos, href+deadLinkMessage) staleRepos = append(staleRepos, href+deadLinkMessage)
log.Printf("%s might not exist!", href) log.Printf("%s might not exist!", href)
isRepoAdded = true isRepoAdded = true
} }
if repoResp.Archived && !isRepoAdded { if repoResp.Archived && !isRepoAdded {
*staleRepos = append(*staleRepos, href+archived) staleRepos = append(staleRepos, href+archived)
log.Printf("%s is archived!", href) log.Printf("%s is archived!", href)
isRepoAdded = true isRepoAdded = true
} }
return isRepoAdded // FIXME: expression `(len(staleRepos) > 0) == isRepoAdded` is always true.
return staleRepos, isRepoAdded
} }
func testCommitAge(toRun bool, href string, client *http.Client, staleRepos *[]string) bool { func testCommitAge(toRun bool, href string, client *http.Client, staleRepos *[]string) bool {
@ -300,8 +302,10 @@ func TestStaleRepository(t *testing.T) {
log.Printf("%s non-github repo not currently handled", href) log.Printf("%s non-github repo not currently handled", href)
} }
// FIXME: this is `or` expression. Probably we need `and` // FIXME: this is `or` expression. Probably we need `and`?
isRepoAdded := testRepoState(true, href, client, &staleRepos) staleRepos2, isRepoAdded := getRepoStates(true, href, client)
staleRepos = append(staleRepos, staleRepos2...)
isRepoAdded = testCommitAge(!isRepoAdded, href, client, &staleRepos) isRepoAdded = testCommitAge(!isRepoAdded, href, client, &staleRepos)
if isRepoAdded { if isRepoAdded {
ctr++ ctr++