Skip to content

Commit 6d6dc64

Browse files
author
Ender Tunc
committed
add should_remove_source_branch query param to '/merge' request
1 parent 5d44da8 commit 6d6dc64

File tree

3 files changed

+18
-7
lines changed

3 files changed

+18
-7
lines changed

modules/core/src/main/scala/org/scalasteward/core/forge/gitlab/GitLabApiAlg.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ final class GitLabApiAlg[F[_]: Parallel](
238238
res <-
239239
client
240240
.put[MergeRequestOut](
241-
url.mergeWhenPiplineSucceeds(repo, mr.iid),
241+
url.mergeWhenPiplineSucceeds(repo, mr.iid, gitLabCfg.removeSourceBranch),
242242
modify(repo)
243243
)
244244
// it's possible that our status changed from can be merged already,

modules/core/src/main/scala/org/scalasteward/core/forge/gitlab/Url.scala

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,17 @@ class Url(apiHost: Uri) {
3939
def existingMergeRequest(repo: Repo, number: PullRequestNumber): Uri =
4040
mergeRequest(repo) / number.toString
4141

42-
def mergeWhenPiplineSucceeds(repo: Repo, number: PullRequestNumber): Uri =
42+
def mergeWhenPiplineSucceeds(
43+
repo: Repo,
44+
number: PullRequestNumber,
45+
removeSourceBranch: Boolean
46+
): Uri =
4347
(existingMergeRequest(repo, number) / "merge")
4448
.withQueryParam("merge_when_pipeline_succeeds", "true")
49+
.withOptionQueryParam(
50+
"should_remove_source_branch",
51+
Option.when(removeSourceBranch)(removeSourceBranch)
52+
)
4553

4654
def requiredApprovals(repo: Repo, number: PullRequestNumber, approvalsRequired: Int): Uri =
4755
(existingMergeRequest(repo, number) / "approvals")

modules/core/src/test/scala/org/scalasteward/core/forge/gitlab/GitLabApiAlgTest.scala

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ class GitLabApiAlgTest extends CatsEffectSuite with Http4sDsl[MockEff] {
3131
object MergeWhenPipelineSucceedsMatcher
3232
extends QueryParamDecoderMatcher[Boolean]("merge_when_pipeline_succeeds")
3333

34+
object ShouldRemoveSourceBranchMatcher
35+
extends QueryParamDecoderMatcher[Boolean]("should_remove_source_branch")
36+
3437
object RequiredReviewersMatcher extends QueryParamDecoderMatcher[Int]("approvals_required")
3538

3639
object UsernameMatcher extends QueryParamDecoderMatcher[String]("username")
@@ -88,7 +91,7 @@ class GitLabApiAlgTest extends CatsEffectSuite with Http4sDsl[MockEff] {
8891
)
8992

9093
case PUT -> Root / "projects" / "foo/bar" / "merge_requests" / "150" / "merge"
91-
:? MergeWhenPipelineSucceedsMatcher(_) =>
94+
:? MergeWhenPipelineSucceedsMatcher(_) +& ShouldRemoveSourceBranchMatcher(_) =>
9295
Ok(
9396
getMr.deepMerge(
9497
json""" { "iid": 150, "web_url": "https://gitlab.com/foo/bar/merge_requests/150" } """
@@ -140,12 +143,12 @@ class GitLabApiAlgTest extends CatsEffectSuite with Http4sDsl[MockEff] {
140143
user
141144
)
142145

143-
private val gitlabApiAlgAutoMerge = ForgeSelection.forgeApiAlg[MockEff](
146+
private val gitlabApiAlgAutoMergeAndRemoveSourceBranch = ForgeSelection.forgeApiAlg[MockEff](
144147
config.forgeCfg.copy(tpe = ForgeType.GitLab, doNotFork = true),
145148
GitLabCfg(
146149
mergeWhenPipelineSucceeds = true,
147150
requiredReviewers = None,
148-
removeSourceBranch = false
151+
removeSourceBranch = true
149152
),
150153
user
151154
)
@@ -267,8 +270,8 @@ class GitLabApiAlgTest extends CatsEffectSuite with Http4sDsl[MockEff] {
267270
assertIO(prOut, expected)
268271
}
269272

270-
test("createPullRequest -- auto merge") {
271-
val prOut = gitlabApiAlgAutoMerge
273+
test("createPullRequest -- auto merge and remove source branch") {
274+
val prOut = gitlabApiAlgAutoMergeAndRemoveSourceBranch
272275
.createPullRequest(Repo("foo", "bar"), newPRData)
273276
.runA(state)
274277

0 commit comments

Comments
 (0)