From 5fb0ddcf78504ed8d5abda4fb16664e447160106 Mon Sep 17 00:00:00 2001 From: Hailee Kenney Date: Tue, 10 Jul 2012 15:24:33 -0700 Subject: (#2157) Make facts_dot_d compatible with external facts Since facts_dot_d will eventually be removed and replaced by external facts, warn users who are using a ttl on their external facts that this feature will not be in Facter external facts. Provide a link to a page explaining how to cache fact values without the ttl functionality. --- lib/facter/facter_dot_d.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/facter/facter_dot_d.rb b/lib/facter/facter_dot_d.rb index 3e528ab..c43801c 100644 --- a/lib/facter/facter_dot_d.rb +++ b/lib/facter/facter_dot_d.rb @@ -94,6 +94,7 @@ class Facter::Util::DotD cache_save! end else + Puppet.deprecation_warning("TTL for external facts is being removed. See http://links.puppetlabs.com/factercaching for more information.") Facter.debug("Using cached data for #{file}") end -- cgit v1.2.3 From 09322ad94398d69081aae44cc770830ac2144b75 Mon Sep 17 00:00:00 2001 From: Patrick Carlisle Date: Thu, 9 Aug 2012 14:18:30 -0700 Subject: Use rvalue functions correctly A bug fix in Puppet exposed that several tests were using rvalue functions incorrectly (this was not properly checked by puppet before). This fixes those tests. --- spec/unit/puppet/parser/functions/getvar_spec.rb | 14 +++++++++----- spec/unit/puppet/parser/functions/has_key_spec.rb | 22 ++++++++++++++++------ spec/unit/puppet/parser/functions/merge_spec.rb | 12 ++++++++---- 3 files changed, 33 insertions(+), 15 deletions(-) diff --git a/spec/unit/puppet/parser/functions/getvar_spec.rb b/spec/unit/puppet/parser/functions/getvar_spec.rb index 62ad192..a8aeec1 100644 --- a/spec/unit/puppet/parser/functions/getvar_spec.rb +++ b/spec/unit/puppet/parser/functions/getvar_spec.rb @@ -6,16 +6,20 @@ describe Puppet::Parser::Functions.function(:getvar) do describe 'when calling getvar from puppet' do it "should not compile when no arguments are passed" do - Puppet[:code] = 'getvar()' - expect { scope.compiler.compile }.should raise_error(Puppet::ParseError, /wrong number of arguments/) + Puppet[:code] = '$foo = getvar()' + expect { + scope.compiler.compile + }.to raise_error(Puppet::ParseError, /wrong number of arguments/) end + it "should not compile when too many arguments are passed" do - Puppet[:code] = 'getvar("foo::bar", "baz")' - expect { scope.compiler.compile }.should raise_error(Puppet::ParseError, /wrong number of arguments/) + Puppet[:code] = '$foo = getvar("foo::bar", "baz")' + expect { + scope.compiler.compile + }.to raise_error(Puppet::ParseError, /wrong number of arguments/) end it "should lookup variables in other namespaces" do - pending "Puppet doesn't appear to think getvar is an rvalue function... BUG?" Puppet[:code] = <<-'ENDofPUPPETcode' class site::data { $foo = 'baz' } include site::data diff --git a/spec/unit/puppet/parser/functions/has_key_spec.rb b/spec/unit/puppet/parser/functions/has_key_spec.rb index ae5baf7..b1eb0ff 100644 --- a/spec/unit/puppet/parser/functions/has_key_spec.rb +++ b/spec/unit/puppet/parser/functions/has_key_spec.rb @@ -6,22 +6,32 @@ describe Puppet::Parser::Functions.function(:has_key) do describe 'when calling has_key from puppet' do it "should not compile when no arguments are passed" do - Puppet[:code] = 'has_key()' - expect { scope.compiler.compile }.should raise_error(Puppet::ParseError, /wrong number of arguments/) + Puppet[:code] = '$x = has_key()' + expect { + scope.compiler.compile + }.to raise_error(Puppet::ParseError, /wrong number of arguments/) end + it "should not compile when 1 argument is passed" do - Puppet[:code] = "has_key('foo')" - expect { scope.compiler.compile }.should raise_error(Puppet::ParseError, /wrong number of arguments/) + Puppet[:code] = "$x = has_key('foo')" + expect { + scope.compiler.compile + }.to raise_error(Puppet::ParseError, /wrong number of arguments/) end + it "should require the first value to be a Hash" do - Puppet[:code] = "has_key('foo', 'bar')" - expect { scope.compiler.compile }.should raise_error(Puppet::ParseError, /expects the first argument to be a hash/) + Puppet[:code] = "$x = has_key('foo', 'bar')" + expect { + scope.compiler.compile + }.to raise_error(Puppet::ParseError, /expects the first argument to be a hash/) end end + describe 'when calling the function has_key from a scope instance' do it 'should detect existing keys' do scope.function_has_key([{'one' => 1}, 'one']).should be_true end + it 'should detect existing keys' do scope.function_has_key([{'one' => 1}, 'two']).should be_false end diff --git a/spec/unit/puppet/parser/functions/merge_spec.rb b/spec/unit/puppet/parser/functions/merge_spec.rb index 9e8a619..192da4c 100644 --- a/spec/unit/puppet/parser/functions/merge_spec.rb +++ b/spec/unit/puppet/parser/functions/merge_spec.rb @@ -7,12 +7,16 @@ describe Puppet::Parser::Functions.function(:merge) do describe 'when calling merge from puppet' do it "should not compile when no arguments are passed" do - Puppet[:code] = 'merge()' - expect { scope.compiler.compile }.should raise_error(Puppet::ParseError, /wrong number of arguments/) + Puppet[:code] = '$x = merge()' + expect { + scope.compiler.compile + }.to raise_error(Puppet::ParseError, /wrong number of arguments/) end it "should not compile when 1 argument is passed" do - Puppet[:code] = "$my_hash={'one' => 1}\nmerge($my_hash)" - expect { scope.compiler.compile }.should raise_error(Puppet::ParseError, /wrong number of arguments/) + Puppet[:code] = "$my_hash={'one' => 1}\n$x = merge($my_hash)" + expect { + scope.compiler.compile + }.to raise_error(Puppet::ParseError, /wrong number of arguments/) end end describe 'when calling merge on the scope instance' do -- cgit v1.2.3 From 424b56da616041e365cb471dafc05a3d7ade4e45 Mon Sep 17 00:00:00 2001 From: Patrick Carlisle Date: Thu, 9 Aug 2012 14:33:10 -0700 Subject: Make sure functions are loaded for each test The test_helper code in Puppet now resets function state between each test. This patch fixes two spec files where the function was not actually loaded in the tests, causing them to fail. --- spec/unit/puppet/parser/functions/validate_absolute_path_spec.rb | 8 ++++++-- spec/unit/puppet/parser/functions/validate_re_spec.rb | 4 +++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/spec/unit/puppet/parser/functions/validate_absolute_path_spec.rb b/spec/unit/puppet/parser/functions/validate_absolute_path_spec.rb index 9d66fcb..08aaf78 100644 --- a/spec/unit/puppet/parser/functions/validate_absolute_path_spec.rb +++ b/spec/unit/puppet/parser/functions/validate_absolute_path_spec.rb @@ -3,8 +3,12 @@ require 'spec_helper' describe Puppet::Parser::Functions.function(:validate_absolute_path) do let(:scope) { PuppetlabsSpec::PuppetInternals.scope } - # The subject of these examplres is the method itself. - subject() { scope.method(:function_validate_absolute_path) } + # The subject of these examples is the method itself. + subject do + # This makes sure the function is loaded within each test + function_name = Puppet::Parser::Functions.function(:validate_absolute_path) + scope.method(function_name) + end describe "Valid Paths" do def self.valid_paths diff --git a/spec/unit/puppet/parser/functions/validate_re_spec.rb b/spec/unit/puppet/parser/functions/validate_re_spec.rb index a07ad47..d189efb 100644 --- a/spec/unit/puppet/parser/functions/validate_re_spec.rb +++ b/spec/unit/puppet/parser/functions/validate_re_spec.rb @@ -5,7 +5,9 @@ describe Puppet::Parser::Functions.function(:validate_re) do # The subject of these examplres is the method itself. subject do - scope.method :function_validate_re + # This makes sure the function is loaded within each test + function_name = Puppet::Parser::Functions.function(:validate_re) + scope.method(function_name) end context 'Using Puppet::Parser::Scope.new' do -- cgit v1.2.3