From a62fdabf70ce7e8b4a00a256954cd2b0ee5b25ab Mon Sep 17 00:00:00 2001 From: Clinton Wolfe Date: Thu, 2 May 2019 23:06:44 -0400 Subject: [PATCH] bugfix - plugin_name is called from both plugin definition and implementation classes Signed-off-by: Clinton Wolfe --- lib/inspec/plugin/v2/plugin_base.rb | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/inspec/plugin/v2/plugin_base.rb b/lib/inspec/plugin/v2/plugin_base.rb index ba8a15f76..5f58f8b5b 100644 --- a/lib/inspec/plugin/v2/plugin_base.rb +++ b/lib/inspec/plugin/v2/plugin_base.rb @@ -57,6 +57,13 @@ module Inspec::Plugin::V2 @@plugin_type_classes[plugin_type_name] end + def self.find_type_by_implementation_class(impl_class) + # This is super awkward + activators = Inspec::Plugin::V2::Registry.instance.find_activators + activator = activators.detect { |a| a.implementation_class == impl_class } + activator.plugin_name + end + #=====================================================================# # DSL Methods #=====================================================================# @@ -71,7 +78,13 @@ module Inspec::Plugin::V2 # @returns [Symbol] Name of the plugin def self.plugin_name(name = nil) reg = Inspec::Plugin::V2::Registry.instance - return reg.find_status_by_class(self).name if name.nil? + if name.nil? + # If called from a Plugin definition class... + stat = reg.find_status_by_class(self) + return stat.name if stat + # Called from an implementation class + return find_type_by_implementation_class(self) + end name = name.to_sym