def matches?(func_obj)
@func_obj = func_obj
if @params
if Puppet.version.to_f >= 4.0 and ! @func_obj.respond_to?(:receiver)
@func = lambda { func_obj.call({}, *@params) }
else
@func = lambda { func_obj.call(@params) }
end
else
if Puppet.version.to_f >= 4.0 and ! @func_obj.respond_to?(:receiver)
@func = lambda { func_obj.call({}) }
else
@func = lambda { func_obj.call }
end
end
@has_returned = false
begin
@actual_return = @func.call
@has_returned = true
rescue Exception => e
@actual_error = e
end
if @has_expected_error
if @has_returned
return false
elsif @actual_error.is_a?(@expected_error)
case @expected_error_message
when nil
return true
when Regexp
return !!(@actual_error.message =~ @expected_error_message)
else
return @actual_error.message == @expected_error_message
end
else
return false
end
elsif @has_expected_return
if !@has_returned
return false
else
case @expected_return
when Regexp
return !!(@actual_return =~ @expected_return)
else
return @actual_return == @expected_return
end
end
else
return @has_returned
end
end