+1 On Sep 13, 2009, at 9:15 PM, Steven Jenkins wrote:
> > > Signed-off-by: Steven Jenkins <[email protected]> > --- > lib/puppet/parser/functions/fqdn_rand.rb | 3 +- > spec/unit/parser/functions/fqdn_rand.rb | 51 +++++++++++++++++++++ > +++++++++ > 2 files changed, 53 insertions(+), 1 deletions(-) > create mode 100755 spec/unit/parser/functions/fqdn_rand.rb > > diff --git a/lib/puppet/parser/functions/fqdn_rand.rb b/lib/puppet/ > parser/functions/fqdn_rand.rb > index 3741d2d..fa63678 100644 > --- a/lib/puppet/parser/functions/fqdn_rand.rb > +++ b/lib/puppet/parser/functions/fqdn_rand.rb > @@ -2,10 +2,11 @@ > Puppet::Parser::Functions::newfunction(:fqdn_rand, :type > => :rvalue, :doc => > "Generates random numbers based on the node's fqdn. The first > argument > sets the range. The second argument specifies a number to add > to the > seed and is optional.") do |args| > + raise Puppet::ParseError, "Must have 0, 1, or 2 arguments" > unless args.length < 3 > require 'md5' > max = args[0] > if args[1] then > - seed = args[1] > + seed = args[1].to_i > else > seed = 1 > end > diff --git a/spec/unit/parser/functions/fqdn_rand.rb b/spec/unit/ > parser/functions/fqdn_rand.rb > new file mode 100755 > index 0000000..8124110 > --- /dev/null > +++ b/spec/unit/parser/functions/fqdn_rand.rb > @@ -0,0 +1,51 @@ > +#! /usr/bin/env ruby > + > +require File.dirname(__FILE__) + '/../../../spec_helper' > + > +describe "the fqdn_rand function" do > + > + before :each do > + @scope = Puppet::Parser::Scope.new() > + end > + > + it "should exist" do > + Puppet::Parser::Functions.function("fqdn_rand").should == > "function_fqdn_rand" > + end > + > + it "should handle 0 arguments" do > + @scope.expects(:lookupvar).with("fqdn").returns("127.0.0.1") > + lambda { @scope.function_fqdn_rand([]) }.should_not > raise_error(Puppet::ParseError) > + end > + > + it "should handle 1 argument" do > + @scope.expects(:lookupvar).with("fqdn").returns("127.0.0.1") > + lambda { @scope.function_fqdn_rand([3]) }.should_not > raise_error(Puppet::ParseError) > + end > + > + it "should handle 2 arguments" do > + @scope.expects(:lookupvar).with("fqdn").returns("127.0.0.1") > + lambda { @scope.function_fqdn_rand([3, 4]) }.should_not > raise_error(Puppet::ParseError) > + end > + > + it "should raise a ParseError if there is more than 2 > arguments" do > + lambda { @scope.function_fqdn_rand([3, 4, 5]) }.should > raise_error(Puppet::ParseError) > + end > + > + it "should return a value less than max" do > + @scope.expects(:lookupvar).with("fqdn").returns("127.0.0.1") > + @scope.function_fqdn_rand([3]).should satisfy {|n| n.to_i < > 3 } > + end > + > + it "should return the same values on subsequent invocations for > the same host" do > + > @scope.expects(:lookupvar).with("fqdn").returns("127.0.0.1").twice > + @scope.function_fqdn_rand([3,4]).should > eql(@scope.function_fqdn_rand([3, 4])) > + end > + > + it "should return different values for different hosts" do > + @scope.expects(:lookupvar).with("fqdn").returns("127.0.0.1") > + val1 = @scope.function_fqdn_rand([3,4]) > + @scope.expects(:lookupvar).with("fqdn").returns("127.0.0.2") > + val2 = @scope.function_fqdn_rand([3,4]) > + val1.should_not eql(val2) > + end > +end > -- > 1.6.1.3 > > > > -- The most dangerous strategy is to jump a chasm in two leaps. -- Benjamin Disraeli --------------------------------------------------------------------- Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Puppet Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/puppet-dev?hl=en -~----------~----~----~----~------~----~------~--~---
