summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Roberts <Markus@reality.com>2009-11-09 15:10:46 -0800
committerJames Turnbull <james@lovedthanlost.net>2009-11-12 21:18:59 +1100
commit3fdc8effbe25c9653d8bc86f2d4847984d4cb6f3 (patch)
tree562a8e07ac615b3eddf7a0afc1e350abd6d986a7
parentb1722871ec27aa451be17e6fe6e099cc2f35cf7b (diff)
downloadpuppet-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.rb4
-rw-r--r--lib/puppet/resource/catalog.rb4
-rw-r--r--lib/puppet/resource/reference.rb2
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