Commit d09895a0 authored by Valery Sizov's avatar Valery Sizov

Fix diff parser so it tolerates to diff special markers in the content

parent 1e4b75ba
...@@ -17,7 +17,9 @@ module Gitlab ...@@ -17,7 +17,9 @@ module Gitlab
# without having to instantiate all the others that come after it. # without having to instantiate all the others that come after it.
Enumerator.new do |yielder| Enumerator.new do |yielder|
@lines.each do |line| @lines.each do |line|
next if filename?(line) # We're expecting a filename parameter only in a meta-part of the diff content
# when type is defined then we're already in a content-part
next if filename?(line) && type.nil?
full_line = line.delete("\n") full_line = line.delete("\n")
......
...@@ -143,4 +143,21 @@ eos ...@@ -143,4 +143,21 @@ eos
it { expect(parser.parse([])).to eq([]) } it { expect(parser.parse([])).to eq([]) }
it { expect(parser.parse(nil)).to eq([]) } it { expect(parser.parse(nil)).to eq([]) }
end end
describe 'tolerates special diff markers in a content' do
it "counts lines correctly" do
diff = <<~END
--- a/test
+++ b/test
@@ -1,2 +1,2 @@
+ipsum
+++ b
-ipsum
END
lines = parser.parse(diff.lines).to_a
expect(lines.size).to eq(3)
end
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