summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean McGivern <sean@mcgivern.me.uk>2017-01-18 11:02:45 +0000
committerSean McGivern <sean@mcgivern.me.uk>2017-01-18 11:02:45 +0000
commitcdf0af666c04290ece320e39a890af75f2e7d7e4 (patch)
tree5f065073cd715e4c2098f9bd30453325978fe562
parentf5ff5dc270c1f28cd4a5fee675cc9c576017f577 (diff)
parent856003cfea894b56784f0fea4ee64655e6c16f06 (diff)
downloadgitlab-ce-cdf0af666c04290ece320e39a890af75f2e7d7e4.tar.gz
Merge branch 'i-#25814-500-error' into 'master'
Fix Compare page throws 500 error when any branch/reference is not selected Closes #25814 See merge request !8523
-rw-r--r--app/controllers/projects/compare_controller.rb11
-rw-r--r--changelogs/unreleased/i--25814-500-error.yml4
-rw-r--r--spec/controllers/projects/compare_controller_spec.rb30
3 files changed, 44 insertions, 1 deletions
diff --git a/app/controllers/projects/compare_controller.rb b/app/controllers/projects/compare_controller.rb
index ec02fc15d35..d32966645c8 100644
--- a/app/controllers/projects/compare_controller.rb
+++ b/app/controllers/projects/compare_controller.rb
@@ -25,8 +25,17 @@ class Projects::CompareController < Projects::ApplicationController
end
def create
- redirect_to namespace_project_compare_path(@project.namespace, @project,
+ if params[:from].blank? || params[:to].blank?
+ flash[:alert] = "You must select from and to branches"
+ from_to_vars = {
+ from: params[:from].presence,
+ to: params[:to].presence
+ }
+ redirect_to namespace_project_compare_index_path(@project.namespace, @project, from_to_vars)
+ else
+ redirect_to namespace_project_compare_path(@project.namespace, @project,
params[:from], params[:to])
+ end
end
private
diff --git a/changelogs/unreleased/i--25814-500-error.yml b/changelogs/unreleased/i--25814-500-error.yml
new file mode 100644
index 00000000000..cd55ede84c8
--- /dev/null
+++ b/changelogs/unreleased/i--25814-500-error.yml
@@ -0,0 +1,4 @@
+---
+title: Fix Compare page throws 500 error when any branch/reference is not selected
+merge_request: 8492
+author: Martin Cabrera
diff --git a/spec/controllers/projects/compare_controller_spec.rb b/spec/controllers/projects/compare_controller_spec.rb
index 7a57801c437..b03c4b52de6 100644
--- a/spec/controllers/projects/compare_controller_spec.rb
+++ b/spec/controllers/projects/compare_controller_spec.rb
@@ -64,6 +64,36 @@ describe Projects::CompareController do
expect(assigns(:diffs)).to eq(nil)
expect(assigns(:commits)).to eq(nil)
end
+
+ it 'redirects back to index when params[:from] is empty and preserves params[:to]' do
+ post(:create,
+ namespace_id: project.namespace.to_param,
+ project_id: project.to_param,
+ from: '',
+ to: 'master')
+
+ expect(response).to redirect_to(namespace_project_compare_index_path(project.namespace, project, to: 'master'))
+ end
+
+ it 'redirects back to index when params[:to] is empty and preserves params[:from]' do
+ post(:create,
+ namespace_id: project.namespace.to_param,
+ project_id: project.to_param,
+ from: 'master',
+ to: '')
+
+ expect(response).to redirect_to(namespace_project_compare_index_path(project.namespace, project, from: 'master'))
+ end
+
+ it 'redirects back to index when params[:from] and params[:to] are empty' do
+ post(:create,
+ namespace_id: project.namespace.to_param,
+ project_id: project.to_param,
+ from: '',
+ to: '')
+
+ expect(response).to redirect_to(namespace_project_compare_index_path)
+ end
end
describe 'GET diff_for_path' do