mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-29 10:57:44 +09:00 
			
		
		
		
	Split GetLatestCommitStatus as two functions (#34535)
Extract from #34531. This will reduce unnecessary count operation in databases. --------- Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
		| @@ -7,6 +7,7 @@ | |||||||
|   target_url: https://example.com/builds/ |   target_url: https://example.com/builds/ | ||||||
|   description: My awesome CI-service |   description: My awesome CI-service | ||||||
|   context: ci/awesomeness |   context: ci/awesomeness | ||||||
|  |   context_hash: c65f4d64a3b14a3eced0c9b36799e66e1bd5ced7 | ||||||
|   creator_id: 2 |   creator_id: 2 | ||||||
|  |  | ||||||
| - | - | ||||||
| @@ -18,6 +19,7 @@ | |||||||
|   target_url: https://example.com/converage/ |   target_url: https://example.com/converage/ | ||||||
|   description: My awesome Coverage service |   description: My awesome Coverage service | ||||||
|   context: cov/awesomeness |   context: cov/awesomeness | ||||||
|  |   context_hash: 3929ac7bccd3fa1bf9b38ddedb77973b1b9a8cfe | ||||||
|   creator_id: 2 |   creator_id: 2 | ||||||
|  |  | ||||||
| - | - | ||||||
| @@ -29,6 +31,7 @@ | |||||||
|   target_url: https://example.com/converage/ |   target_url: https://example.com/converage/ | ||||||
|   description: My awesome Coverage service |   description: My awesome Coverage service | ||||||
|   context: cov/awesomeness |   context: cov/awesomeness | ||||||
|  |   context_hash: 3929ac7bccd3fa1bf9b38ddedb77973b1b9a8cfe | ||||||
|   creator_id: 2 |   creator_id: 2 | ||||||
|  |  | ||||||
| - | - | ||||||
| @@ -40,6 +43,7 @@ | |||||||
|   target_url: https://example.com/builds/ |   target_url: https://example.com/builds/ | ||||||
|   description: My awesome CI-service |   description: My awesome CI-service | ||||||
|   context: ci/awesomeness |   context: ci/awesomeness | ||||||
|  |   context_hash: c65f4d64a3b14a3eced0c9b36799e66e1bd5ced7 | ||||||
|   creator_id: 2 |   creator_id: 2 | ||||||
|  |  | ||||||
| - | - | ||||||
| @@ -51,4 +55,5 @@ | |||||||
|   target_url: https://example.com/builds/ |   target_url: https://example.com/builds/ | ||||||
|   description: My awesome deploy service |   description: My awesome deploy service | ||||||
|   context: deploy/awesomeness |   context: deploy/awesomeness | ||||||
|  |   context_hash: ae9547713a6665fc4261d0756904932085a41cf2 | ||||||
|   creator_id: 2 |   creator_id: 2 | ||||||
|   | |||||||
| @@ -298,27 +298,37 @@ type CommitStatusIndex struct { | |||||||
| 	MaxIndex int64  `xorm:"index"` | 	MaxIndex int64  `xorm:"index"` | ||||||
| } | } | ||||||
|  |  | ||||||
|  | func makeRepoCommitQuery(ctx context.Context, repoID int64, sha string) *xorm.Session { | ||||||
|  | 	return db.GetEngine(ctx).Table(&CommitStatus{}). | ||||||
|  | 		Where("repo_id = ?", repoID).And("sha = ?", sha) | ||||||
|  | } | ||||||
|  |  | ||||||
| // GetLatestCommitStatus returns all statuses with a unique context for a given commit. | // GetLatestCommitStatus returns all statuses with a unique context for a given commit. | ||||||
| func GetLatestCommitStatus(ctx context.Context, repoID int64, sha string, listOptions db.ListOptions) ([]*CommitStatus, int64, error) { | func GetLatestCommitStatus(ctx context.Context, repoID int64, sha string, listOptions db.ListOptions) ([]*CommitStatus, error) { | ||||||
| 	getBase := func() *xorm.Session { |  | ||||||
| 		return db.GetEngine(ctx).Table(&CommitStatus{}). |  | ||||||
| 			Where("repo_id = ?", repoID).And("sha = ?", sha) |  | ||||||
| 	} |  | ||||||
| 	indices := make([]int64, 0, 10) | 	indices := make([]int64, 0, 10) | ||||||
| 	sess := getBase().Select("max( `index` ) as `index`"). | 	sess := makeRepoCommitQuery(ctx, repoID, sha). | ||||||
| 		GroupBy("context_hash").OrderBy("max( `index` ) desc") | 		Select("max( `index` ) as `index`"). | ||||||
|  | 		GroupBy("context_hash"). | ||||||
|  | 		OrderBy("max( `index` ) desc") | ||||||
| 	if !listOptions.IsListAll() { | 	if !listOptions.IsListAll() { | ||||||
| 		sess = db.SetSessionPagination(sess, &listOptions) | 		sess = db.SetSessionPagination(sess, &listOptions) | ||||||
| 	} | 	} | ||||||
| 	count, err := sess.FindAndCount(&indices) | 	if err := sess.Find(&indices); err != nil { | ||||||
| 	if err != nil { | 		return nil, err | ||||||
| 		return nil, count, err |  | ||||||
| 	} | 	} | ||||||
| 	statuses := make([]*CommitStatus, 0, len(indices)) | 	statuses := make([]*CommitStatus, 0, len(indices)) | ||||||
| 	if len(indices) == 0 { | 	if len(indices) == 0 { | ||||||
| 		return statuses, count, nil | 		return statuses, nil | ||||||
| 	} | 	} | ||||||
| 	return statuses, count, getBase().And(builder.In("`index`", indices)).Find(&statuses) | 	err := makeRepoCommitQuery(ctx, repoID, sha).And(builder.In("`index`", indices)).Find(&statuses) | ||||||
|  | 	return statuses, err | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func CountLatestCommitStatus(ctx context.Context, repoID int64, sha string) (int64, error) { | ||||||
|  | 	return makeRepoCommitQuery(ctx, repoID, sha). | ||||||
|  | 		Select("count(context_hash)"). | ||||||
|  | 		GroupBy("context_hash"). | ||||||
|  | 		Count() | ||||||
| } | } | ||||||
|  |  | ||||||
| // GetLatestCommitStatusForPairs returns all statuses with a unique context for a given list of repo-sha pairs | // GetLatestCommitStatusForPairs returns all statuses with a unique context for a given list of repo-sha pairs | ||||||
|   | |||||||
| @@ -55,7 +55,7 @@ func GetLatestCommitStatusForRepoAndSHAs(ctx context.Context, repoSHAs []RepoSHA | |||||||
| } | } | ||||||
|  |  | ||||||
| func UpdateCommitStatusSummary(ctx context.Context, repoID int64, sha string) error { | func UpdateCommitStatusSummary(ctx context.Context, repoID int64, sha string) error { | ||||||
| 	commitStatuses, _, err := GetLatestCommitStatus(ctx, repoID, sha, db.ListOptionsAll) | 	commitStatuses, err := GetLatestCommitStatus(ctx, repoID, sha, db.ListOptionsAll) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -26,7 +26,7 @@ func TestGetCommitStatuses(t *testing.T) { | |||||||
|  |  | ||||||
| 	repo1 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1}) | 	repo1 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1}) | ||||||
|  |  | ||||||
| 	sha1 := "1234123412341234123412341234123412341234" | 	sha1 := "1234123412341234123412341234123412341234" // the mocked commit ID in test fixtures | ||||||
|  |  | ||||||
| 	statuses, maxResults, err := db.FindAndCount[git_model.CommitStatus](db.DefaultContext, &git_model.CommitStatusOptions{ | 	statuses, maxResults, err := db.FindAndCount[git_model.CommitStatus](db.DefaultContext, &git_model.CommitStatusOptions{ | ||||||
| 		ListOptions: db.ListOptions{Page: 1, PageSize: 50}, | 		ListOptions: db.ListOptions{Page: 1, PageSize: 50}, | ||||||
| @@ -256,3 +256,26 @@ func TestCommitStatusesHideActionsURL(t *testing.T) { | |||||||
| 	assert.Empty(t, statuses[0].TargetURL) | 	assert.Empty(t, statuses[0].TargetURL) | ||||||
| 	assert.Equal(t, "https://mycicd.org/1", statuses[1].TargetURL) | 	assert.Equal(t, "https://mycicd.org/1", statuses[1].TargetURL) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | func TestGetCountLatestCommitStatus(t *testing.T) { | ||||||
|  | 	assert.NoError(t, unittest.PrepareTestDatabase()) | ||||||
|  |  | ||||||
|  | 	repo1 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1}) | ||||||
|  |  | ||||||
|  | 	sha1 := "1234123412341234123412341234123412341234" // the mocked commit ID in test fixtures | ||||||
|  |  | ||||||
|  | 	commitStatuses, err := git_model.GetLatestCommitStatus(db.DefaultContext, repo1.ID, sha1, db.ListOptions{ | ||||||
|  | 		Page:     1, | ||||||
|  | 		PageSize: 2, | ||||||
|  | 	}) | ||||||
|  | 	assert.NoError(t, err) | ||||||
|  | 	assert.Len(t, commitStatuses, 2) | ||||||
|  | 	assert.Equal(t, structs.CommitStatusFailure, commitStatuses[0].State) | ||||||
|  | 	assert.Equal(t, "ci/awesomeness", commitStatuses[0].Context) | ||||||
|  | 	assert.Equal(t, structs.CommitStatusError, commitStatuses[1].State) | ||||||
|  | 	assert.Equal(t, "deploy/awesomeness", commitStatuses[1].Context) | ||||||
|  |  | ||||||
|  | 	count, err := git_model.CountLatestCommitStatus(db.DefaultContext, repo1.ID, sha1) | ||||||
|  | 	assert.NoError(t, err) | ||||||
|  | 	assert.EqualValues(t, 3, count) | ||||||
|  | } | ||||||
|   | |||||||
| @@ -258,19 +258,24 @@ func GetCombinedCommitStatusByRef(ctx *context.APIContext) { | |||||||
|  |  | ||||||
| 	repo := ctx.Repo.Repository | 	repo := ctx.Repo.Repository | ||||||
|  |  | ||||||
| 	statuses, count, err := git_model.GetLatestCommitStatus(ctx, repo.ID, refCommit.Commit.ID.String(), utils.GetListOptions(ctx)) | 	statuses, err := git_model.GetLatestCommitStatus(ctx, repo.ID, refCommit.Commit.ID.String(), utils.GetListOptions(ctx)) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		ctx.APIErrorInternal(fmt.Errorf("GetLatestCommitStatus[%s, %s]: %w", repo.FullName(), refCommit.CommitID, err)) | 		ctx.APIErrorInternal(fmt.Errorf("GetLatestCommitStatus[%s, %s]: %w", repo.FullName(), refCommit.CommitID, err)) | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	count, err := git_model.CountLatestCommitStatus(ctx, repo.ID, refCommit.Commit.ID.String()) | ||||||
|  | 	if err != nil { | ||||||
|  | 		ctx.APIErrorInternal(fmt.Errorf("CountLatestCommitStatus[%s, %s]: %w", repo.FullName(), refCommit.CommitID, err)) | ||||||
|  | 		return | ||||||
|  | 	} | ||||||
|  | 	ctx.SetTotalCountHeader(count) | ||||||
|  |  | ||||||
| 	if len(statuses) == 0 { | 	if len(statuses) == 0 { | ||||||
| 		ctx.JSON(http.StatusOK, &api.CombinedStatus{}) | 		ctx.JSON(http.StatusOK, &api.CombinedStatus{}) | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	combiStatus := convert.ToCombinedStatus(ctx, statuses, convert.ToRepo(ctx, repo, ctx.Repo.Permission)) | 	combiStatus := convert.ToCombinedStatus(ctx, statuses, convert.ToRepo(ctx, repo, ctx.Repo.Permission)) | ||||||
|  |  | ||||||
| 	ctx.SetTotalCountHeader(count) |  | ||||||
| 	ctx.JSON(http.StatusOK, combiStatus) | 	ctx.JSON(http.StatusOK, combiStatus) | ||||||
| } | } | ||||||
|   | |||||||
| @@ -377,7 +377,7 @@ func Diff(ctx *context.Context) { | |||||||
| 		ctx.Data["FileIconPoolHTML"] = renderedIconPool.RenderToHTML() | 		ctx.Data["FileIconPoolHTML"] = renderedIconPool.RenderToHTML() | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	statuses, _, err := git_model.GetLatestCommitStatus(ctx, ctx.Repo.Repository.ID, commitID, db.ListOptionsAll) | 	statuses, err := git_model.GetLatestCommitStatus(ctx, ctx.Repo.Repository.ID, commitID, db.ListOptionsAll) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		log.Error("GetLatestCommitStatus: %v", err) | 		log.Error("GetLatestCommitStatus: %v", err) | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -291,7 +291,7 @@ func prepareMergedViewPullInfo(ctx *context.Context, issue *issues_model.Issue) | |||||||
|  |  | ||||||
| 	if len(compareInfo.Commits) != 0 { | 	if len(compareInfo.Commits) != 0 { | ||||||
| 		sha := compareInfo.Commits[0].ID.String() | 		sha := compareInfo.Commits[0].ID.String() | ||||||
| 		commitStatuses, _, err := git_model.GetLatestCommitStatus(ctx, ctx.Repo.Repository.ID, sha, db.ListOptionsAll) | 		commitStatuses, err := git_model.GetLatestCommitStatus(ctx, ctx.Repo.Repository.ID, sha, db.ListOptionsAll) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			ctx.ServerError("GetLatestCommitStatus", err) | 			ctx.ServerError("GetLatestCommitStatus", err) | ||||||
| 			return nil | 			return nil | ||||||
| @@ -358,7 +358,7 @@ func prepareViewPullInfo(ctx *context.Context, issue *issues_model.Issue) *git.C | |||||||
| 			ctx.ServerError(fmt.Sprintf("GetRefCommitID(%s)", pull.GetGitRefName()), err) | 			ctx.ServerError(fmt.Sprintf("GetRefCommitID(%s)", pull.GetGitRefName()), err) | ||||||
| 			return nil | 			return nil | ||||||
| 		} | 		} | ||||||
| 		commitStatuses, _, err := git_model.GetLatestCommitStatus(ctx, repo.ID, sha, db.ListOptionsAll) | 		commitStatuses, err := git_model.GetLatestCommitStatus(ctx, repo.ID, sha, db.ListOptionsAll) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			ctx.ServerError("GetLatestCommitStatus", err) | 			ctx.ServerError("GetLatestCommitStatus", err) | ||||||
| 			return nil | 			return nil | ||||||
| @@ -454,7 +454,7 @@ func prepareViewPullInfo(ctx *context.Context, issue *issues_model.Issue) *git.C | |||||||
| 		return nil | 		return nil | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	commitStatuses, _, err := git_model.GetLatestCommitStatus(ctx, repo.ID, sha, db.ListOptionsAll) | 	commitStatuses, err := git_model.GetLatestCommitStatus(ctx, repo.ID, sha, db.ListOptionsAll) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		ctx.ServerError("GetLatestCommitStatus", err) | 		ctx.ServerError("GetLatestCommitStatus", err) | ||||||
| 		return nil | 		return nil | ||||||
|   | |||||||
| @@ -130,7 +130,7 @@ func getReleaseInfos(ctx *context.Context, opts *repo_model.FindReleasesOptions) | |||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		if canReadActions { | 		if canReadActions { | ||||||
| 			statuses, _, err := git_model.GetLatestCommitStatus(ctx, r.Repo.ID, r.Sha1, db.ListOptionsAll) | 			statuses, err := git_model.GetLatestCommitStatus(ctx, r.Repo.ID, r.Sha1, db.ListOptionsAll) | ||||||
| 			if err != nil { | 			if err != nil { | ||||||
| 				return nil, err | 				return nil, err | ||||||
| 			} | 			} | ||||||
|   | |||||||
| @@ -131,7 +131,7 @@ func loadLatestCommitData(ctx *context.Context, latestCommit *git.Commit) bool { | |||||||
| 		ctx.Data["LatestCommitVerification"] = verification | 		ctx.Data["LatestCommitVerification"] = verification | ||||||
| 		ctx.Data["LatestCommitUser"] = user_model.ValidateCommitWithEmail(ctx, latestCommit) | 		ctx.Data["LatestCommitUser"] = user_model.ValidateCommitWithEmail(ctx, latestCommit) | ||||||
|  |  | ||||||
| 		statuses, _, err := git_model.GetLatestCommitStatus(ctx, ctx.Repo.Repository.ID, latestCommit.ID.String(), db.ListOptionsAll) | 		statuses, err := git_model.GetLatestCommitStatus(ctx, ctx.Repo.Repository.ID, latestCommit.ID.String(), db.ListOptionsAll) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			log.Error("GetLatestCommitStatus: %v", err) | 			log.Error("GetLatestCommitStatus: %v", err) | ||||||
| 		} | 		} | ||||||
|   | |||||||
| @@ -92,7 +92,7 @@ func createCommitStatus(ctx context.Context, job *actions_model.ActionRunJob) er | |||||||
| 	} | 	} | ||||||
| 	ctxname := fmt.Sprintf("%s / %s (%s)", runName, job.Name, event) | 	ctxname := fmt.Sprintf("%s / %s (%s)", runName, job.Name, event) | ||||||
| 	state := toCommitStatus(job.Status) | 	state := toCommitStatus(job.Status) | ||||||
| 	if statuses, _, err := git_model.GetLatestCommitStatus(ctx, repo.ID, sha, db.ListOptionsAll); err == nil { | 	if statuses, err := git_model.GetLatestCommitStatus(ctx, repo.ID, sha, db.ListOptionsAll); err == nil { | ||||||
| 		for _, v := range statuses { | 		for _, v := range statuses { | ||||||
| 			if v.Context == ctxname { | 			if v.Context == ctxname { | ||||||
| 				if v.State == state { | 				if v.State == state { | ||||||
|   | |||||||
| @@ -84,7 +84,7 @@ func ParseCommitsWithStatus(ctx context.Context, oldCommits []*asymkey_model.Sig | |||||||
| 		commit := &git_model.SignCommitWithStatuses{ | 		commit := &git_model.SignCommitWithStatuses{ | ||||||
| 			SignCommit: c, | 			SignCommit: c, | ||||||
| 		} | 		} | ||||||
| 		statuses, _, err := git_model.GetLatestCommitStatus(ctx, repo.ID, commit.ID.String(), db.ListOptions{}) | 		statuses, err := git_model.GetLatestCommitStatus(ctx, repo.ID, commit.ID.String(), db.ListOptionsAll) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			return nil, err | 			return nil, err | ||||||
| 		} | 		} | ||||||
|   | |||||||
| @@ -151,7 +151,7 @@ func GetPullRequestCommitStatusState(ctx context.Context, pr *issues_model.PullR | |||||||
| 		return "", errors.Wrap(err, "LoadBaseRepo") | 		return "", errors.Wrap(err, "LoadBaseRepo") | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	commitStatuses, _, err := git_model.GetLatestCommitStatus(ctx, pr.BaseRepo.ID, sha, db.ListOptionsAll) | 	commitStatuses, err := git_model.GetLatestCommitStatus(ctx, pr.BaseRepo.ID, sha, db.ListOptionsAll) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return "", errors.Wrap(err, "GetLatestCommitStatus") | 		return "", errors.Wrap(err, "GetLatestCommitStatus") | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -1004,7 +1004,7 @@ func getAllCommitStatus(ctx context.Context, gitRepo *git.Repository, pr *issues | |||||||
| 		return nil, nil, shaErr | 		return nil, nil, shaErr | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	statuses, _, err = git_model.GetLatestCommitStatus(ctx, pr.BaseRepo.ID, sha, db.ListOptionsAll) | 	statuses, err = git_model.GetLatestCommitStatus(ctx, pr.BaseRepo.ID, sha, db.ListOptionsAll) | ||||||
| 	lastStatus = git_model.CalcCommitStatus(statuses) | 	lastStatus = git_model.CalcCommitStatus(statuses) | ||||||
| 	return statuses, lastStatus, err | 	return statuses, lastStatus, err | ||||||
| } | } | ||||||
|   | |||||||
| @@ -121,7 +121,7 @@ func (graph *Graph) LoadAndProcessCommits(ctx context.Context, repository *repo_ | |||||||
| 			return repo_model.IsOwnerMemberCollaborator(ctx, repository, user.ID) | 			return repo_model.IsOwnerMemberCollaborator(ctx, repository, user.ID) | ||||||
| 		}, &keyMap) | 		}, &keyMap) | ||||||
|  |  | ||||||
| 		statuses, _, err := git_model.GetLatestCommitStatus(ctx, repository.ID, c.Commit.ID.String(), db.ListOptions{}) | 		statuses, err := git_model.GetLatestCommitStatus(ctx, repository.ID, c.Commit.ID.String(), db.ListOptionsAll) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			log.Error("GetLatestCommitStatus: %v", err) | 			log.Error("GetLatestCommitStatus: %v", err) | ||||||
| 		} else { | 		} else { | ||||||
|   | |||||||
| @@ -633,7 +633,7 @@ jobs: | |||||||
| 		assert.NotEmpty(t, addFileResp) | 		assert.NotEmpty(t, addFileResp) | ||||||
| 		sha = addFileResp.Commit.SHA | 		sha = addFileResp.Commit.SHA | ||||||
| 		assert.Eventually(t, func() bool { | 		assert.Eventually(t, func() bool { | ||||||
| 			latestCommitStatuses, _, err := git_model.GetLatestCommitStatus(db.DefaultContext, repo.ID, sha, db.ListOptionsAll) | 			latestCommitStatuses, err := git_model.GetLatestCommitStatus(db.DefaultContext, repo.ID, sha, db.ListOptionsAll) | ||||||
| 			assert.NoError(t, err) | 			assert.NoError(t, err) | ||||||
| 			if len(latestCommitStatuses) == 0 { | 			if len(latestCommitStatuses) == 0 { | ||||||
| 				return false | 				return false | ||||||
| @@ -676,7 +676,7 @@ jobs: | |||||||
| } | } | ||||||
|  |  | ||||||
| func checkCommitStatusAndInsertFakeStatus(t *testing.T, repo *repo_model.Repository, sha string) { | func checkCommitStatusAndInsertFakeStatus(t *testing.T, repo *repo_model.Repository, sha string) { | ||||||
| 	latestCommitStatuses, _, err := git_model.GetLatestCommitStatus(db.DefaultContext, repo.ID, sha, db.ListOptionsAll) | 	latestCommitStatuses, err := git_model.GetLatestCommitStatus(db.DefaultContext, repo.ID, sha, db.ListOptionsAll) | ||||||
| 	assert.NoError(t, err) | 	assert.NoError(t, err) | ||||||
| 	assert.Len(t, latestCommitStatuses, 1) | 	assert.Len(t, latestCommitStatuses, 1) | ||||||
| 	assert.Equal(t, api.CommitStatusPending, latestCommitStatuses[0].State) | 	assert.Equal(t, api.CommitStatusPending, latestCommitStatuses[0].State) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user