diff options
author | Jeff McCune <jeff@puppetlabs.com> | 2012-03-29 15:12:06 -0700 |
---|---|---|
committer | Jeff McCune <jeff@puppetlabs.com> | 2012-03-29 15:17:30 -0700 |
commit | 61891bbe6112b580043e9d8c256f722a6add9492 (patch) | |
tree | 2f36806174ae5c791ed5453fd2bcbaf55993f417 /spec/unit/puppet | |
parent | 46401caef6e00708867d09319985528c39636ba2 (diff) | |
download | puppet-stdlib-61891bbe6112b580043e9d8c256f722a6add9492.tar.gz puppet-stdlib-61891bbe6112b580043e9d8c256f722a6add9492.tar.bz2 |
(#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.
Diffstat (limited to 'spec/unit/puppet')
-rw-r--r-- | spec/unit/puppet/parser/functions/range_spec.rb | 19 |
1 files changed, 14 insertions, 5 deletions
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 |