diff options
author | Markus Roberts <Markus@reality.com> | 2009-11-09 15:10:46 -0800 |
---|---|---|
committer | James Turnbull <james@lovedthanlost.net> | 2009-11-12 21:18:59 +1100 |
commit | 3fdc8effbe25c9653d8bc86f2d4847984d4cb6f3 (patch) | |
tree | 562a8e07ac615b3eddf7a0afc1e350abd6d986a7 | |
parent | b1722871ec27aa451be17e6fe6e099cc2f35cf7b (diff) | |
download | puppet-3fdc8effbe25c9653d8bc86f2d4847984d4cb6f3.tar.gz puppet-3fdc8effbe25c9653d8bc86f2d4847984d4cb6f3.tar.xz puppet-3fdc8effbe25c9653d8bc86f2d4847984d4cb6f3.zip |
Ticket #2770 (deserializing Exec[...]s with "\n"s)
The resource reference logic wasn't handling resources with "\n"s
in their namevars gracefully, and detection of this was complicated
by infelicitous exception reporting.
Note that this patch will require a merge when combined with the
patch for #2657.
Signed-off-by: Markus Roberts <Markus@reality.com>
-rw-r--r-- | lib/puppet/external/pson/pure.rb | 4 | ||||
-rw-r--r-- | lib/puppet/resource/catalog.rb | 4 | ||||
-rw-r--r-- | lib/puppet/resource/reference.rb | 2 |
3 files changed, 5 insertions, 5 deletions
diff --git a/lib/puppet/external/pson/pure.rb b/lib/puppet/external/pson/pure.rb index 43f39b2a6..7bb18aa70 100644 --- a/lib/puppet/external/pson/pure.rb +++ b/lib/puppet/external/pson/pure.rb @@ -11,8 +11,8 @@ module PSON UTF8toUTF16 = Iconv.new('utf-16be', 'utf-8') # :nodoc: UTF8toUTF16.iconv('no bom') rescue LoadError - raise MissingUnicodeSupport, - "iconv couldn't be loaded, which is required for UTF-8/UTF-16 conversions" + # We actually don't care + Puppet.warning "iconv couldn't be loaded, which is required for UTF-8/UTF-16 conversions" rescue Errno::EINVAL, Iconv::InvalidEncoding # Iconv doesn't support big endian utf-16. Let's try to hack this manually # into the converters. diff --git a/lib/puppet/resource/catalog.rb b/lib/puppet/resource/catalog.rb index 5bf9a8368..09c099418 100644 --- a/lib/puppet/resource/catalog.rb +++ b/lib/puppet/resource/catalog.rb @@ -430,12 +430,12 @@ class Puppet::Resource::Catalog < Puppet::SimpleGraph # the class. edge = Puppet::Relationship.from_pson(edge) if edge.is_a?(Hash) unless source = result.resource(edge.source) - raise ArgumentError, "Could not convert from pson: Could not find relationship source '%s'" % source + raise ArgumentError, "Could not convert from pson: Could not find relationship source #{edge.source.inspect}" end edge.source = source unless target = result.resource(edge.target) - raise ArgumentError, "Could not convert from pson: Could not find relationship target '%s'" % target + raise ArgumentError, "Could not convert from pson: Could not find relationship target #{edge.target.inspect}" end edge.target = target diff --git a/lib/puppet/resource/reference.rb b/lib/puppet/resource/reference.rb index c205f1038..37522ffe9 100644 --- a/lib/puppet/resource/reference.rb +++ b/lib/puppet/resource/reference.rb @@ -50,7 +50,7 @@ class Puppet::Resource::Reference # If the title has square brackets, treat it like a reference and # set things appropriately; else, just set it. def title=(value) - if value =~ /^([^\[\]]+)\[(.+)\]$/ + if value =~ /^([^\[\]]+)\[(.+)\]$/m self.type = $1 @title = $2 else |