From 9ea438720ffc27eefb1e19e33c7c57b276386d01 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sat, 7 Mar 2015 16:02:56 +0000 Subject: [PATCH] Fixed that non-default identifier-less git repositories are undeletable (#19260). MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Patch by Felix Schäfer. git-svn-id: http://svn.redmine.org/redmine/trunk@14050 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/models/repository.rb | 1 - test/unit/repository_git_test.rb | 29 +++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/app/models/repository.rb b/app/models/repository.rb index 92dd55d5a..21e97bb6e 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -38,7 +38,6 @@ class Repository < ActiveRecord::Base validates_length_of :password, :maximum => 255, :allow_nil => true validates_length_of :identifier, :maximum => IDENTIFIER_MAX_LENGTH, :allow_blank => true - validates_presence_of :identifier, :unless => Proc.new { |r| r.is_default? || r.set_as_default? } validates_uniqueness_of :identifier, :scope => :project_id, :allow_blank => true validates_exclusion_of :identifier, :in => %w(browse show entry raw changes annotate diff statistics graph revisions revision) # donwcase letters, digits, dashes, underscores but not digits only diff --git a/test/unit/repository_git_test.rb b/test/unit/repository_git_test.rb index cf1ae0826..be5726b81 100644 --- a/test/unit/repository_git_test.rb +++ b/test/unit/repository_git_test.rb @@ -49,6 +49,35 @@ class RepositoryGitTest < ActiveSupport::TestCase assert @repository end + def test_nondefault_repo_with_blank_identifier_destruction + repo1 = Repository::Git.new( + :project => @project, + :url => REPOSITORY_PATH, + :identifier => '', + :is_default => true + ) + assert repo1.save + repo1.fetch_changesets + + repo2 = Repository::Git.new( + :project => @project, + :url => REPOSITORY_PATH, + :identifier => 'repo2', + :is_default => true + ) + assert repo2.save + repo2.fetch_changesets + + repo1.reload + repo2.reload + assert !repo1.is_default? + assert repo2.is_default? + + assert_difference 'Repository.count', -1 do + repo1.destroy + end + end + def test_blank_path_to_repository_error_message set_language_if_valid 'en' repo = Repository::Git.new( -- 2.39.5