summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2018-06-06 14:13:58 +0000
committerAlessio Caiazza <acaiazza@gitlab.com>2018-06-06 16:24:32 +0200
commit94badb642739eae6bf6f2d15fc585402a4a514d9 (patch)
tree537c1848415ec38b8fefc3ff819133f1f6448216
parent6640e8d4f9e5bdc30380bc9d1191c277dd39473b (diff)
downloadgitlab-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.rb3
-rw-r--r--app/services/projects/update_service.rb17
-rw-r--r--spec/requests/api/settings_spec.rb4
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