From e4612df0e257a27b47986a9ee6aa77f68a9cd3ba Mon Sep 17 00:00:00 2001 From: Yorick Peterse Date: Tue, 12 Jun 2018 13:29:43 +0200 Subject: Ensure MR diffs always exist in the PR importer 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. --- .../unreleased/pr-importer-io-extra-error-handling.yml | 5 +++++ lib/gitlab/github_import/importer/pull_request_importer.rb | 3 ++- .../github_import/importer/pull_request_importer_spec.rb | 12 ++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 changelogs/unreleased/pr-importer-io-extra-error-handling.yml 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 -- cgit v1.2.1