fix(store): keep failing_checks_block as a deprecated storage field, run the new subtests in parallel
5 files · +21 -5
M gen/ermite/storage/merge_request.pb.go +16 -3
| @@ -345,6 +345,10 @@ type RepoSettings struct { | |||
| 345 | 345 | state protoimpl.MessageState `protogen:"open.v1"` | |
| 346 | 346 | // Never empty once stored. | |
| 347 | 347 | AllowedMergeModes []MergeMode `protobuf:"varint,1,rep,packed,name=allowed_merge_modes,json=allowedMergeModes,proto3,enum=ermite.storage.MergeMode" json:"allowed_merge_modes,omitempty"` | |
| 348 | + | // Unused: never read, never written. | |
| 349 | + | // | |
| 350 | + | // Deprecated: Marked as deprecated in ermite/storage/merge_request.proto. | |
| 351 | + | FailingChecksBlock bool `protobuf:"varint,2,opt,name=failing_checks_block,json=failingChecksBlock,proto3" json:"failing_checks_block,omitempty"` | |
| 348 | 352 | // Who may write issues; unspecified reads as off. | |
| 349 | 353 | Issues IssuesMode `protobuf:"varint,3,opt,name=issues,proto3,enum=ermite.storage.IssuesMode" json:"issues,omitempty"` | |
| 350 | 354 | // Set on every write since merge commits exist: the modes are the explicit | |
| @@ -394,6 +398,14 @@ func (x *RepoSettings) GetAllowedMergeModes() []MergeMode { | |||
| 394 | 398 | return nil | |
| 395 | 399 | } | |
| 396 | 400 | ||
| 401 | + | // Deprecated: Marked as deprecated in ermite/storage/merge_request.proto. | |
| 402 | + | func (x *RepoSettings) GetFailingChecksBlock() bool { | |
| 403 | + | if x != nil { | |
| 404 | + | return x.FailingChecksBlock | |
| 405 | + | } | |
| 406 | + | return false | |
| 407 | + | } | |
| 408 | + | ||
| 397 | 409 | func (x *RepoSettings) GetIssues() IssuesMode { | |
| 398 | 410 | if x != nil { | |
| 399 | 411 | return x.Issues | |
| @@ -974,12 +986,13 @@ var File_ermite_storage_merge_request_proto protoreflect.FileDescriptor | |||
| 974 | 986 | ||
| 975 | 987 | const file_ermite_storage_merge_request_proto_rawDesc = "" + | |
| 976 | 988 | "\n" + | |
| 977 | - | "\"ermite/storage/merge_request.proto\x12\x0eermite.storage\x1a\x1fgoogle/protobuf/timestamp.proto\"\xf9\x01\n" + | |
| 989 | + | "\"ermite/storage/merge_request.proto\x12\x0eermite.storage\x1a\x1fgoogle/protobuf/timestamp.proto\"\x93\x02\n" + | |
| 978 | 990 | "\fRepoSettings\x12I\n" + | |
| 979 | - | "\x13allowed_merge_modes\x18\x01 \x03(\x0e2\x19.ermite.storage.MergeModeR\x11allowedMergeModes\x122\n" + | |
| 991 | + | "\x13allowed_merge_modes\x18\x01 \x03(\x0e2\x19.ermite.storage.MergeModeR\x11allowedMergeModes\x124\n" + | |
| 992 | + | "\x14failing_checks_block\x18\x02 \x01(\bB\x02\x18\x01R\x12failingChecksBlock\x122\n" + | |
| 980 | 993 | "\x06issues\x18\x03 \x01(\x0e2\x1a.ermite.storage.IssuesModeR\x06issues\x12$\n" + | |
| 981 | 994 | "\x0emerge_modes_v2\x18\x04 \x01(\bR\fmergeModesV2\x12(\n" + | |
| 982 | - | "\x10allow_auto_merge\x18\x05 \x01(\bR\x0eallowAutoMergeJ\x04\b\x02\x10\x03R\x14failing_checks_block\"\x81\x05\n" + | |
| 995 | + | "\x10allow_auto_merge\x18\x05 \x01(\bR\x0eallowAutoMerge\"\x81\x05\n" + | |
| 983 | 996 | "\fMergeRequest\x12\x16\n" + | |
| 984 | 997 | "\x06number\x18\x01 \x01(\x03R\x06number\x12\x14\n" + | |
| 985 | 998 | "\x05title\x18\x02 \x01(\tR\x05title\x12 \n" + | |
| @@ -345,6 +345,10 @@ type RepoSettings struct { | |||||
| 345 | state protoimpl.MessageState `protogen:"open.v1"` | 345 | state protoimpl.MessageState `protogen:"open.v1"` | ||
| 346 | // Never empty once stored. | 346 | // Never empty once stored. | ||
| 347 | AllowedMergeModes []MergeMode `protobuf:"varint,1,rep,packed,name=allowed_merge_modes,json=allowedMergeModes,proto3,enum=ermite.storage.MergeMode" json:"allowed_merge_modes,omitempty"` | 347 | AllowedMergeModes []MergeMode `protobuf:"varint,1,rep,packed,name=allowed_merge_modes,json=allowedMergeModes,proto3,enum=ermite.storage.MergeMode" json:"allowed_merge_modes,omitempty"` | ||
| 348 | + | // Unused: never read, never written. | |||
| 349 | + | // | |||
| 350 | + | // Deprecated: Marked as deprecated in ermite/storage/merge_request.proto. | |||
| 351 | + | FailingChecksBlock bool `protobuf:"varint,2,opt,name=failing_checks_block,json=failingChecksBlock,proto3" json:"failing_checks_block,omitempty"` | |||
| 348 | // Who may write issues; unspecified reads as off. | 352 | // Who may write issues; unspecified reads as off. | ||
| 349 | Issues IssuesMode `protobuf:"varint,3,opt,name=issues,proto3,enum=ermite.storage.IssuesMode" json:"issues,omitempty"` | 353 | Issues IssuesMode `protobuf:"varint,3,opt,name=issues,proto3,enum=ermite.storage.IssuesMode" json:"issues,omitempty"` | ||
| 350 | // Set on every write since merge commits exist: the modes are the explicit | 354 | // Set on every write since merge commits exist: the modes are the explicit | ||
| @@ -394,6 +398,14 @@ func (x *RepoSettings) GetAllowedMergeModes() []MergeMode { | |||||
| 394 | return nil | 398 | return nil | ||
| 395 | } | 399 | } | ||
| 396 | 400 | ||||
| 401 | + | // Deprecated: Marked as deprecated in ermite/storage/merge_request.proto. | |||
| 402 | + | func (x *RepoSettings) GetFailingChecksBlock() bool { | |||
| 403 | + | if x != nil { | |||
| 404 | + | return x.FailingChecksBlock | |||
| 405 | + | } | |||
| 406 | + | return false | |||
| 407 | + | } | |||
| 408 | + | ||||
| 397 | func (x *RepoSettings) GetIssues() IssuesMode { | 409 | func (x *RepoSettings) GetIssues() IssuesMode { | ||
| 398 | if x != nil { | 410 | if x != nil { | ||
| 399 | return x.Issues | 411 | return x.Issues | ||
| @@ -974,12 +986,13 @@ var File_ermite_storage_merge_request_proto protoreflect.FileDescriptor | |||||
| 974 | 986 | ||||
| 975 | const file_ermite_storage_merge_request_proto_rawDesc = "" + | 987 | const file_ermite_storage_merge_request_proto_rawDesc = "" + | ||
| 976 | "\n" + | 988 | "\n" + | ||
| 977 | - | "\"ermite/storage/merge_request.proto\x12\x0eermite.storage\x1a\x1fgoogle/protobuf/timestamp.proto\"\xf9\x01\n" + | 989 | + | "\"ermite/storage/merge_request.proto\x12\x0eermite.storage\x1a\x1fgoogle/protobuf/timestamp.proto\"\x93\x02\n" + |
| 978 | "\fRepoSettings\x12I\n" + | 990 | "\fRepoSettings\x12I\n" + | ||
| 979 | - | "\x13allowed_merge_modes\x18\x01 \x03(\x0e2\x19.ermite.storage.MergeModeR\x11allowedMergeModes\x122\n" + | 991 | + | "\x13allowed_merge_modes\x18\x01 \x03(\x0e2\x19.ermite.storage.MergeModeR\x11allowedMergeModes\x124\n" + |
| 992 | + | "\x14failing_checks_block\x18\x02 \x01(\bB\x02\x18\x01R\x12failingChecksBlock\x122\n" + | |||
| 980 | "\x06issues\x18\x03 \x01(\x0e2\x1a.ermite.storage.IssuesModeR\x06issues\x12$\n" + | 993 | "\x06issues\x18\x03 \x01(\x0e2\x1a.ermite.storage.IssuesModeR\x06issues\x12$\n" + | ||
| 981 | "\x0emerge_modes_v2\x18\x04 \x01(\bR\fmergeModesV2\x12(\n" + | 994 | "\x0emerge_modes_v2\x18\x04 \x01(\bR\fmergeModesV2\x12(\n" + | ||
| 982 | - | "\x10allow_auto_merge\x18\x05 \x01(\bR\x0eallowAutoMergeJ\x04\b\x02\x10\x03R\x14failing_checks_block\"\x81\x05\n" + | 995 | + | "\x10allow_auto_merge\x18\x05 \x01(\bR\x0eallowAutoMerge\"\x81\x05\n" + |
| 983 | "\fMergeRequest\x12\x16\n" + | 996 | "\fMergeRequest\x12\x16\n" + | ||
| 984 | "\x06number\x18\x01 \x01(\x03R\x06number\x12\x14\n" + | 997 | "\x06number\x18\x01 \x01(\x03R\x06number\x12\x14\n" + | ||
| 985 | "\x05title\x18\x02 \x01(\tR\x05title\x12 \n" + | 998 | "\x05title\x18\x02 \x01(\tR\x05title\x12 \n" + | ||
M internal/adapters/rpc/mergerequest_test.go +1 -0
| @@ -241,6 +241,7 @@ func TestMergeRequestServiceMarkReady(t *testing.T) { | |||
| 241 | 241 | {name: "without mr:write", err: domain.ErrForbidden, code: connect.CodePermissionDenied}, | |
| 242 | 242 | } { | |
| 243 | 243 | t.Run(tt.name, func(t *testing.T) { | |
| 244 | + | t.Parallel() | |
| 244 | 245 | mrs := mocks.NewMergeRequestService(t) | |
| 245 | 246 | title, err := domain.ParseMRTitle("Ready") | |
| 246 | 247 | require.NoError(t, err) | |
| @@ -241,6 +241,7 @@ func TestMergeRequestServiceMarkReady(t *testing.T) { | |||||
| 241 | {name: "without mr:write", err: domain.ErrForbidden, code: connect.CodePermissionDenied}, | 241 | {name: "without mr:write", err: domain.ErrForbidden, code: connect.CodePermissionDenied}, | ||
| 242 | } { | 242 | } { | ||
| 243 | t.Run(tt.name, func(t *testing.T) { | 243 | t.Run(tt.name, func(t *testing.T) { | ||
| 244 | + | t.Parallel() | |||
| 244 | mrs := mocks.NewMergeRequestService(t) | 245 | mrs := mocks.NewMergeRequestService(t) | ||
| 245 | title, err := domain.ParseMRTitle("Ready") | 246 | title, err := domain.ParseMRTitle("Ready") | ||
| 246 | require.NoError(t, err) | 247 | require.NoError(t, err) | ||
M internal/adapters/web/mr_test.go +1 -0
| @@ -302,6 +302,7 @@ func TestMergeIgnoreChecks(t *testing.T) { | |||
| 302 | 302 | t.Parallel() | |
| 303 | 303 | for _, kind := range []string{"bad", "running", "ok", ""} { | |
| 304 | 304 | t.Run(kind, func(t *testing.T) { | |
| 305 | + | t.Parallel() | |
| 305 | 306 | box := (&Server{}).mergeBox(&repoData{repo: repoWithModes(domain.MergeModes()...)}, 3, "feat", "abc", true, mergeabilityView(domain.Mergeability{State: domain.MergeabilityUpToDate}, "main")) | |
| 306 | 307 | html := renderToString(t, mergeMenu(MRPage{Box: box, ChecksSum: ChecksSummary{Kind: kind}})) | |
| 307 | 308 | if kind == "bad" || kind == "running" { | |
| @@ -302,6 +302,7 @@ func TestMergeIgnoreChecks(t *testing.T) { | |||||
| 302 | t.Parallel() | 302 | t.Parallel() | ||
| 303 | for _, kind := range []string{"bad", "running", "ok", ""} { | 303 | for _, kind := range []string{"bad", "running", "ok", ""} { | ||
| 304 | t.Run(kind, func(t *testing.T) { | 304 | t.Run(kind, func(t *testing.T) { | ||
| 305 | + | t.Parallel() | |||
| 305 | box := (&Server{}).mergeBox(&repoData{repo: repoWithModes(domain.MergeModes()...)}, 3, "feat", "abc", true, mergeabilityView(domain.Mergeability{State: domain.MergeabilityUpToDate}, "main")) | 306 | box := (&Server{}).mergeBox(&repoData{repo: repoWithModes(domain.MergeModes()...)}, 3, "feat", "abc", true, mergeabilityView(domain.Mergeability{State: domain.MergeabilityUpToDate}, "main")) | ||
| 306 | html := renderToString(t, mergeMenu(MRPage{Box: box, ChecksSum: ChecksSummary{Kind: kind}})) | 307 | html := renderToString(t, mergeMenu(MRPage{Box: box, ChecksSum: ChecksSummary{Kind: kind}})) | ||
| 307 | if kind == "bad" || kind == "running" { | 308 | if kind == "bad" || kind == "running" { | ||
M internal/adapters/web/summary_actions_test.go +1 -0
| @@ -133,6 +133,7 @@ func TestMRChecksLiveMergeControls(t *testing.T) { | |||
| 133 | 133 | head := strings.Repeat("a", domain.ObjectIDLen) | |
| 134 | 134 | for _, kind := range []string{"bad", "running", "ok", ""} { | |
| 135 | 135 | t.Run(kind, func(t *testing.T) { | |
| 136 | + | t.Parallel() | |
| 136 | 137 | runs := mocks.NewRunService(t) | |
| 137 | 138 | var checks []ports.CheckView | |
| 138 | 139 | if kind != "" { | |
| @@ -133,6 +133,7 @@ func TestMRChecksLiveMergeControls(t *testing.T) { | |||||
| 133 | head := strings.Repeat("a", domain.ObjectIDLen) | 133 | head := strings.Repeat("a", domain.ObjectIDLen) | ||
| 134 | for _, kind := range []string{"bad", "running", "ok", ""} { | 134 | for _, kind := range []string{"bad", "running", "ok", ""} { | ||
| 135 | t.Run(kind, func(t *testing.T) { | 135 | t.Run(kind, func(t *testing.T) { | ||
| 136 | + | t.Parallel() | |||
| 136 | runs := mocks.NewRunService(t) | 137 | runs := mocks.NewRunService(t) | ||
| 137 | var checks []ports.CheckView | 138 | var checks []ports.CheckView | ||
| 138 | if kind != "" { | 139 | if kind != "" { | ||
M proto/ermite/storage/merge_request.proto +2 -2
| @@ -22,8 +22,8 @@ enum MergeMode { | |||
| 22 | 22 | message RepoSettings { | |
| 23 | 23 | // Never empty once stored. | |
| 24 | 24 | repeated MergeMode allowed_merge_modes = 1; | |
| 25 | - | reserved 2; | |
| 26 | - | reserved "failing_checks_block"; | |
| 25 | + | // Unused: never read, never written. | |
| 26 | + | bool failing_checks_block = 2 [deprecated = true]; | |
| 27 | 27 | // Who may write issues; unspecified reads as off. | |
| 28 | 28 | IssuesMode issues = 3; | |
| 29 | 29 | // Set on every write since merge commits exist: the modes are the explicit | |
| @@ -22,8 +22,8 @@ enum MergeMode { | |||||
| 22 | message RepoSettings { | 22 | message RepoSettings { | ||
| 23 | // Never empty once stored. | 23 | // Never empty once stored. | ||
| 24 | repeated MergeMode allowed_merge_modes = 1; | 24 | repeated MergeMode allowed_merge_modes = 1; | ||
| 25 | - | reserved 2; | 25 | + | // Unused: never read, never written. |
| 26 | - | reserved "failing_checks_block"; | 26 | + | bool failing_checks_block = 2 [deprecated = true]; |
| 27 | // Who may write issues; unspecified reads as off. | 27 | // Who may write issues; unspecified reads as off. | ||
| 28 | IssuesMode issues = 3; | 28 | IssuesMode issues = 3; | ||
| 29 | // Set on every write since merge commits exist: the modes are the explicit | 29 | // Set on every write since merge commits exist: the modes are the explicit | ||