+1, good idea. On Aug 4, 2009, at 4:39 PM, Nigel Kersten wrote:
> > > Signed-off-by: Nigel Kersten <[email protected]> > --- > lib/puppet/type/exec.rb | 13 +++++++------ > spec/unit/type/exec.rb | 16 ++++++++++++++-- > 2 files changed, 21 insertions(+), 8 deletions(-) > > diff --git a/lib/puppet/type/exec.rb b/lib/puppet/type/exec.rb > index 730417c..a68bfb1 100755 > --- a/lib/puppet/type/exec.rb > +++ b/lib/puppet/type/exec.rb > @@ -70,7 +70,7 @@ module Puppet > @checks.keys > end > > - newproperty(:returns) do |property| > + newproperty(:returns, :array_matching => :all) do |property| > include Puppet::Util::Execution > munge do |value| > value.to_s > @@ -79,8 +79,9 @@ module Puppet > defaultto "0" > > attr_reader :output > - desc "The expected return code. An error will be > returned if the > - executed command returns something else. Defaults > to 0." > + desc "The expected return code(s). An error will be > returned if the > + executed command returns something else. Defaults > to 0. Can be > + specified as an array of acceptable return codes or > a single value." > > # Make output a bit prettier > def change_to_s(currentvalue, newvalue) > @@ -131,9 +132,9 @@ module Puppet > end > end > > - if status.exitstatus.to_s != self.should.to_s > - self.fail("%s returned %s instead of %s" % > - [self.resource[:command], > status.exitstatus, self.should.to_s]) > + unless self.should.include?(status.exitstatus.to_s) > + self.fail("%s returned %s instead of one of > [%s]" % > + [self.resource[:command], > status.exitstatus, self.should.join(",")]) > end > > return event > diff --git a/spec/unit/type/exec.rb b/spec/unit/type/exec.rb > index 816e01b..761d414 100755 > --- a/spec/unit/type/exec.rb > +++ b/spec/unit/type/exec.rb > @@ -3,11 +3,11 @@ > require File.dirname(__FILE__) + '/../../spec_helper' > > module ExecModuleTesting > - def create_resource(command, output, exitstatus) > + def create_resource(command, output, exitstatus, returns = [0]) > @user_name = 'some_user_name' > @group_name = 'some_group_name' > Puppet.features.stubs(:root?).returns(true) > - @execer = Puppet::Type.type(:exec).new(:name => > command, :path => %w{/usr/bin /bin}, :user => @user_name, :group => > @group_name) > + @execer = Puppet::Type.type(:exec).new(:name => > command, :path => %w{/usr/bin /bin}, :user => @user_name, :group => > @group_name, :returns => returns) > > status = stub "process" > status.stubs(:exitstatus).returns(exitstatus) > @@ -44,6 +44,18 @@ describe Puppet::Type.type(:exec), " when > execing" do > > proc { @execer.refresh }.should raise_error(Puppet::Error) > end > + > + it "should not report a failure if the exit status is specified > in a returns array" do > + command = "false" > + create_resource(command, "", 1, [0,1]) > + proc { @execer.refresh }.should_not > raise_error(Puppet::Error) > + end > + > + it "should report a failure if the exit status is not specified > in a returns array" do > + command = "false" > + create_resource(command, "", 1, [0,100]) > + proc { @execer.refresh }.should raise_error(Puppet::Error) > + end > > it "should log the output on success" do > #Puppet::Util::Log.newdestination :console > -- > 1.6.3.3 > > > > -- America believes in education: the average professor earns more money in a year than a professional athlete earns in a whole week. -- Evan Esar --------------------------------------------------------------------- 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 -~----------~----~----~----~------~----~------~--~---
