From 61891bbe6112b580043e9d8c256f722a6add9492 Mon Sep 17 00:00:00 2001 From: Jeff McCune Date: Thu, 29 Mar 2012 15:12:06 -0700 Subject: (#13494) Specify the behavior of zero padded strings Without this patch the specified behavior of strings that are numeric only and zero padded is unclear and untested in the spec tests. This is a problem because it's not clear that range('00', '10') will actually return [ "0", "1", ..., "10" ] instead of [ "00", "01", ..., "10" ] This patch addresses the issue by providing explicit test coverage. If the string conversion behavior of puppet changes, this test will begin to fail. --- spec/unit/puppet/parser/functions/range_spec.rb | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'spec/unit/puppet/parser/functions/range_spec.rb') diff --git a/spec/unit/puppet/parser/functions/range_spec.rb b/spec/unit/puppet/parser/functions/range_spec.rb index 8c2446a..060423a 100644 --- a/spec/unit/puppet/parser/functions/range_spec.rb +++ b/spec/unit/puppet/parser/functions/range_spec.rb @@ -6,8 +6,8 @@ describe "the range function" do Puppet::Parser::Functions.autoloader.loadall end - before :each do - @scope = Puppet::Parser::Scope.new + let :scope do + Puppet::Parser::Scope.new end it "should exist" do @@ -15,17 +15,26 @@ describe "the range function" do end it "should raise a ParseError if there is less than 1 arguments" do - lambda { @scope.function_range([]) }.should( raise_error(Puppet::ParseError)) + lambda { scope.function_range([]) }.should( raise_error(Puppet::ParseError)) end it "should return a letter range" do - result = @scope.function_range(["a","d"]) + result = scope.function_range(["a","d"]) result.should(eq(['a','b','c','d'])) end it "should return a number range" do - result = @scope.function_range(["1","4"]) + result = scope.function_range(["1","4"]) result.should(eq([1,2,3,4])) end + it "should work with padded hostname like strings" do + expected = ("host01".."host10").to_a + scope.function_range(["host01","host10"]).should eq expected + end + + it "should coerce zero padded digits to integers" do + expected = (0..10).to_a + scope.function_range(["00", "10"]).should eq expected + end end -- cgit v1.2.3