[Pkg-puppet-devel] [SCM] Puppet packaging for Debian branch, upstream, updated. 0.25.5-639-g8f94f35

Luke Kanies luke at puppetlabs.com
Wed Jul 14 10:32:17 UTC 2010


The following commit has been merged in the upstream branch:
commit b643413da520fabb7ee81e8c710e30f43bc1475b
Author: Luke Kanies <luke at puppetlabs.com>
Date:   Fri Apr 9 16:02:32 2010 -0700

    Removing any mentions of :casesensitive setting
    
    It is a setting that was added years ago as a backward
    compatibility option and even if it still works, which
    is questionable, it has no purpose any longer.
    
    It just complicated the code and didn't do much, so it's gone
    now.
    
    Also simplified the interface of Leaf#evaluate_match, since it
    was now using none of the passed-in options.
    
    Finally, removed/migrated the last of the Selector/CaseStatement
    test/unit tests.
    
    Signed-off-by: Luke Kanies <luke at puppetlabs.com>

diff --git a/lib/puppet/defaults.rb b/lib/puppet/defaults.rb
index fa1b31c..2f397f4 100644
--- a/lib/puppet/defaults.rb
+++ b/lib/puppet/defaults.rb
@@ -707,10 +707,6 @@ module Puppet
     )
 
     setdefaults(:main,
-        :casesensitive => [false,
-            "Whether matching in case statements and selectors
-            should be case-sensitive.  Case insensitivity is
-            handled by downcasing all values before comparison."],
         :external_nodes => ["none",
             "An external command that can produce node information.  The output
             must be a YAML dump of a hash, and that hash must have one or both of
diff --git a/lib/puppet/parser/ast/casestatement.rb b/lib/puppet/parser/ast/casestatement.rb
index 64298ca..720ef24 100644
--- a/lib/puppet/parser/ast/casestatement.rb
+++ b/lib/puppet/parser/ast/casestatement.rb
@@ -20,7 +20,7 @@ class Puppet::Parser::AST
             default = nil
             @options.each do |option|
                 option.eachopt do |opt|
-                    return option.safeevaluate(scope) if opt.evaluate_match(value, scope, :file => file, :line => line, :sensitive => Puppet[:casesensitive])
+                    return option.safeevaluate(scope) if opt.evaluate_match(value, scope)
                 end
 
                 default = option if option.default?
diff --git a/lib/puppet/parser/ast/leaf.rb b/lib/puppet/parser/ast/leaf.rb
index caf1d13..30c4a95 100644
--- a/lib/puppet/parser/ast/leaf.rb
+++ b/lib/puppet/parser/ast/leaf.rb
@@ -11,12 +11,12 @@ class Puppet::Parser::AST
         end
 
         # evaluate ourselves, and match
-        def evaluate_match(value, scope, options = {})
+        def evaluate_match(value, scope)
             obj = self.safeevaluate(scope)
-            if options[:sensitive]
-                obj   = obj.downcase   if obj.respond_to?(:downcase)
-                value = value.downcase if value.respond_to?(:downcase)
-            end
+
+            obj   = obj.downcase   if obj.respond_to?(:downcase)
+            value = value.downcase if value.respond_to?(:downcase)
+
             # "" == undef for case/selector/if
             obj == value or (obj == "" and value == :undef)
         end
diff --git a/lib/puppet/parser/ast/selector.rb b/lib/puppet/parser/ast/selector.rb
index ce834b6..d27773c 100644
--- a/lib/puppet/parser/ast/selector.rb
+++ b/lib/puppet/parser/ast/selector.rb
@@ -15,8 +15,6 @@ class Puppet::Parser::AST
             # Get our parameter.
             paramvalue = @param.safeevaluate(scope)
 
-            sensitive = Puppet[:casesensitive]
-
             default = nil
 
             unless @values.instance_of? AST::ASTArray or @values.instance_of? Array
@@ -26,7 +24,7 @@ class Puppet::Parser::AST
             # Then look for a match in the options.
             @values.each do |obj|
                 # short circuit asap if we have a match
-                return obj.value.safeevaluate(scope) if obj.param.evaluate_match(paramvalue, scope, :file => file, :line => line, :sensitive => sensitive)
+                return obj.value.safeevaluate(scope) if obj.param.evaluate_match(paramvalue, scope)
 
                 # Store the default, in case it's necessary.
                 default = obj if obj.param.is_a?(Default)
diff --git a/spec/unit/parser/ast/casestatement.rb b/spec/unit/parser/ast/casestatement.rb
index 657648e..c2e9a69 100755
--- a/spec/unit/parser/ast/casestatement.rb
+++ b/spec/unit/parser/ast/casestatement.rb
@@ -57,13 +57,6 @@ describe Puppet::Parser::AST::CaseStatement do
                 @casestmt.evaluate(@scope)
             end
 
-            it "should evaluate_match with sensitive parameter" do
-                Puppet.stubs(:[]).with(:casesensitive).returns(true)
-                @opval1.expects(:evaluate_match).with { |*arg| arg[2][:sensitive] == true }
-
-                @casestmt.evaluate(@scope)
-            end
-
             it "should return the first matching evaluated option" do
                 @opval2.stubs(:evaluate_match).with { |*arg| arg[0] == "value" }.returns(true)
                 @option2.stubs(:safeevaluate).with(@scope).returns(:result)
@@ -130,4 +123,35 @@ describe Puppet::Parser::AST::CaseStatement do
         end
 
     end
+
+    it "should match if any of the provided options evaluate as true" do
+        ast = nil
+        AST = Puppet::Parser::AST
+
+        tests = {
+            "one" => %w{a b c},
+            "two" => %w{e f g}
+        }
+        options = tests.collect do |result, values|
+            values = values.collect { |v| AST::Leaf.new :value => v }
+            AST::CaseOpt.new(:value => AST::ASTArray.new(:children => values),
+                :statements => AST::Leaf.new(:value => result))
+        end
+        options << AST::CaseOpt.new(:value => AST::Default.new(:value => "default"),
+            :statements => AST::Leaf.new(:value => "default"))
+
+        ast = nil
+        param = AST::Variable.new(:value => "testparam")
+        ast = AST::CaseStatement.new(:test => param, :options => options)
+
+        tests.each do |should, values|
+            values.each do |value|
+                @scope = Puppet::Parser::Scope.new()
+                @scope.setvar("testparam", value)
+                result = ast.evaluate(@scope)
+
+                result.should == should
+            end
+        end
+    end
 end
diff --git a/spec/unit/parser/ast/leaf.rb b/spec/unit/parser/ast/leaf.rb
index 2bb3747..d5534de 100755
--- a/spec/unit/parser/ast/leaf.rb
+++ b/spec/unit/parser/ast/leaf.rb
@@ -32,7 +32,7 @@ describe Puppet::Parser::AST::Leaf do
             @leaf.stubs(:safeevaluate).with(@scope).returns(@value)
             @value.expects(:downcase).returns("value")
 
-            @leaf.evaluate_match("value", @scope, :sensitive => true)
+            @leaf.evaluate_match("value", @scope)
         end
 
         it "should match undef if value is an empty string" do
@@ -45,7 +45,7 @@ describe Puppet::Parser::AST::Leaf do
             parameter = stub 'parameter'
             parameter.expects(:downcase).returns("value")
 
-            @leaf.evaluate_match(parameter, @scope, :sensitive => true)
+            @leaf.evaluate_match(parameter, @scope)
         end
     end
 
diff --git a/spec/unit/parser/ast/selector.rb b/spec/unit/parser/ast/selector.rb
index f9a1efe..23989b9 100755
--- a/spec/unit/parser/ast/selector.rb
+++ b/spec/unit/parser/ast/selector.rb
@@ -86,22 +86,6 @@ describe Puppet::Parser::AST::Selector do
                 @selector.evaluate(@scope)
             end
 
-            it "should transmit the sensitive parameter to evaluate_match" do
-                Puppet.stubs(:[]).with(:casesensitive).returns(:sensitive)
-                @param1.expects(:evaluate_match).with { |*arg| arg[2][:sensitive] == :sensitive }
-
-                @selector.evaluate(@scope)
-            end
-
-            it "should transmit the AST file and line to evaluate_match" do
-                @selector.file = :file
-                @selector.line = :line
-                @param1.expects(:evaluate_match).with { |*arg| arg[2][:file] == :file and arg[2][:line] == :line }
-
-                @selector.evaluate(@scope)
-            end
-
-
             it "should evaluate the matching param" do
                 @param1.stubs(:evaluate_match).with { |*arg| arg[0] == "value" and arg[1] == @scope }.returns(true)
 
diff --git a/test/language/ast/casestatement.rb b/test/language/ast/casestatement.rb
deleted file mode 100755
index 2711455..0000000
--- a/test/language/ast/casestatement.rb
+++ /dev/null
@@ -1,103 +0,0 @@
-#!/usr/bin/env ruby
-#
-#  Created by Luke A. Kanies on 2006-12-22.
-#  Copyright (c) 2006. All rights reserved.
-
-require File.dirname(__FILE__) + '/../../lib/puppettest'
-
-require 'puppettest'
-require 'puppettest/parsertesting'
-
-class TestCaseStatement < Test::Unit::TestCase
-    include PuppetTest
-    include PuppetTest::ParserTesting
-    AST = Puppet::Parser::AST
-
-    class ActiveAST < FakeAST
-        def self.clear
-            $evaluated = []
-        end
-        def evaluate
-            $evaluated ||= []
-            $evaluated << @evaluate
-        end
-    end
-
-    def test_evaluate
-        ast = nil
-        scope = mkscope
-        param = nameobj("MyParam")
-
-        hash = {
-            "myparam" => ActiveAST.new("lower"),
-            "MyParam" => ActiveAST.new("upper"),
-            true => ActiveAST.new(true)
-        }
-        options = ["myparam", "MyParam"].collect do |p|
-            AST::CaseOpt.new(:value => FakeAST.new(p), :statements => hash[p])
-        end
-        assert_nothing_raised do
-            ast = AST::CaseStatement.new(:test => param, :options => options)
-        end
-
-        # Start out case-sensitive
-        Puppet[:casesensitive] = true
-
-        result = nil
-        assert_nothing_raised do
-            result = ast.evaluate scope
-        end
-        assert(result, "did not get valid result")
-        assert_equal(["upper"], $evaluated, "Did not match case-sensitively")
-        assert(! hash["myparam"].evaluated?, "lower value was evaluated even though it did not match")
-
-        # Now try it case-insensitive
-        Puppet[:casesensitive] = false
-        $evaluated.clear
-        hash["MyParam"].reset
-        assert_nothing_raised do
-            result = ast.evaluate scope
-        end
-        assert(result, "did not get valid result")
-        assert_equal(["lower"], result, "Did not match case-insensitively")
-        assert(! hash["MyParam"].evaluated?, "upper value was evaluated even though it did not match")
-    end
-
-    # #522 - test that case statements with multiple values work as
-    # expected, where any true value suffices.
-    def test_multiple_values
-        ast = nil
-
-        tests = {
-            "one" => %w{a b c},
-            "two" => %w{e f g}
-        }
-        options = tests.collect do |result, values|
-            values = values.collect { |v| AST::Leaf.new :value => v }
-            AST::CaseOpt.new(:value => AST::ASTArray.new(:children => values),
-                :statements => AST::Leaf.new(:value => result))
-        end
-        options << AST::CaseOpt.new(:value => AST::Default.new(:value => "default"),
-            :statements => AST::Leaf.new(:value => "default"))
-
-        ast = nil
-        param = AST::Variable.new(:value => "testparam")
-        assert_nothing_raised do
-            ast = AST::CaseStatement.new(:test => param, :options => options)
-        end
-        result = nil
-        tests.each do |should, values|
-            values.each do |value|
-                result = nil
-                scope = mkscope
-                scope.setvar("testparam", value)
-                assert_nothing_raised do
-                    result = ast.evaluate(scope)
-                end
-
-                assert_equal(should, result, "Got incorrect result for %s" % value)
-            end
-        end
-    end
-end
-
diff --git a/test/language/ast/selector.rb b/test/language/ast/selector.rb
deleted file mode 100755
index d2b1622..0000000
--- a/test/language/ast/selector.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/usr/bin/env ruby
-#
-#  Created by Luke A. Kanies on 2006-12-22.
-#  Copyright (c) 2006. All rights reserved.
-
-require File.dirname(__FILE__) + '/../../lib/puppettest'
-
-require 'puppettest'
-require 'puppettest/parsertesting'
-
-class TestSelector < Test::Unit::TestCase
-    include PuppetTest
-    include PuppetTest::ParserTesting
-    AST = Puppet::Parser::AST
-
-    def test_evaluate
-        scope = mkscope
-        upperparam = nameobj("MYPARAM")
-        lowerparam = nameobj("myparam")
-
-        should = {"MYPARAM" => "upper", "myparam" => "lower"}
-
-        maker = Proc.new do
-            {
-            :default => AST::ResourceParam.new(:param => AST::Default.new(:value => "default"), :value => FakeAST.new("default")),
-            :lower => AST::ResourceParam.new(:param => FakeAST.new("myparam"), :value => FakeAST.new("lower")),
-            :upper => AST::ResourceParam.new(:param => FakeAST.new("MYPARAM"), :value => FakeAST.new("upper")),
-            }
-
-        end
-
-        # Start out case-sensitive
-        Puppet[:casesensitive] = true
-
-        %w{MYPARAM myparam}.each do |str|
-            param = nameobj(str)
-            params = maker.call()
-            sel = AST::Selector.new(:param => param, :values => params.values)
-            result = nil
-            assert_nothing_raised { result = sel.evaluate(scope) }
-            assert_equal(should[str], result, "did not case-sensitively match %s" % str)
-        end
-
-        # then insensitive
-        Puppet[:casesensitive] = false
-
-        %w{MYPARAM myparam}.each do |str|
-            param = nameobj(str)
-            params = maker.call()
-
-            # Delete the upper value, since we don't want it to match
-            # and it introduces a hash-ordering bug in testing.
-            params.delete(:upper)
-            sel = AST::Selector.new(:param => param, :values => params.values)
-            result = nil
-            assert_nothing_raised { result = sel.evaluate(scope) }
-            assert_equal("lower", result, "did not case-insensitively match %s" % str)
-        end
-    end
-end
-

-- 
Puppet packaging for Debian



More information about the Pkg-puppet-devel mailing list