fixed bug that caused a parse-error on lines containing = ( closes #1 )
authorl <technik@omc.net>
Fri, 24 Jun 2011 10:25:58 +0000 (12:25 +0200)
committerl <technik@omc.net>
Fri, 24 Jun 2011 10:25:58 +0000 (12:25 +0200)
lib/puppet/provider/sudoers/parsed.rb
spec/unit/provider/sudoers/parsed_spec.rb

index 750d009..9c79788 100644 (file)
@@ -45,7 +45,7 @@ Puppet::Type.type(:sudoers).provide(
       elsif (hash[:line] =~ /^\s*(Defaults\S*)\s*(.*)$/)
         Puppet.debug("parsed line as Defaults")
         parsed.parse_defaults($1, $2, hash)
-      elsif (hash[:line] =~ /^\s*(.*)?=(.*)$/)
+      elsif (hash[:line] =~ /^\s*(.*?)?=(.*)$/)
         Puppet.debug("parsed line as User Spec")
         parsed.parse_user_spec($1, $2, hash)
       else 
index 1bcdfae..28ab80d 100644 (file)
@@ -115,5 +115,18 @@ describe Puppet::Type.type(:sudoers).provider(:parsed) do
   # test to_line
 
   end
+  
+  context "failing for commands containing =",:issue => 1 do
+    before do
+      @init_records = {:type => 'user_spec'} 
+    end
+
+    it "can parse users and hosts for lines containing =" do
+      line = "root ALL=(ALL) NOPASSWD: /bin/grep --color=auto example /var/log/messages"
+      lambda{ 
+        @provider.parse_line(line)
+      }.should_not raise_error
+    end
+  end
 end