diff options
-rw-r--r-- | lib/puppet/metatype/instances.rb | 5 | ||||
-rw-r--r-- | lib/puppet/server/servlet.rb | 15 | ||||
-rwxr-xr-x | test/types/type.rb | 14 |
3 files changed, 29 insertions, 5 deletions
diff --git a/lib/puppet/metatype/instances.rb b/lib/puppet/metatype/instances.rb index 9e953a1dd..a26c30686 100644 --- a/lib/puppet/metatype/instances.rb +++ b/lib/puppet/metatype/instances.rb @@ -24,9 +24,9 @@ class Puppet::Type raise Puppet::DevError, "must pass a Puppet::Type object" end - if exobj = @objects.has_key?(name) and self.isomorphic? + if exobj = @objects[name] and self.isomorphic? msg = "Object '%s[%s]' already exists" % - [name, newobj.class.name] + [newobj.class.name, name] if exobj.file and exobj.line msg += ("in file %s at line %s" % @@ -37,6 +37,7 @@ class Puppet::Type [object.file, object.line]) end error = Puppet::Error.new(msg) + raise error else #Puppet.info("adding %s of type %s to class list" % # [name,object.class]) diff --git a/lib/puppet/server/servlet.rb b/lib/puppet/server/servlet.rb index 136bbb933..d562078e1 100644 --- a/lib/puppet/server/servlet.rb +++ b/lib/puppet/server/servlet.rb @@ -137,16 +137,25 @@ class Server rescue Puppet::Error => detail #Puppet.warning obj.inspect #Puppet.warning args.inspect + if Puppet[:trace] + puts detail.backtrace + end Puppet.err detail.to_s - raise XMLRPC::FaultException.new( + error = XMLRPC::FaultException.new( 1, detail.to_s ) + error.set_backtrace = detail.backtrace + raise error rescue => detail #Puppet.warning obj.inspect #Puppet.warning args.inspect - puts detail.inspect + if Puppet[:trace] + puts detail.backtrace + end Puppet.err "Could not call: %s" % detail.to_s - raise XMLRPC::FaultException.new(1, detail.to_s) + error = XMLRPC::FaultException.new(1, detail.to_s) + error.set_backtrace detail.backtrace + raise error end } end diff --git a/test/types/type.rb b/test/types/type.rb index 2add25db3..2438503c8 100755 --- a/test/types/type.rb +++ b/test/types/type.rb @@ -784,6 +784,20 @@ end assert(hash[param], "Hash did not include %s" % param) end end + + # Make sure that classes behave like hashes. + def test_class_hash_behaviour + path = tempfile() + + filetype = Puppet::Type.type(:file) + one = Puppet::Type.newfile :path => path + + assert_equal(one, filetype[path], "Did not get file back") + + assert_raise(Puppet::Error) do + filetype[path] = one + end + end end # $Id$ |