Commit f1ccff47 authored by Yorick Peterse's avatar Yorick Peterse Committed by Jose Ivan Vargas

Merge branch...

Merge branch '36328-deserializemergerequestdiffsandcommits-fails-due-to-null-too_large-column-9-5-rc1' into 'master'

Fix merge request diff deserialisation when too_large was absent

Closes #36328

See merge request !13500
parent 75dffc45
...@@ -85,6 +85,8 @@ module Gitlab ...@@ -85,6 +85,8 @@ module Gitlab
diff_hash.tap do |hash| diff_hash.tap do |hash|
diff_text = hash[:diff] diff_text = hash[:diff]
hash[:too_large] = !!hash[:too_large]
if diff_text.encoding == Encoding::BINARY && !diff_text.ascii_only? if diff_text.encoding == Encoding::BINARY && !diff_text.ascii_only?
hash[:binary] = true hash[:binary] = true
hash[:diff] = [diff_text].pack('m0') hash[:diff] = [diff_text].pack('m0')
......
...@@ -123,6 +123,17 @@ describe Gitlab::BackgroundMigration::DeserializeMergeRequestDiffsAndCommits do ...@@ -123,6 +123,17 @@ describe Gitlab::BackgroundMigration::DeserializeMergeRequestDiffsAndCommits do
include_examples 'updated MR diff' include_examples 'updated MR diff'
end end
context 'when the merge request diffs do not have too_large set' do
let(:commits) { merge_request_diff.commits.map(&:to_hash) }
let(:expected_diffs) { diffs_to_hashes(merge_request_diff.merge_request_diff_files) }
let(:diffs) do
expected_diffs.map { |diff| diff.except(:too_large) }
end
include_examples 'updated MR diff'
end
context 'when the merge request diffs have binary content' do context 'when the merge request diffs have binary content' do
let(:commits) { merge_request_diff.commits.map(&:to_hash) } let(:commits) { merge_request_diff.commits.map(&:to_hash) }
let(:expected_diffs) { diffs } let(:expected_diffs) { diffs }
......
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