The #2627 fix was modifying nodename in case of string nodename, but
was removing '_'. Since underscores is a valid character in a class
name, we now allow it.

Signed-off-by: Brice Figureau <[email protected]>
---
 lib/puppet/parser/ast/leaf.rb |    2 +-
 spec/unit/parser/ast/leaf.rb  |   10 ++++++++++
 2 files changed, 11 insertions(+), 1 deletions(-)

diff --git a/lib/puppet/parser/ast/leaf.rb b/lib/puppet/parser/ast/leaf.rb
index 2f00ea7..153120a 100644
--- a/lib/puppet/parser/ast/leaf.rb
+++ b/lib/puppet/parser/ast/leaf.rb
@@ -102,7 +102,7 @@ class Puppet::Parser::AST
         end
 
         def to_classname
-            to_s.downcase.gsub(/[^-a-zA-Z0-9:.]/,'').sub(/^\.+/,'')
+            to_s.downcase.gsub(/[^-\w:.]/,'').sub(/^\.+/,'')
         end
 
         # implementing eql? and hash so that when an HostName is stored
diff --git a/spec/unit/parser/ast/leaf.rb b/spec/unit/parser/ast/leaf.rb
index 69b704a..e968150 100755
--- a/spec/unit/parser/ast/leaf.rb
+++ b/spec/unit/parser/ast/leaf.rb
@@ -195,6 +195,16 @@ describe Puppet::Parser::AST::HostName do
         host.to_classname.should == "klassname"
     end
 
+    it "should preserve '_' in to_classname with a string nodename" do
+        host = Puppet::Parser::AST::HostName.new( :value => 
"node_with_underscore")
+        host.to_classname.should == "node_with_underscore"
+    end
+
+    it "should preserve '_' in to_classname with a regex nodename" do
+        host = Puppet::Parser::AST::HostName.new( :value => 
Puppet::Parser::AST::Regex.new(:value => "/\dnode_with_underscore\.+/") )
+        host.to_classname.should == "dnode_with_underscore."
+    end
+
     it "should return a string usable as classname when calling to_classname" 
do
         host = Puppet::Parser::AST::HostName.new( :value => 
Puppet::Parser::AST::Regex.new(:value => "/^this-is n...@a classname$/") )
         host.to_classname.should == "this-isnotaclassname"
-- 
1.6.4


--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to