From b3e11d3ff95fd2f16b82b827a1c35e3d242326ee Mon Sep 17 00:00:00 2001 From: ishikawa Date: Wed, 27 Mar 2019 17:23:13 +0900 Subject: [PATCH 2/2] Change to raise an exception --- lib/redmine/plugin.rb | 4 ++++ test/unit/lib/redmine/plugin_test.rb | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/lib/redmine/plugin.rb b/lib/redmine/plugin.rb index a8e523bfe9..b5fa3d209d 100644 --- a/lib/redmine/plugin.rb +++ b/lib/redmine/plugin.rb @@ -98,6 +98,10 @@ module Redmine # Set a default directory if it was not provided during registration p.directory(File.join(self.directory, id.to_s)) if p.directory.nil? + unless File.directory?(p.directory) + raise PluginNotFound, "Plugin not found. The directory for plugin #{p.id} should be #{p.directory}." + end + # Adds plugin locales if any # YAML translation files should be found under /config/locales/ Rails.application.config.i18n.load_path += Dir.glob(File.join(p.directory, 'config', 'locales', '*.yml')) diff --git a/test/unit/lib/redmine/plugin_test.rb b/test/unit/lib/redmine/plugin_test.rb index 29facdd3aa..e56de307b7 100644 --- a/test/unit/lib/redmine/plugin_test.rb +++ b/test/unit/lib/redmine/plugin_test.rb @@ -57,6 +57,14 @@ class Redmine::PluginTest < ActiveSupport::TestCase assert_equal '0.0.1', plugin.version end + def test_register_should_raise_error_if_plugin_directory_does_not_exist + e = assert_raises Redmine::PluginNotFound do + @klass.register(:bar_plugin) {} + end + + assert_equal "Plugin not found. The directory for plugin bar_plugin should be #{Rails.root.join('test/fixtures/plugins/bar_plugin')}.", e.message + end + def test_installed @klass.register(:foo_plugin) {} assert_equal true, @klass.installed?(:foo_plugin) -- 2.20.1 (Apple Git-117)