summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorick Peterse <yorickpeterse@gmail.com>2018-06-12 13:29:43 +0200
committerYorick Peterse <yorickpeterse@gmail.com>2018-06-12 13:30:41 +0200
commite4612df0e257a27b47986a9ee6aa77f68a9cd3ba (patch)
tree36ad42e8f6653d3967a44dcf4478ca8828556e7f
parent450b9f6e30161e6719cf9ffb051b460eb48378c4 (diff)
downloadgitlab-ce-e4612df0e257a27b47986a9ee6aa77f68a9cd3ba.tar.gz
Ensure MR diffs always exist in the PR importerpr-importer-io-extra-error-handling
In rare cases it could happen that an MR was created, but creating the MR diffs somehow failed (e.g. due to an error). This commit adds an additional check to make sure MR diffs are always present when importing GitHub pull requests.
-rw-r--r--changelogs/unreleased/pr-importer-io-extra-error-handling.yml5
-rw-r--r--lib/gitlab/github_import/importer/pull_request_importer.rb3
-rw-r--r--spec/lib/gitlab/github_import/importer/pull_request_importer_spec.rb12
3 files changed, 19 insertions, 1 deletions
diff --git a/changelogs/unreleased/pr-importer-io-extra-error-handling.yml b/changelogs/unreleased/pr-importer-io-extra-error-handling.yml
new file mode 100644
index 00000000000..2f7121b2840
--- /dev/null
+++ b/changelogs/unreleased/pr-importer-io-extra-error-handling.yml
@@ -0,0 +1,5 @@
+---
+title: Ensure MR diffs always exist in the PR importer
+merge_request:
+author:
+type: fixed
diff --git a/lib/gitlab/github_import/importer/pull_request_importer.rb b/lib/gitlab/github_import/importer/pull_request_importer.rb
index b2f6cb7ad19..6b3688c4381 100644
--- a/lib/gitlab/github_import/importer/pull_request_importer.rb
+++ b/lib/gitlab/github_import/importer/pull_request_importer.rb
@@ -104,7 +104,8 @@ module Gitlab
# first save the diff, then populate it.
diff =
if already_exists
- merge_request.merge_request_diffs.take
+ merge_request.merge_request_diffs.take ||
+ merge_request.merge_request_diffs.build
else
merge_request.merge_request_diffs.build
end
diff --git a/spec/lib/gitlab/github_import/importer/pull_request_importer_spec.rb b/spec/lib/gitlab/github_import/importer/pull_request_importer_spec.rb
index 6686b7ce0b5..3422a1e82fc 100644
--- a/spec/lib/gitlab/github_import/importer/pull_request_importer_spec.rb
+++ b/spec/lib/gitlab/github_import/importer/pull_request_importer_spec.rb
@@ -276,5 +276,17 @@ describe Gitlab::GithubImport::Importer::PullRequestImporter, :clean_gitlab_redi
expect(diff.merge_request_diff_commits.exists?).to eq(true)
end
+
+ context 'when the merge request exists' do
+ it 'creates the merge request diffs if they do not yet exist' do
+ mr, _ = importer.create_merge_request
+
+ mr.merge_request_diffs.delete_all
+
+ importer.insert_git_data(mr, true)
+
+ expect(mr.merge_request_diffs.exists?).to eq(true)
+ end
+ end
end
end