+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
>
>
> >


-- 
A conservative is a man who believes that nothing should be done for
the first time. --Alfred E. Wiggam
---------------------------------------------------------------------
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to