From 20097eca2ff0fdbfd051ea6f7a3a211f46ce7105 Mon Sep 17 00:00:00 2001 From: Carlos Alexandro Becker Date: Wed, 24 Jan 2018 22:55:14 -0200 Subject: [PATCH] added require_code_owner_reviews option --- github/resource_github_branch_protection.go | 13 ++++++++++--- github/resource_github_branch_protection_test.go | 11 ++++++++--- website/docs/r/branch_protection.html.markdown | 3 ++- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/github/resource_github_branch_protection.go b/github/resource_github_branch_protection.go index ed2d24b300..dc659aab1c 100644 --- a/github/resource_github_branch_protection.go +++ b/github/resource_github_branch_protection.go @@ -81,6 +81,11 @@ func resourceGithubBranchProtection() *schema.Resource { Optional: true, Default: false, }, + "require_code_owner_reviews": { + Type: schema.TypeBool, + Optional: true, + Default: false, + }, "dismissal_users": { Type: schema.TypeSet, Optional: true, @@ -268,9 +273,10 @@ func flattenRequiredPullRequestReviews(d *schema.ResourceData, protection *githu if err := d.Set("required_pull_request_reviews", []interface{}{ map[string]interface{}{ - "dismiss_stale_reviews": rprr.DismissStaleReviews, - "dismissal_users": schema.NewSet(schema.HashString, users), - "dismissal_teams": schema.NewSet(schema.HashString, teams), + "dismiss_stale_reviews": rprr.DismissStaleReviews, + "require_code_owner_reviews": rprr.RequireCodeOwnerReviews, + "dismissal_users": schema.NewSet(schema.HashString, users), + "dismissal_teams": schema.NewSet(schema.HashString, teams), }, }); err != nil { return err @@ -363,6 +369,7 @@ func expandRequiredPullRequestReviews(d *schema.ResourceData) (*github.PullReque rprr.DismissalRestrictionsRequest = drr rprr.DismissStaleReviews = m["dismiss_stale_reviews"].(bool) + rprr.RequireCodeOwnerReviews = m["require_code_owner_reviews"].(bool) } return rprr, nil diff --git a/github/resource_github_branch_protection_test.go b/github/resource_github_branch_protection_test.go index 58560b459e..28ca0421a4 100644 --- a/github/resource_github_branch_protection_test.go +++ b/github/resource_github_branch_protection_test.go @@ -29,7 +29,7 @@ func TestAccGithubBranchProtection_basic(t *testing.T) { testAccCheckGithubProtectedBranchExists("github_branch_protection.master", repoName+":master", &protection), testAccCheckGithubBranchProtectionRequiredStatusChecks(&protection, true, []string{"github/foo"}), testAccCheckGithubBranchProtectionRestrictions(&protection, []string{testUser}, []string{}), - testAccCheckGithubBranchProtectionPullRequestReviews(&protection, true, []string{testUser}, []string{}), + testAccCheckGithubBranchProtectionPullRequestReviews(&protection, true, true, []string{testUser}, []string{}), resource.TestCheckResourceAttr("github_branch_protection.master", "repository", repoName), resource.TestCheckResourceAttr("github_branch_protection.master", "branch", "master"), resource.TestCheckResourceAttr("github_branch_protection.master", "enforce_admins", "true"), @@ -180,7 +180,7 @@ func testAccCheckGithubBranchProtectionRestrictions(protection *github.Protectio } } -func testAccCheckGithubBranchProtectionPullRequestReviews(protection *github.Protection, expectedStale bool, expectedUsers, expectedTeams []string) resource.TestCheckFunc { +func testAccCheckGithubBranchProtectionPullRequestReviews(protection *github.Protection, expectedStale, expectedCodeOwner bool, expectedUsers, expectedTeams []string) resource.TestCheckFunc { return func(s *terraform.State) error { reviews := protection.RequiredPullRequestReviews if reviews == nil { @@ -191,6 +191,10 @@ func testAccCheckGithubBranchProtectionPullRequestReviews(protection *github.Pro return fmt.Errorf("Expected `dismiss_state_reviews` to be %t, got %t", expectedStale, reviews.DismissStaleReviews) } + if reviews.RequireCodeOwnerReviews != expectedCodeOwner { + return fmt.Errorf("Expected `require_code_owner_reviews` to be %t, got %t", expectedCodeOwner, reviews.RequireCodeOwnerReviews) + } + users := []string{} for _, u := range reviews.DismissalRestrictions.Users { users = append(users, *u.Login) @@ -276,7 +280,8 @@ resource "github_branch_protection" "master" { } required_pull_request_reviews { - dismiss_stale_reviews = true + dismiss_stale_reviews = true + require_code_owner_reviews = true dismissal_users = ["%s"] } diff --git a/website/docs/r/branch_protection.html.markdown b/website/docs/r/branch_protection.html.markdown index 60a8fafd29..a61426e194 100644 --- a/website/docs/r/branch_protection.html.markdown +++ b/website/docs/r/branch_protection.html.markdown @@ -64,6 +64,7 @@ The following arguments are supported: `required_pull_request_reviews` supports the following arguments: * `dismiss_stale_reviews`: (Optional) Dismiss approved reviews automatically when a new commit is pushed. Defaults to `false`. +* `require_code_owner_reviews`: (Optional) Require a review from a code owner. Defaults to `false`. * `dismissal_users`: (Optional) The list of user logins with dismissal access * `dismissal_teams`: (Optional) The list of team slugs with dismissal access @@ -82,4 +83,4 @@ Github Branch Protection can be imported using an id made up of `repository:bran ``` $ terraform import github_branch_protection.terraform terraform:master -``` \ No newline at end of file +```