Skip to content

Commit 0d4d2c1

Browse files
authored
Use MergeRequest.DetailedMergeStatus instead of MergeStatus (#954)
- GitLab deprecated 'merge_status' in version 15.6, so adapt code to use 'detailed_merge_status' instead - Tag as obsolete the members of the DetailedMergeStatus enum that don't have counterparts listed in the GitLab API documentation. - Other minor changes
1 parent 8fbb9ad commit 0d4d2c1

File tree

7 files changed

+14
-8
lines changed

7 files changed

+14
-8
lines changed

.github/workflows/ci.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,9 @@ jobs:
5454
TestResultsDirectory: ${{github.workspace}}/TestResults
5555
strategy:
5656
matrix:
57-
# Keep in sync with the version in GitLabDockerContainer.cs
58-
# Available tags: https://hub.docker.com/r/gitlab/gitlab-ee/tags
5957
gitlab:
58+
# Keep in sync with the version in GitLabDockerContainer.cs
59+
# Available tags: https://hub.docker.com/r/gitlab/gitlab-ee/tags?name=-ee.0
6060
- "gitlab/gitlab-ee:15.11.9-ee.0"
6161
- "gitlab/gitlab-ee:16.11.10-ee.0"
6262
- "gitlab/gitlab-ee:17.0.8-ee.0"

NGitLab.Mock/MergeRequest.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,7 @@ internal Models.MergeRequest ToMergeRequestClient()
307307
WorkInProgress = WorkInProgress,
308308
Squash = Squash,
309309
MergeStatus = "can_be_merged",
310+
DetailedMergeStatus = new DynamicEnum<DetailedMergeStatus>(DetailedMergeStatus.Mergeable),
310311
State = State.ToString(),
311312
WebUrl = WebUrl,
312313
HeadPipeline = HeadPipeline?.ToPipelineClient(),

NGitLab.Tests/MergeRequest/MergeRequestClientTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public async Task Test_merge_request_api()
3030

3131
await GitLabTestContext.RetryUntilAsync(
3232
() => mergeRequestClient[mergeRequest.Iid],
33-
mr => string.Equals(mr.MergeStatus, "can_be_merged", StringComparison.Ordinal),
33+
mr => mr.DetailedMergeStatus == DetailedMergeStatus.Mergeable,
3434
TimeSpan.FromSeconds(120))
3535
.ConfigureAwait(false);
3636

NGitLab.Tests/PipelineTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
namespace NGitLab.Tests;
1313

14-
[Timeout(240_000)]
14+
[CancelAfter(240_000)]
1515
public class PipelineTests
1616
{
1717
[Test]

NGitLab.Tests/TriggerTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public class TriggerTests
99
{
1010
[Test]
1111
[NGitLabRetry]
12-
[Timeout(10000)]
12+
[CancelAfter(10000)]
1313
public async Task Test_can_get_triggers_for_project()
1414
{
1515
using var context = await GitLabTestContext.CreateAsync();

NGitLab/Models/DetailedMergeStatus.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
1-
using System.Runtime.Serialization;
1+
using System;
2+
using System.Runtime.Serialization;
23

34
namespace NGitLab.Models;
45

56
/// <summary>
6-
/// Values that represent <see href="https://docs.gitlab.com/ee/api/merge_requests.html#merge-status">the 'detailed_merge_status' potential values</see>.
7+
/// Some of the possible <see href="https://docs.gitlab.com/api/merge_requests/#merge-status">detailed_merge_status</see> values.
78
/// </summary>
89
public enum DetailedMergeStatus
910
{
11+
[Obsolete("Not part of the GitLab API documentation: https://docs.gitlab.com/api/merge_requests/#merge-status")]
1012
[EnumMember(Value = "blocked_status")]
1113
BlockedStatus,
14+
[Obsolete("Not part of the GitLab API documentation: https://docs.gitlab.com/api/merge_requests/#merge-status")]
1215
[EnumMember(Value = "broken_status")]
1316
BrokenStatus,
1417
[EnumMember(Value = "checking")]
@@ -23,6 +26,7 @@ public enum DetailedMergeStatus
2326
DiscussionsNotResolved,
2427
[EnumMember(Value = "draft_status")]
2528
DraftStatus,
29+
[Obsolete("Not part of the GitLab API documentation: https://docs.gitlab.com/api/merge_requests/#merge-status")]
2630
[EnumMember(Value = "external_status_checks")]
2731
ExternalStatusChecks,
2832
[EnumMember(Value = "mergeable")]
@@ -31,9 +35,9 @@ public enum DetailedMergeStatus
3135
NotApproved,
3236
[EnumMember(Value = "not_open")]
3337
NotOpen,
38+
[Obsolete("Not part of the GitLab API documentation: https://docs.gitlab.com/api/merge_requests/#merge-status")]
3439
[EnumMember(Value = "policies_denied")]
3540
PoliciesDenied,
36-
// Undocumented member
3741
[EnumMember(Value = "preparing")]
3842
Preparing,
3943
}

NGitLab/Models/MergeRequest.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ public class MergeRequest
7575
[JsonPropertyName("merge_when_pipeline_succeeds")]
7676
public bool MergeWhenPipelineSucceeds { get; set; }
7777

78+
[Obsolete("Deprecated in GitLab 15.6. Use DetailedMergeStatus instead.")]
7879
[JsonPropertyName("merge_status")]
7980
public string MergeStatus { get; set; }
8081

0 commit comments

Comments
 (0)