diff options
author | Douwe Maan <douwe@gitlab.com> | 2018-06-06 14:13:58 +0000 |
---|---|---|
committer | Alessio Caiazza <acaiazza@gitlab.com> | 2018-06-06 16:24:32 +0200 |
commit | 94badb642739eae6bf6f2d15fc585402a4a514d9 (patch) | |
tree | 537c1848415ec38b8fefc3ff819133f1f6448216 | |
parent | 6640e8d4f9e5bdc30380bc9d1191c277dd39473b (diff) | |
download | gitlab-ce-94badb642739eae6bf6f2d15fc585402a4a514d9.tar.gz |
Merge branch 'bvl-validate-label-for-project-before-save-ce' into 'master'
[CE-Backport] Skip creating project when errors were added
See merge request gitlab-org/gitlab-ce!19430
-rw-r--r-- | app/services/projects/create_service.rb | 3 | ||||
-rw-r--r-- | app/services/projects/update_service.rb | 17 | ||||
-rw-r--r-- | spec/requests/api/settings_spec.rb | 4 |
3 files changed, 19 insertions, 5 deletions
diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb index d16ecdb7b9b..e3b36e8be18 100644 --- a/app/services/projects/create_service.rb +++ b/app/services/projects/create_service.rb @@ -46,6 +46,9 @@ module Projects yield(@project) if block_given? + # If the block added errors, don't try to save the project + return @project if @project.errors.any? + @project.creator = current_user if forked_from_project_id diff --git a/app/services/projects/update_service.rb b/app/services/projects/update_service.rb index 679f4a9cb62..b2414a39e72 100644 --- a/app/services/projects/update_service.rb +++ b/app/services/projects/update_service.rb @@ -17,6 +17,11 @@ module Projects ensure_wiki_exists if enabling_wiki? + yield if block_given? + + # If the block added errors, don't try to save the project + return validation_failed! if project.errors.any? + if project.update_attributes(params.except(:default_branch)) if project.previous_changes.include?('path') project.rename_repo @@ -28,10 +33,7 @@ module Projects success else - model_errors = project.errors.full_messages.to_sentence - error_message = model_errors.presence || 'Project could not be updated!' - - error(error_message) + validation_failed! end end @@ -43,6 +45,13 @@ module Projects private + def validation_failed! + model_errors = project.errors.full_messages.to_sentence + error_message = model_errors.presence || 'Project could not be updated!' + + error(error_message) + end + def renaming_project_with_container_registry_tags? new_path = params[:path] diff --git a/spec/requests/api/settings_spec.rb b/spec/requests/api/settings_spec.rb index 8b22d1e72f3..26af56a12fc 100644 --- a/spec/requests/api/settings_spec.rb +++ b/spec/requests/api/settings_spec.rb @@ -30,7 +30,9 @@ describe API::Settings, 'Settings' do describe "PUT /application/settings" do context "custom repository storage type set in the config" do before do - storages = { 'custom' => 'tmp/tests/custom_repositories' } + # Add a possible storage to the config + storages = Gitlab.config.repositories.storages + .merge({ 'custom' => 'tmp/tests/custom_repositories' }) allow(Gitlab.config.repositories).to receive(:storages).and_return(storages) end |