]> source.dussan.org Git - redmine.git/commitdiff
Fixed that non-default identifier-less git repositories are undeletable (#19260).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 7 Mar 2015 16:02:56 +0000 (16:02 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 7 Mar 2015 16:02:56 +0000 (16:02 +0000)
Patch by Felix Schäfer.

git-svn-id: http://svn.redmine.org/redmine/trunk@14050 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/repository.rb
test/unit/repository_git_test.rb

index 92dd55d5ae6e5f87864e6b553dbbae4317b6d657..21e97bb6e87bcedf0c1f909a0c607cf6740da360 100644 (file)
@@ -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
index cf1ae082678c0153bac33832dd4b83a48d4926c4..be5726b81ada439a33a020de1d8e3b23d0aa9712 100644 (file)
@@ -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(