Commit 31c852ea authored by Kerri Miller's avatar Kerri Miller

Confirm protected branch before running checks

We need to check that code owners is enabled for the given target branch
before running validations.
parent 749354d3
......@@ -10,6 +10,7 @@ module Gitlab
end
def execute
return unless @project.branch_requires_code_owner_approval?(@branch_name)
return if loader.entries.blank?
assemble_error_msg_for_codeowner_matches
......
......@@ -74,6 +74,11 @@ describe Gitlab::Checks::DiffCheck do
subject.send(:validate_code_owners).call(["docs/CODEOWNERS", "README"])
end
before do
expect(project).to receive(:branch_requires_code_owner_approval?)
.at_least(:once).and_return(true)
end
it_behaves_like "returns codeowners validation message"
end
......
......@@ -37,18 +37,46 @@ describe Gitlab::CodeOwners::Validator do
allow(project.repository).to receive(:code_owners_blob).and_return(codeowner_blob)
end
shared_examples_for "finds no errors" do
it "returns nil" do
expect(subject.execute).to be_nil
end
end
describe "#execute" do
context "when paths match entries in the codeowners file" do
it "returns an error message" do
expect(subject.execute).to include("Pushes to protected branches")
context "when the branch does not require code owner approval" do
before do
expect(project).to receive(:branch_requires_code_owner_approval?)
.and_return(false)
end
context "when paths match entries in the codeowners file" do
it_behaves_like "finds no errors"
end
context "when paths do not match entries in the codeowners file" do
let(:paths) { "not/a/matching/path" }
it_behaves_like "finds no errors"
end
end
context "when paths do not match entries in the codeowners file" do
let(:paths) { "not/a/matching/path" }
context "when the branch requires code owner approval" do
before do
expect(project).to receive(:branch_requires_code_owner_approval?)
.and_return(true)
end
context "when paths match entries in the codeowners file" do
it "returns an error message" do
expect(subject.execute).to include("Pushes to protected branches")
end
end
context "when paths do not match entries in the codeowners file" do
let(:paths) { "not/a/matching/path" }
it "returns nil" do
expect(subject.execute).to be_nil
it_behaves_like "finds no errors"
end
end
end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment