##// END OF EJS Templates
Be more conservative when fetching constants in Repository.factory (#23758)....
Jean-Philippe Lang -
r15434:45a0daa16a14
parent child
Show More
@@ -363,10 +363,14 class Repository < ActiveRecord::Base
363 363 end
364 364
365 365 def self.factory(klass_name, *args)
366 klass = "Repository::#{klass_name}".constantize
367 klass.new(*args)
368 rescue
369 nil
366 repository_class(klass_name).new(*args) rescue nil
367 end
368
369 def self.repository_class(class_name)
370 class_name = class_name.to_s.classify
371 if Redmine::Scm::Base.all.include?(class_name)
372 "Repository::#{class_name}".constantize
373 end
370 374 end
371 375
372 376 def self.scm_adapter_class
@@ -496,4 +496,18 class RepositoryTest < ActiveSupport::TestCase
496 496 Repository::Subversion.any_instance.expects(:fetch_changesets).twice.returns(true)
497 497 Repository.fetch_changesets
498 498 end
499
500 def test_repository_class
501 assert_equal Repository::Subversion, Repository.repository_class('Subversion')
502 assert_equal Repository::Git, Repository.repository_class('Git')
503 assert_nil Repository.factory('Serializer')
504 assert_nil Repository.factory('Query')
505 end
506
507 def test_factory
508 assert_instance_of Repository::Subversion, Repository.factory('Subversion')
509 assert_instance_of Repository::Git, Repository.factory('Git')
510 assert_nil Repository.factory('Serializer')
511 assert_nil Repository.factory('Query')
512 end
499 513 end
General Comments 0
You need to be logged in to leave comments. Login now