summaryrefslogtreecommitdiff
path: root/spec/unit
diff options
context:
space:
mode:
authorJeff McCune <jeff@puppetlabs.com>2012-03-29 15:12:06 -0700
committerJeff McCune <jeff@puppetlabs.com>2012-03-29 15:17:30 -0700
commit61891bbe6112b580043e9d8c256f722a6add9492 (patch)
tree2f36806174ae5c791ed5453fd2bcbaf55993f417 /spec/unit
parent46401caef6e00708867d09319985528c39636ba2 (diff)
downloadpuppet-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')
-rw-r--r--spec/unit/puppet/parser/functions/range_spec.rb19
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