[noosfero/noosfero][master] plugins: don't crash on method_missing methods
Bráulio Bhavamitra
gitlab at gitlab.com
Sat Mar 28 10:44:30 BRT 2015
Bráulio Bhavamitra pushed to master at Noosfero / noosfero
Commits:
51d3ac08 by Braulio Bhavamitra at 2015-03-28T10:44:21Z
plugins: don't crash on method_missing methods
- - - - -
2 changed files:
- lib/noosfero/plugin/manager.rb
- test/unit/plugin_manager_test.rb
Changes:
=====================================
lib/noosfero/plugin/manager.rb
=====================================
--- a/lib/noosfero/plugin/manager.rb
+++ b/lib/noosfero/plugin/manager.rb
@@ -38,6 +38,8 @@ class Noosfero::Plugin::Manager
end
def result_for plugin, event, *args
+ # check if defined to avoid crash, as there is hotspots using method_missing
+ return unless plugin.respond_to? event
method = plugin.method event
method.call *args if method.owner != Noosfero::Plugin
end
=====================================
test/unit/plugin_manager_test.rb
=====================================
--- a/test/unit/plugin_manager_test.rb
+++ b/test/unit/plugin_manager_test.rb
@@ -178,6 +178,15 @@ class PluginManagerTest < ActiveSupport::TestCase
assert_equal Plugin2, manager.fetch_first_plugin(:random_event)
end
+ should 'return nil if missing method is called' do
+ class Plugin1 < Noosfero::Plugin
+ end
+ Noosfero::Plugin.stubs(:all).returns(['PluginManagerTest::Plugin1'])
+ environment.enable_plugin(Plugin1)
+
+ assert_equal nil, @manager.result_for(Plugin1.new, :content_remove_new)
+ end
+
should 'parse macro' do
class Plugin1 < Noosfero::Plugin
def macros
View it on GitLab: https://gitlab.com/noosfero/noosfero/commit/51d3ac08b10f2f063a6915b83e95329dd14613dd
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listas.softwarelivre.org/pipermail/noosfero-dev/attachments/20150328/60579a78/attachment-0001.html>
More information about the Noosfero-dev
mailing list