Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions github/enterprise_rules_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ func TestEnterpriseService_CreateRepositoryRuleset_OrgNameRepoName(t *testing.T)
},
RequiredSignatures: &EmptyRuleParameters{},
PullRequest: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{MergeMethodRebase, MergeMethodSquash},
AllowedMergeMethods: []PullRequestMergeMethod{PullRequestMergeMethodRebase, PullRequestMergeMethodSquash},
DismissStaleReviewsOnPush: true,
RequireCodeOwnerReview: true,
RequireLastPushApproval: true,
Expand Down Expand Up @@ -313,7 +313,7 @@ func TestEnterpriseService_CreateRepositoryRuleset_OrgNameRepoName(t *testing.T)
},
RequiredSignatures: &EmptyRuleParameters{},
PullRequest: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{MergeMethodRebase, MergeMethodSquash},
AllowedMergeMethods: []PullRequestMergeMethod{PullRequestMergeMethodRebase, PullRequestMergeMethodSquash},
DismissStaleReviewsOnPush: true,
RequireCodeOwnerReview: true,
RequireLastPushApproval: true,
Expand Down Expand Up @@ -602,7 +602,7 @@ func TestEnterpriseService_CreateRepositoryRuleset_OrgNameRepoProperty(t *testin
},
RequiredSignatures: &EmptyRuleParameters{},
PullRequest: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{MergeMethodRebase, MergeMethodSquash},
AllowedMergeMethods: []PullRequestMergeMethod{PullRequestMergeMethodRebase, PullRequestMergeMethodSquash},
DismissStaleReviewsOnPush: true,
RequireCodeOwnerReview: true,
RequireLastPushApproval: true,
Expand Down Expand Up @@ -713,7 +713,7 @@ func TestEnterpriseService_CreateRepositoryRuleset_OrgNameRepoProperty(t *testin
},
RequiredSignatures: &EmptyRuleParameters{},
PullRequest: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{MergeMethodRebase, MergeMethodSquash},
AllowedMergeMethods: []PullRequestMergeMethod{PullRequestMergeMethodRebase, PullRequestMergeMethodSquash},
DismissStaleReviewsOnPush: true,
RequireCodeOwnerReview: true,
RequireLastPushApproval: true,
Expand Down Expand Up @@ -976,7 +976,7 @@ func TestEnterpriseService_CreateRepositoryRuleset_OrgIdRepoName(t *testing.T) {
},
RequiredSignatures: &EmptyRuleParameters{},
PullRequest: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{MergeMethodRebase, MergeMethodSquash},
AllowedMergeMethods: []PullRequestMergeMethod{PullRequestMergeMethodRebase, PullRequestMergeMethodSquash},
DismissStaleReviewsOnPush: true,
RequireCodeOwnerReview: true,
RequireLastPushApproval: true,
Expand Down Expand Up @@ -1076,7 +1076,7 @@ func TestEnterpriseService_CreateRepositoryRuleset_OrgIdRepoName(t *testing.T) {
},
RequiredSignatures: &EmptyRuleParameters{},
PullRequest: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{MergeMethodRebase, MergeMethodSquash},
AllowedMergeMethods: []PullRequestMergeMethod{PullRequestMergeMethodRebase, PullRequestMergeMethodSquash},
DismissStaleReviewsOnPush: true,
RequireCodeOwnerReview: true,
RequireLastPushApproval: true,
Expand Down Expand Up @@ -1358,7 +1358,7 @@ func TestEnterpriseService_CreateRepositoryRuleset_OrgIdRepoProperty(t *testing.
},
RequiredSignatures: &EmptyRuleParameters{},
PullRequest: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{MergeMethodRebase, MergeMethodSquash},
AllowedMergeMethods: []PullRequestMergeMethod{PullRequestMergeMethodRebase, PullRequestMergeMethodSquash},
DismissStaleReviewsOnPush: true,
RequireCodeOwnerReview: true,
RequireLastPushApproval: true,
Expand Down Expand Up @@ -1468,7 +1468,7 @@ func TestEnterpriseService_CreateRepositoryRuleset_OrgIdRepoProperty(t *testing.
},
RequiredSignatures: &EmptyRuleParameters{},
PullRequest: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{MergeMethodRebase, MergeMethodSquash},
AllowedMergeMethods: []PullRequestMergeMethod{PullRequestMergeMethodRebase, PullRequestMergeMethodSquash},
DismissStaleReviewsOnPush: true,
RequireCodeOwnerReview: true,
RequireLastPushApproval: true,
Expand Down
20 changes: 10 additions & 10 deletions github/event_types_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9761,10 +9761,10 @@ func TestRepositoryRulesetEvent_Unmarshal(t *testing.T) {
Deletion: &EmptyRuleParameters{},
RequiredLinearHistory: &EmptyRuleParameters{},
PullRequest: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{
MergeMethodSquash,
MergeMethodRebase,
MergeMethodMerge,
AllowedMergeMethods: []PullRequestMergeMethod{
PullRequestMergeMethodSquash,
PullRequestMergeMethodRebase,
PullRequestMergeMethodMerge,
},
AutomaticCopilotCodeReviewEnabled: Ptr(false),
DismissStaleReviewsOnPush: false,
Expand Down Expand Up @@ -9825,9 +9825,9 @@ func TestRepositoryRulesetEvent_Unmarshal(t *testing.T) {
Deletion: &EmptyRuleParameters{},
RequiredSignatures: &EmptyRuleParameters{},
PullRequest: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{
MergeMethodSquash,
MergeMethodRebase,
AllowedMergeMethods: []PullRequestMergeMethod{
PullRequestMergeMethodSquash,
PullRequestMergeMethodRebase,
},
AutomaticCopilotCodeReviewEnabled: Ptr(false),
DismissStaleReviewsOnPush: false,
Expand Down Expand Up @@ -9880,9 +9880,9 @@ func TestRepositoryRulesetEvent_Unmarshal(t *testing.T) {
Rule: &RepositoryRule{
Type: RulesetRuleTypePullRequest,
Parameters: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{
MergeMethodSquash,
MergeMethodRebase,
AllowedMergeMethods: []PullRequestMergeMethod{
PullRequestMergeMethodSquash,
PullRequestMergeMethodRebase,
},
AutomaticCopilotCodeReviewEnabled: Ptr(false),
DismissStaleReviewsOnPush: false,
Expand Down
12 changes: 6 additions & 6 deletions github/orgs_rules_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,7 @@ func TestOrganizationsService_CreateRepositoryRuleset_RepoNames(t *testing.T) {
},
RequiredSignatures: &EmptyRuleParameters{},
PullRequest: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{MergeMethodRebase, MergeMethodSquash},
AllowedMergeMethods: []PullRequestMergeMethod{PullRequestMergeMethodRebase, PullRequestMergeMethodSquash},
DismissStaleReviewsOnPush: true,
RequireCodeOwnerReview: true,
RequireLastPushApproval: true,
Expand Down Expand Up @@ -352,7 +352,7 @@ func TestOrganizationsService_CreateRepositoryRuleset_RepoNames(t *testing.T) {
},
RequiredSignatures: &EmptyRuleParameters{},
PullRequest: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{MergeMethodRebase, MergeMethodSquash},
AllowedMergeMethods: []PullRequestMergeMethod{PullRequestMergeMethodRebase, PullRequestMergeMethodSquash},
DismissStaleReviewsOnPush: true,
RequireCodeOwnerReview: true,
RequireLastPushApproval: true,
Expand Down Expand Up @@ -615,7 +615,7 @@ func TestOrganizationsService_CreateRepositoryRuleset_RepoProperty(t *testing.T)
},
RequiredSignatures: &EmptyRuleParameters{},
PullRequest: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{MergeMethodRebase, MergeMethodSquash},
AllowedMergeMethods: []PullRequestMergeMethod{PullRequestMergeMethodRebase, PullRequestMergeMethodSquash},
DismissStaleReviewsOnPush: true,
RequireCodeOwnerReview: true,
RequireLastPushApproval: true,
Expand Down Expand Up @@ -718,7 +718,7 @@ func TestOrganizationsService_CreateRepositoryRuleset_RepoProperty(t *testing.T)
},
RequiredSignatures: &EmptyRuleParameters{},
PullRequest: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{MergeMethodRebase, MergeMethodSquash},
AllowedMergeMethods: []PullRequestMergeMethod{PullRequestMergeMethodRebase, PullRequestMergeMethodSquash},
DismissStaleReviewsOnPush: true,
RequireCodeOwnerReview: true,
RequireLastPushApproval: true,
Expand Down Expand Up @@ -966,7 +966,7 @@ func TestOrganizationsService_CreateRepositoryRuleset_RepoIDs(t *testing.T) {
},
RequiredSignatures: &EmptyRuleParameters{},
PullRequest: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{MergeMethodRebase, MergeMethodSquash},
AllowedMergeMethods: []PullRequestMergeMethod{PullRequestMergeMethodRebase, PullRequestMergeMethodSquash},
DismissStaleReviewsOnPush: true,
RequireCodeOwnerReview: true,
RequireLastPushApproval: true,
Expand Down Expand Up @@ -1061,7 +1061,7 @@ func TestOrganizationsService_CreateRepositoryRuleset_RepoIDs(t *testing.T) {
},
RequiredSignatures: &EmptyRuleParameters{},
PullRequest: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{MergeMethodRebase, MergeMethodSquash},
AllowedMergeMethods: []PullRequestMergeMethod{PullRequestMergeMethodRebase, PullRequestMergeMethodSquash},
DismissStaleReviewsOnPush: true,
RequireCodeOwnerReview: true,
RequireLastPushApproval: true,
Expand Down
48 changes: 34 additions & 14 deletions github/rules.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,14 +99,34 @@ const (
MergeGroupingStrategyHeadGreen MergeGroupingStrategy = "HEADGREEN"
)

// MergeMethod models a GitHub merge method.
type MergeMethod string
// PullRequestMergeMethod is used in PullRequestRuleParameters,
// where the GitHub API expects lowercase merge method values: "merge", "rebase", "squash".
//
// NOTE: GitHub's API inconsistently uses different casing for the same logical values
// across different rules.
//
// TODO: Unify with MergeQueueMergeMethod once the GitHub API uses consistent casing.
type PullRequestMergeMethod string

const (
PullRequestMergeMethodMerge PullRequestMergeMethod = "merge"
PullRequestMergeMethodRebase PullRequestMergeMethod = "rebase"
PullRequestMergeMethodSquash PullRequestMergeMethod = "squash"
)

// MergeQueueMergeMethod is used in MergeQueueRuleParameters,
// where the GitHub API expects uppercase merge method values: "MERGE", "REBASE", "SQUASH".
//
// NOTE: This type exists alongside PullRequestMergeMethod solely due to API casing inconsistencies.
// It enforces the correct usage by API context.
//
// TODO: Unify with PullRequestMergeMethod once the GitHub API uses consistent casing.
type MergeQueueMergeMethod string

// This is the set of GitHub merge methods.
const (
MergeMethodMerge MergeMethod = "merge"
MergeMethodRebase MergeMethod = "rebase"
MergeMethodSquash MergeMethod = "squash"
MergeQueueMergeMethodMerge MergeQueueMergeMethod = "MERGE"
MergeQueueMergeMethodRebase MergeQueueMergeMethod = "REBASE"
MergeQueueMergeMethodSquash MergeQueueMergeMethod = "SQUASH"
)

// PatternRuleOperator models a GitHub pattern rule operator.
Expand Down Expand Up @@ -383,7 +403,7 @@ type MergeQueueRuleParameters struct {
GroupingStrategy MergeGroupingStrategy `json:"grouping_strategy"`
MaxEntriesToBuild int `json:"max_entries_to_build"`
MaxEntriesToMerge int `json:"max_entries_to_merge"`
MergeMethod MergeMethod `json:"merge_method"`
MergeMethod MergeQueueMergeMethod `json:"merge_method"`
MinEntriesToMerge int `json:"min_entries_to_merge"`
MinEntriesToMergeWaitMinutes int `json:"min_entries_to_merge_wait_minutes"`
}
Expand All @@ -395,13 +415,13 @@ type RequiredDeploymentsRuleParameters struct {

// PullRequestRuleParameters represents the pull_request rule parameters.
type PullRequestRuleParameters struct {
AllowedMergeMethods []MergeMethod `json:"allowed_merge_methods"`
AutomaticCopilotCodeReviewEnabled *bool `json:"automatic_copilot_code_review_enabled,omitempty"`
DismissStaleReviewsOnPush bool `json:"dismiss_stale_reviews_on_push"`
RequireCodeOwnerReview bool `json:"require_code_owner_review"`
RequireLastPushApproval bool `json:"require_last_push_approval"`
RequiredApprovingReviewCount int `json:"required_approving_review_count"`
RequiredReviewThreadResolution bool `json:"required_review_thread_resolution"`
AllowedMergeMethods []PullRequestMergeMethod `json:"allowed_merge_methods"`
AutomaticCopilotCodeReviewEnabled *bool `json:"automatic_copilot_code_review_enabled,omitempty"`
DismissStaleReviewsOnPush bool `json:"dismiss_stale_reviews_on_push"`
RequireCodeOwnerReview bool `json:"require_code_owner_review"`
RequireLastPushApproval bool `json:"require_last_push_approval"`
RequiredApprovingReviewCount int `json:"required_approving_review_count"`
RequiredReviewThreadResolution bool `json:"required_review_thread_resolution"`
}

// RequiredStatusChecksRuleParameters represents the required status checks rule parameters.
Expand Down
Loading
Loading