diff options
author | Rémy Coutable <remy@rymai.me> | 2016-02-22 18:13:46 +0000 |
---|---|---|
committer | Rémy Coutable <remy@rymai.me> | 2016-02-22 18:13:46 +0000 |
commit | 493d166d66902e645f3b0afb76526317fd98ceeb (patch) | |
tree | fbc252f0c6e8c79235058de5249db037b753730c | |
parent | 7479f0602e85c5355b9ba09786e6e0ed09d21551 (diff) | |
parent | 96ed5c5114e7863d4d0731ccea9da99696a867a4 (diff) | |
download | gitlab-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.rb | 2 | ||||
-rw-r--r-- | spec/models/commit_spec.rb | 34 |
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 |