From d2942a870a8d2a51c2e78746f50f43b62fd14bbe Mon Sep 17 00:00:00 2001 From: Martin Fernandez Date: Mon, 11 Feb 2019 17:05:23 -0300 Subject: [PATCH] Add approvals_before_merge to Project --- gitlab/resource_gitlab_project.go | 11 +++++++++++ gitlab/resource_gitlab_project_test.go | 9 +++++++++ website/docs/r/project.html.markdown | 2 ++ 3 files changed, 22 insertions(+) diff --git a/gitlab/resource_gitlab_project.go b/gitlab/resource_gitlab_project.go index 828469552..9e16b885c 100644 --- a/gitlab/resource_gitlab_project.go +++ b/gitlab/resource_gitlab_project.go @@ -60,6 +60,11 @@ func resourceGitlabProject() *schema.Resource { Optional: true, Default: true, }, + "approvals_before_merge": { + Type: schema.TypeInt, + Optional: true, + Default: 0, + }, "wiki_enabled": { Type: schema.TypeBool, Optional: true, @@ -142,6 +147,7 @@ func resourceGitlabProjectSetToState(d *schema.ResourceData, project *gitlab.Pro d.Set("default_branch", project.DefaultBranch) d.Set("issues_enabled", project.IssuesEnabled) d.Set("merge_requests_enabled", project.MergeRequestsEnabled) + d.Set("approvals_before_merge", project.ApprovalsBeforeMerge) d.Set("wiki_enabled", project.WikiEnabled) d.Set("snippets_enabled", project.SnippetsEnabled) d.Set("visibility_level", string(project.Visibility)) @@ -162,6 +168,7 @@ func resourceGitlabProjectCreate(d *schema.ResourceData, meta interface{}) error Name: gitlab.String(d.Get("name").(string)), IssuesEnabled: gitlab.Bool(d.Get("issues_enabled").(bool)), MergeRequestsEnabled: gitlab.Bool(d.Get("merge_requests_enabled").(bool)), + ApprovalsBeforeMerge: gitlab.Int(d.Get("approvals_before_merge").(int)), WikiEnabled: gitlab.Bool(d.Get("wiki_enabled").(bool)), SnippetsEnabled: gitlab.Bool(d.Get("snippets_enabled").(bool)), Visibility: stringToVisibilityLevel(d.Get("visibility_level").(string)), @@ -269,6 +276,10 @@ func resourceGitlabProjectUpdate(d *schema.ResourceData, meta interface{}) error options.MergeRequestsEnabled = gitlab.Bool(d.Get("merge_requests_enabled").(bool)) } + if d.HasChange("approvals_before_merge") { + options.ApprovalsBeforeMerge = gitlab.Int(d.Get("approvals_before_merge").(int)) + } + if d.HasChange("wiki_enabled") { options.WikiEnabled = gitlab.Bool(d.Get("wiki_enabled").(bool)) } diff --git a/gitlab/resource_gitlab_project_test.go b/gitlab/resource_gitlab_project_test.go index 18cac131d..0086120df 100644 --- a/gitlab/resource_gitlab_project_test.go +++ b/gitlab/resource_gitlab_project_test.go @@ -30,6 +30,7 @@ func TestAccGitlabProject_basic(t *testing.T) { Description: "Terraform acceptance tests", IssuesEnabled: true, MergeRequestsEnabled: true, + ApprovalsBeforeMerge: 0, WikiEnabled: true, SnippetsEnabled: true, Visibility: gitlab.PublicVisibility, @@ -48,6 +49,7 @@ func TestAccGitlabProject_basic(t *testing.T) { Name: fmt.Sprintf("foo-%d", rInt), Path: fmt.Sprintf("foo.%d", rInt), Description: "Terraform acceptance tests!", + ApprovalsBeforeMerge: 0, Visibility: gitlab.PublicVisibility, MergeMethod: gitlab.FastForwardMerge, OnlyAllowMergeIfPipelineSucceeds: true, @@ -66,6 +68,7 @@ func TestAccGitlabProject_basic(t *testing.T) { Description: "Terraform acceptance tests", IssuesEnabled: true, MergeRequestsEnabled: true, + ApprovalsBeforeMerge: 0, WikiEnabled: true, SnippetsEnabled: true, Visibility: gitlab.PublicVisibility, @@ -223,6 +226,7 @@ type testAccGitlabProjectExpectedAttributes struct { DefaultBranch string IssuesEnabled bool MergeRequestsEnabled bool + ApprovalsBeforeMerge int WikiEnabled bool SnippetsEnabled bool Visibility gitlab.VisibilityValue @@ -260,6 +264,10 @@ func testAccCheckGitlabProjectAttributes(project *gitlab.Project, want *testAccG return fmt.Errorf("got merge_requests_enabled %t; want %t", project.MergeRequestsEnabled, want.MergeRequestsEnabled) } + if project.ApprovalsBeforeMerge != want.ApprovalsBeforeMerge { + return fmt.Errorf("got approvals_before_merge %d; want %d", project.ApprovalsBeforeMerge, want.ApprovalsBeforeMerge) + } + if project.WikiEnabled != want.WikiEnabled { return fmt.Errorf("got wiki_enabled %t; want %t", project.WikiEnabled, want.WikiEnabled) } @@ -376,6 +384,7 @@ resource "gitlab_project" "foo" { issues_enabled = false merge_requests_enabled = false + approvals_before_merge = 0 wiki_enabled = false snippets_enabled = false } diff --git a/website/docs/r/project.html.markdown b/website/docs/r/project.html.markdown index 4401e1c48..9e4cc4f5d 100644 --- a/website/docs/r/project.html.markdown +++ b/website/docs/r/project.html.markdown @@ -42,6 +42,8 @@ The following arguments are supported: * `merge_requests_enabled` - (Optional) Enable merge requests for the project. +* `approvals_before_merge` - (Optional) Number of merge request approvals required for merging. Default is 0. + * `wiki_enabled` - (Optional) Enable wiki for the project. * `snippets_enabled` - (Optional) Enable snippets for the project.