summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2016-02-22 18:13:46 +0000
committerRémy Coutable <remy@rymai.me>2016-02-22 18:13:46 +0000
commit493d166d66902e645f3b0afb76526317fd98ceeb (patch)
treefbc252f0c6e8c79235058de5249db037b753730c
parent7479f0602e85c5355b9ba09786e6e0ed09d21551 (diff)
parent96ed5c5114e7863d4d0731ccea9da99696a867a4 (diff)
downloadgitlab-ce-493d166d66902e645f3b0afb76526317fd98ceeb.tar.gz
Merge branch 'fix/13631-error-with-merged-mr' into 'master'
Ensure we don't check a commit's description for revert message if it has no description Fixes #13631. /cc @razer6 @grzesiek @yorickpeterse @rdavila See merge request !2917
-rw-r--r--app/models/commit.rb2
-rw-r--r--spec/models/commit_spec.rb34
2 files changed, 35 insertions, 1 deletions
diff --git a/app/models/commit.rb b/app/models/commit.rb
index b99abb540ea..3224f5457f0 100644
--- a/app/models/commit.rb
+++ b/app/models/commit.rb
@@ -232,7 +232,7 @@ class Commit
end
def reverts_commit?(commit)
- description.include?(commit.revert_description)
+ description? && description.include?(commit.revert_description)
end
def merge_commit?
diff --git a/spec/models/commit_spec.rb b/spec/models/commit_spec.rb
index ecf37b40c58..253902512c3 100644
--- a/spec/models/commit_spec.rb
+++ b/spec/models/commit_spec.rb
@@ -118,4 +118,38 @@ eos
it { expect(data[:modified]).to eq([".gitmodules"]) }
it { expect(data[:removed]).to eq([]) }
end
+
+ describe '#reverts_commit?' do
+ let(:another_commit) { double(:commit, revert_description: "This reverts commit #{commit.sha}") }
+
+ it { expect(commit.reverts_commit?(another_commit)).to be_falsy }
+
+ context 'commit has no description' do
+ before { allow(commit).to receive(:description?).and_return(false) }
+
+ it { expect(commit.reverts_commit?(another_commit)).to be_falsy }
+ end
+
+ context "another_commit's description does not revert commit" do
+ before { allow(commit).to receive(:description).and_return("Foo Bar") }
+
+ it { expect(commit.reverts_commit?(another_commit)).to be_falsy }
+ end
+
+ context "another_commit's description reverts commit" do
+ before { allow(commit).to receive(:description).and_return("Foo #{another_commit.revert_description} Bar") }
+
+ it { expect(commit.reverts_commit?(another_commit)).to be_truthy }
+ end
+
+ context "another_commit's description reverts merged merge request" do
+ before do
+ revert_description = "This reverts merge request !foo123"
+ allow(another_commit).to receive(:revert_description).and_return(revert_description)
+ allow(commit).to receive(:description).and_return("Foo #{another_commit.revert_description} Bar")
+ end
+
+ it { expect(commit.reverts_commit?(another_commit)).to be_truthy }
+ end
+ end
end