[Pkg-puppet-devel] [SCM] Puppet packaging for Debian branch, experimental, updated. debian/2.6.8-1-844-g7ec39d5

Jesse Wolfe jes5199 at gmail.com
Tue May 10 07:59:19 UTC 2011


The following commit has been merged in the experimental branch:
commit 7bdbd132634f61d91aeee401de15248d936ce71e
Merge: 163ec172e06a2b8aab9f9c9247dd45bc0dea3f72 917c520f1abc0c72d7065531cffcef88259e32e0
Author: Jesse Wolfe <jes5199 at gmail.com>
Date:   Mon Oct 4 20:11:56 2010 -0700

    Merge commit '2.6.2rc1' into next

diff --combined lib/puppet/util/zaml.rb
index b60e639,64c58f9..ae4da86
--- a/lib/puppet/util/zaml.rb
+++ b/lib/puppet/util/zaml.rb
@@@ -29,8 -29,7 +29,8 @@@ class ZAM
      @result = []
      @indent = nil
      @structured_key_prefix = nil
 -    Label.counter_reset
 +    @previously_emitted_object = {}
 +    @next_free_label_number = 0
      emit('--- ')
    end
    def nested(tail='  ')
@@@ -56,29 -55,31 +56,29 @@@
      #    which we will encounter a reference to the object as we serialize
      #    it can be handled).
      #
 -    def self.counter_reset
 -      @@previously_emitted_object = {}
 -      @@next_free_label_number = 0
 -    end
 +    attr_accessor :this_label_number
      def initialize(obj,indent)
        @indent = indent
        @this_label_number = nil
 -      @@previously_emitted_object[obj.object_id] = self
      end
      def to_s
        @this_label_number ? ('&id%03d%s' % [@this_label_number, @indent]) : ''
      end
      def reference
 -      @this_label_number ||= (@@next_free_label_number += 1)
        @reference         ||= '*id%03d' % @this_label_number
      end
 -    def self.for(obj)
 -      @@previously_emitted_object[obj.object_id]
 -    end
 +  end
 +  def label_for(obj)
 +    @previously_emitted_object[obj.object_id]
    end
    def new_label_for(obj)
 -    Label.new(obj,(Hash === obj || Array === obj) ? "#{@indent || "\n"}  " : ' ')
 +    label = Label.new(obj,(Hash === obj || Array === obj) ? "#{@indent || "\n"}  " : ' ')
 +    @previously_emitted_object[obj.object_id] = label
 +    label
    end
    def first_time_only(obj)
 -    if label = Label.for(obj)
 +    if label = label_for(obj)
 +      label.this_label_number ||= (@next_free_label_number += 1)
        emit(label.reference)
      else
        if @structured_key_prefix and not obj.is_a? String
@@@ -242,7 -243,6 +242,6 @@@ class Strin
          when self =~ /\n/
            if self[-1..-1] == "\n" then z.emit('|+') else z.emit('|-') end
            z.nested { split("\n",-1).each { |line| z.nl; z.emit(line.chomp("\n")) } }
-           z.nl
          else
            z.emit(self)
        end
diff --combined spec/integration/parser/compiler_spec.rb
index df310ac,f80221e..f731692
--- a/spec/integration/parser/compiler_spec.rb
+++ b/spec/integration/parser/compiler_spec.rb
@@@ -27,6 -27,27 +27,27 @@@ describe Puppet::Parser::Compiler d
      @compiler.catalog.version.should == version
    end
  
+   it "should not create duplicate resources when a class is referenced both directly and indirectly by the node classifier (4792)" do
+     Puppet[:code] = <<-PP
+       class foo
+       {
+         notify { foo_notify: }
+         include bar
+       }
+       class bar
+       {
+         notify { bar_notify: }
+       }
+     PP
+ 
+     @node.stubs(:classes).returns(['foo', 'bar'])
+ 
+     catalog = Puppet::Parser::Compiler.compile(@node)
+ 
+     catalog.resource("Notify[foo_notify]").should_not be_nil
+     catalog.resource("Notify[bar_notify]").should_not be_nil
+   end
+ 
    describe "when resolving class references" do
      it "should favor local scope, even if there's an included class in topscope" do
        Puppet[:code] = <<-PP
@@@ -69,45 -90,4 +90,45 @@@
        notify_resource[:require].title.should == "Experiment::Baz"
      end
    end
 +
 +  it "should recompute the version after input files are re-parsed" do
 +    Puppet[:code] = 'class foo { }'
 +    Time.stubs(:now).returns(1)
 +    node = Puppet::Node.new('mynode')
 +    Puppet::Parser::Compiler.compile(node).version.should == 1
 +    Time.stubs(:now).returns(2)
 +    Puppet::Parser::Compiler.compile(node).version.should == 1 # no change because files didn't change
 +    Puppet::Resource::TypeCollection.any_instance.stubs(:stale?).returns(true).then.returns(false) # pretend change
 +    Puppet::Parser::Compiler.compile(node).version.should == 2
 +  end
 +
 +  ['class', 'define', 'node'].each do |thing|
 +    it "should not allow #{thing} inside evaluated conditional constructs" do
 +      Puppet[:code] = <<-PP
 +        if true {
 +          #{thing} foo {
 +          }
 +          notify { decoy: }
 +        }
 +      PP
 +
 +      begin
 +        Puppet::Parser::Compiler.compile(Puppet::Node.new("mynode"))
 +        raise "compilation should have raised Puppet::Error"
 +      rescue Puppet::Error => e
 +        e.message.should =~ /at line 2/
 +      end
 +    end
 +  end
 +
 +  it "should not allow classes inside unevaluated conditional constructs" do
 +    Puppet[:code] = <<-PP
 +      if false {
 +        class foo {
 +        }
 +      }
 +    PP
 +
 +    lambda { Puppet::Parser::Compiler.compile(Puppet::Node.new("mynode")) }.should raise_error(Puppet::Error)
 +  end
  end
diff --combined spec/unit/util/zaml_spec.rb
index 14cf94f,f2bcefe..b223f89
mode 100644,100755..100755
--- a/spec/unit/util/zaml_spec.rb
+++ b/spec/unit/util/zaml_spec.rb
@@@ -11,7 -11,8 +11,8 @@@ describe "Pure ruby yaml implementation
    'test'       => "--- test",
    []           => "--- []",
    :symbol      => "--- !ruby/sym symbol",
-   {:a => "A"}  => "--- \n  !ruby/sym a: A"
+   {:a => "A"}  => "--- \n  !ruby/sym a: A",
+   {:a => "x\ny"} => "--- \n  !ruby/sym a: |-\n    x\n    y" 
    }.each { |o,y|
      it "should convert the #{o.class} #{o.inspect} to yaml" do
        o.to_yaml.should == y
@@@ -34,30 -35,5 +35,30 @@@
        lambda { YAML.load(o.to_yaml) }.should_not raise_error
      end
    }
 +
 +  it "should emit proper labels and backreferences for common objects" do
 +    # Note: this test makes assumptions about the names ZAML chooses
 +    # for labels.
 +    x = [1, 2]
 +    y = [3, 4]
 +    z = [x, y, x, y]
 +    z.to_yaml.should == "--- \n  - &id001\n    - 1\n    - 2\n  - &id002\n    - 3\n    - 4\n  - *id001\n  - *id002"
 +    z2 = YAML.load(z.to_yaml)
 +    z2.should == z
 +    z2[0].should equal(z2[2])
 +    z2[1].should equal(z2[3])
 +  end
 +
 +  it "should emit proper labels and backreferences for recursive objects" do
 +    x = [1, 2]
 +    x << x
 +    x.to_yaml.should == "--- &id001\n  \n  - 1\n  - 2\n  - *id001"
 +    x2 = YAML.load(x.to_yaml)
 +    x2.should be_a(Array)
 +    x2.length.should == 3
 +    x2[0].should == 1
 +    x2[1].should == 2
 +    x2[2].should equal(x2)
 +  end
  end
  

-- 
Puppet packaging for Debian



More information about the Pkg-puppet-devel mailing list