diff options
-rw-r--r-- | lib/redmine/plugin.rb | 9 | ||||
-rw-r--r-- | test/unit/lib/redmine/plugin_test.rb | 12 |
2 files changed, 16 insertions, 5 deletions
diff --git a/lib/redmine/plugin.rb b/lib/redmine/plugin.rb index 30c182d17..8eb1c078d 100644 --- a/lib/redmine/plugin.rb +++ b/lib/redmine/plugin.rb @@ -64,15 +64,18 @@ module Redmine #:nodoc: end end end - def_field :name, :description, :url, :author, :author_url, :version, :settings + def_field :name, :description, :url, :author, :author_url, :version, :settings, :directory attr_reader :id # Plugin constructor def self.register(id, &block) p = new(id) p.instance_eval(&block) + # Set a default name if it was not provided during registration p.name(id.to_s.humanize) if p.name.nil? + # Set a default directory if it was not provided during registration + p.directory(File.join(self.directory, id.to_s)) if p.directory.nil? # Adds plugin locales if any # YAML translation files should be found under <plugin>/config/locales/ @@ -137,10 +140,6 @@ module Redmine #:nodoc: @id = id.to_sym end - def directory - File.join(self.class.directory, id.to_s) - end - def public_directory File.join(self.class.public_directory, id.to_s) end diff --git a/test/unit/lib/redmine/plugin_test.rb b/test/unit/lib/redmine/plugin_test.rb index ecf0546fe..2827dd5b9 100644 --- a/test/unit/lib/redmine/plugin_test.rb +++ b/test/unit/lib/redmine/plugin_test.rb @@ -83,6 +83,18 @@ class Redmine::PluginTest < ActiveSupport::TestCase assert_nil Redmine::MenuManager.items(:project_menu).detect {|i| i.name == :foo_menu_item} end + def test_directory_with_override + @klass.register(:foo) do + directory '/path/to/foo' + end + assert_equal '/path/to/foo', @klass.find('foo').directory + end + + def test_directory_without_override + @klass.register(:foo) {} + assert_equal File.join(@klass.directory, 'foo'), @klass.find('foo').directory + end + def test_requires_redmine plugin = Redmine::Plugin.register(:foo) {} Redmine::VERSION.stubs(:to_a).returns([2, 1, 3, "stable", 10817]) |