diff --git a/lib/puppet/parser/functions/range.rb b/lib/puppet/parser/functions/range.rb index c14f6e696..2fc211329 100644 --- a/lib/puppet/parser/functions/range.rb +++ b/lib/puppet/parser/functions/range.rb @@ -47,7 +47,7 @@ module Puppet::Parser::Functions type = '..' # Use the simplest type of Range available in Ruby - else # arguments.size == 0 + else # arguments.size == 1 value = arguments[0] if m = value.match(/^(\w+)(\.\.\.?|\-)(\w+)$/) @@ -55,7 +55,7 @@ module Puppet::Parser::Functions stop = m[3] type = m[2] - + step = 1 elsif value.match(/^.+$/) raise(Puppet::ParseError, "range(): Unable to compute range " + "from the value: #{value}") @@ -78,7 +78,7 @@ module Puppet::Parser::Functions when '...' then (start ... stop) # Exclusive of last element end - result = range.step(step).collect { |i| i } + result = range.step(step).to_a return result end diff --git a/spec/functions/range_spec.rb b/spec/functions/range_spec.rb index ef86f9719..f18b89e1a 100755 --- a/spec/functions/range_spec.rb +++ b/spec/functions/range_spec.rb @@ -68,6 +68,13 @@ end end + describe 'with a ruby-like range' do + it "returns a number range" do + result = scope.function_range(["1..4"]) + expect(result).to eq [1,2,3,4] + end + end + describe 'with a numeric range' do it "returns a range of numbers" do expected = (1..10).to_a