From 8d5527007a3cca93dabe7324f8fffbabdc7664d0 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Tue, 8 Dec 2015 20:52:13 -0800 Subject: Provide better diagnostic message upon project creation errors Prevents an Error 500 when project fails to create due to invalid parameters. See #3937 --- CHANGELOG | 1 + app/services/projects/create_service.rb | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 3017c528380..dd1cdc7549b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,7 @@ Please view this file on the master branch, on stable branches it's out of date. v 8.3.0 (unreleased) - Merge when build succeeds (Zeger-Jan van de Weg) + - Provide better diagnostic message upon project creation errors (Stan Hu) - Bump gollum-lib to 4.1.0 (Stan Hu) - Fix broken group avatar upload under "New group" (Stan Hu) - Update project repositorize size and commit count during import:repos task (Stan Hu) diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb index 700a1db04d8..a6820183bee 100644 --- a/app/services/projects/create_service.rb +++ b/app/services/projects/create_service.rb @@ -64,8 +64,10 @@ module Projects after_create_actions if @project.persisted? @project - rescue - @project.errors.add(:base, "Can't save project. Please try again later") + rescue => e + message = "Unable to save project: #{e.message}" + Rails.logger.error(message) + @project.errors.add(:base, message) if @project @project end -- cgit v1.2.1 From 99fd78d6db9ca444853fc9903bdd203f6113b78b Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Tue, 8 Dec 2015 21:49:24 -0800 Subject: Add spec for invalid options in project creation --- spec/services/projects/create_service_spec.rb | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/spec/services/projects/create_service_spec.rb b/spec/services/projects/create_service_spec.rb index 2d8c316e38d..5d0b18558b1 100644 --- a/spec/services/projects/create_service_spec.rb +++ b/spec/services/projects/create_service_spec.rb @@ -49,6 +49,13 @@ describe Projects::CreateService, services: true do it { expect(@project.namespace).to eq(@group) } end + context 'error handling' do + it 'handles invalid options' do + @opts.merge!({ default_branch: 'master' } ) + expect(create_project(@user, @opts)).to eq(nil) + end + end + context 'wiki_enabled creates repository directory' do context 'wiki_enabled true creates wiki repository directory' do before do -- cgit v1.2.1