summaryrefslogtreecommitdiff
path: root/spec/controllers
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-04-30 16:47:35 +0000
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-04-30 16:47:35 +0000
commit6d22e9674456b921e0f951af10ba18505891ec10 (patch)
tree73471555eecb8de6b3fb2e520e171aaaddee4e7b /spec/controllers
parenta06354485ccbb9c31f7111327a82caf446a81a5f (diff)
parent72a7febeada2c58c98caee8bb7ce18886a7c0868 (diff)
downloadgitlab-ce-6d22e9674456b921e0f951af10ba18505891ec10.tar.gz
Merge branch 'fix-submodule-error-with-forked-project' into 'master'
Fix "Revspec not found" errors when viewing diffs in a forked project with submodules ## What does this MR do? This MR fixes an error that occurs when viewing diffs in a forked project with submodules. ### Are there points in the code the reviewer needs to double check? Testing this code was tricky. The only way this problem shows up is if the origin project does NOT have the submodule update commit. The introduction of gitlab-test-fork serves that purpose: it contains a submodule update not present in gitlab-test. ### Why was this MR needed? A user would receive a 500 error when trying to view a merge request with a submodule update. #1413 has details on how to reproduce this issue. ### What are the relevant issue numbers / [Feature requests](http://feedback.gitlab.com/)? #1413 See merge request !512
Diffstat (limited to 'spec/controllers')
-rw-r--r--spec/controllers/merge_requests_controller_spec.rb20
1 files changed, 20 insertions, 0 deletions
diff --git a/spec/controllers/merge_requests_controller_spec.rb b/spec/controllers/merge_requests_controller_spec.rb
index d6f56ed33d6..c94ef1629ae 100644
--- a/spec/controllers/merge_requests_controller_spec.rb
+++ b/spec/controllers/merge_requests_controller_spec.rb
@@ -78,4 +78,24 @@ describe Projects::MergeRequestsController do
end
end
end
+
+ context '#diffs with forked projects with submodules' do
+ render_views
+ let(:project) { create(:project) }
+ let(:fork_project) { create(:forked_project_with_submodules) }
+ let(:merge_request) { create(:merge_request_with_diffs, source_project: fork_project, source_branch: 'add-submodule-version-bump', target_branch: 'master', target_project: project) }
+
+ before do
+ fork_project.build_forked_project_link(forked_to_project_id: fork_project.id, forked_from_project_id: project.id)
+ fork_project.save
+ merge_request.reload
+ end
+
+ it '#diffs' do
+ get(:diffs, namespace_id: project.namespace.to_param,
+ project_id: project.to_param, id: merge_request.iid, format: 'json')
+ expect(response).to be_success
+ expect(response.body).to have_content('Subproject commit')
+ end
+ end
end