Skip to content

Commit

Permalink
Merge pull request redhat-openstack#258 from mckern/enhancement/maste…
Browse files Browse the repository at this point in the history
…r/camelcasedembools

(MODULES-905) Narrow the confinement in bool2str
  • Loading branch information
Ashley Penney committed May 16, 2014
2 parents 645de3c + 557d38b commit 0cda858
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 8 deletions.
13 changes: 5 additions & 8 deletions lib/puppet/parser/functions/bool2str.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
module Puppet::Parser::Functions
newfunction(:bool2str, :type => :rvalue, :doc => <<-EOS
Converts a boolean to a string.
Requires a single boolean or string as an input.
Requires a single boolean as an input.
EOS
) do |arguments|

Expand All @@ -15,15 +15,12 @@ module Puppet::Parser::Functions
value = arguments[0]
klass = value.class

# We can have either true or false, or string which resembles boolean ...
unless [FalseClass, TrueClass, String].include?(klass)
raise(Puppet::ParseError, 'bool2str(): Requires either ' +
'boolean or string to work with')
# We can have either true or false, and nothing else
unless [FalseClass, TrueClass].include?(klass)
raise(Puppet::ParseError, 'bool2str(): Requires a boolean to work with')
end

result = value.is_a?(String) ? value : value.to_s

return result
return value.to_s
end
end

Expand Down
12 changes: 12 additions & 0 deletions spec/unit/puppet/parser/functions/bool2str_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,16 @@
result = scope.function_bool2str([false])
result.class.should(eq(String))
end

it "should not accept a string" do
lambda { scope.function_bool2str(["false"]) }.should( raise_error(Puppet::ParseError))
end

it "should not accept a nil value" do
lambda { scope.function_bool2str([nil]) }.should( raise_error(Puppet::ParseError))
end

it "should not accept an undef" do
lambda { scope.function_bool2str([:undef]) }.should( raise_error(Puppet::ParseError))
end
end

0 comments on commit 0cda858

Please sign in to comment.