def subject
function_name = self.class.top_level_description.downcase
vardir = setup_puppet
if Puppet.version.to_f >= 4.0
env = Puppet::Node::Environment.create(environment, [File.join(Puppet[:environmentpath],'fixtures','modules')], File.join(Puppet[:environmentpath],'fixtures','manifests'))
loader = Puppet::Pops::Loaders.new(env)
func = loader.private_environment_loader.load(:function,function_name)
return func if func
end
if env
return nil unless Puppet::Parser::Functions.function(function_name,env)
else
return nil unless Puppet::Parser::Functions.function(function_name)
end
FileUtils.rm_rf(vardir) if File.directory?(vardir)
scope.method("function_#{function_name}".intern)
end