From be2b1f360fc15596098280265e6aa76e8043eb92 Mon Sep 17 00:00:00 2001 From: Matt Robinson Date: Mon, 26 Jul 2010 19:34:27 -0700 Subject: [#4370] Fixes extlookup precedence getting overwritten between runs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We found the gsub! in extlookup was actually modifying the value for extlookup_precedence, so the next node to call it just got the interpolated value from the first run. We did two things in the code to prevent this: 1. We returned a dup of the ast string object so that modifying it wouldn’t change puppet’s state. We didn’t do this for all possible return values because we depend on using the original ast array object to do array concatenation 2. We fixed extlookup to not do a destructive gsub Reviewed by: Jesse Wolfe --- spec/unit/parser/ast/leaf_spec.rb | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'spec/unit/parser/ast') diff --git a/spec/unit/parser/ast/leaf_spec.rb b/spec/unit/parser/ast/leaf_spec.rb index 5bdca67fa..eb71f0d37 100755 --- a/spec/unit/parser/ast/leaf_spec.rb +++ b/spec/unit/parser/ast/leaf_spec.rb @@ -47,6 +47,10 @@ describe Puppet::Parser::AST::String do value = stub 'value', :is_a? => true, :to_s => "ab" Puppet::Parser::AST::String.new( :value => value ).to_s.should == "\"ab\"" end + it "should return a dup of its value" do + value = "" + Puppet::Parser::AST::String.new( :value => value ).evaluate(stub 'scope').should_not be_equal(value) + end end end -- cgit