summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG2
-rw-r--r--lib/puppet/parser/templatewrapper.rb3
-rwxr-xr-xspec/unit/parser/templatewrapper.rb15
3 files changed, 18 insertions, 2 deletions
diff --git a/CHANGELOG b/CHANGELOG
index abd185663..1046384c5 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,4 +1,6 @@
0.24.6
+ Fixed #1663 - Regression relating to facter fact naming from 0.24.5
+
Fixed #1655 - Provider::Confine::Variable tests are broken
Fixed #1646 - service puppet status does not work as non-root
diff --git a/lib/puppet/parser/templatewrapper.rb b/lib/puppet/parser/templatewrapper.rb
index fc716b0fd..824fc48ef 100644
--- a/lib/puppet/parser/templatewrapper.rb
+++ b/lib/puppet/parser/templatewrapper.rb
@@ -78,7 +78,8 @@ class Puppet::Parser::TemplateWrapper
# to the regular methods.
benchmark(:debug, "Bound template variables for #{file}") do
scope.to_hash.each { |name, value|
- instance_variable_set("@#{name}", value)
+ realname = name.gsub(/[^\w]/, "_")
+ instance_variable_set("@#{realname}", value)
}
end
diff --git a/spec/unit/parser/templatewrapper.rb b/spec/unit/parser/templatewrapper.rb
index 20ea76921..a8c464771 100755
--- a/spec/unit/parser/templatewrapper.rb
+++ b/spec/unit/parser/templatewrapper.rb
@@ -78,5 +78,18 @@ describe Puppet::Parser::TemplateWrapper do
@tw.result
@tw.instance_variable_get("@one").should == "foo"
- end
+ end
+
+ %w{! . ; :}.each do |badchar|
+ it "should translate #{badchar} to _ when setting the instance variables" do
+ template_mock = mock("template", :result => "woot!")
+ File.expects(:read).with("/tmp/fake_template").returns("template contents")
+ ERB.expects(:new).with("template contents", 0, "-").returns(template_mock)
+
+ @scope.expects(:to_hash).returns("one#{badchar}" => "foo")
+ @tw.result
+
+ @tw.instance_variable_get("@one_").should == "foo"
+ end
+ end
end