(PDOC-56) Fix type warning for defined types

Puppet defined types would print the string representation of the ruby object,
and not representation you would see in puppet. This is the difference between
`Puppet::Pops::Types::PStringType` and `String`.
This commit is contained in:
Ian Kronquist 2015-09-18 16:00:14 -07:00
parent 5dd65d3b5e
commit 3151e4e1b1
2 changed files with 5 additions and 5 deletions

View File

@ -118,7 +118,7 @@ class TemplateHelper
function.keys.each do |key|
if function[key].class == String
begin
instantiated = type_parser.parse function[key].gsub(/'/, '').gsub(/"/, "")
instantiated = type_parser.parse function[key]
rescue Puppet::ParseError
# Likely the result of a malformed type
next
@ -132,15 +132,15 @@ class TemplateHelper
param_instantiated = type_parser.parse type
if not type_calculator.assignable? instantiated, param_instantiated
actual_types = object.type_info.map do |sig|
sig[key]
end
sig[key].to_s if sig[key]
end.compact
# Get the locations where the object can be found. We only care about
# the first one.
locations = object.files
warning = <<-EOS
[warn]: @param tag types do not match the code. The #{param[:name]}
parameter is declared as types #{param[:types]} in the docstring,
but the code specifies the types #{actual_types.inspect}
but the code specifies the types #{actual_types}
EOS
# If the locations aren't in the shape we expect then report that

View File

@ -79,7 +79,7 @@ Puppet Types: 0 ( 0 undocumented)
Puppet Providers: 0 ( 0 undocumented)
100.00% documented
output
expected_stderr = "[warn]: @param tag types do not match the code. The ident\n parameter is declared as types [\"Float\"] in the docstring,\n but the code specifies the types [Puppet::Pops::Types::PStringType]\n in the file manifests/init.pp near line 2.\n"
expected_stderr = "[warn]: @param tag types do not match the code. The ident\n parameter is declared as types [\"Float\"] in the docstring,\n but the code specifies the types [\"String\"]\n in the file manifests/init.pp near line 2.\n"
expect {
expect {