From 1ebfa5daea65a7ccb5e17c1d1021567c91ed580b Mon Sep 17 00:00:00 2001 From: Jeff McCune Date: Thu, 10 May 2012 22:01:40 -0700 Subject: [PATCH 1/4] Fix spec tests using the new spec_helper This patch back ports the file from the master branch. The spec tests fail without this patch applied. This should make it easier to setup Puppet settings using the puppet_spec_helper project. --- spec/spec_helper.rb | 73 ++++----------------------------------------- 1 file changed, 5 insertions(+), 68 deletions(-) diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 0f3248b..f64fcba 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -10,90 +10,27 @@ require 'mocha' gem 'rspec', '>=2.0.0' require 'rspec/expectations' + # So everyone else doesn't have to include this base constant. module PuppetSpec FIXTURE_DIR = File.join(dir = File.expand_path(File.dirname(__FILE__)), "fixtures") unless defined?(FIXTURE_DIR) end -require 'pathname' -require 'tmpdir' - -require 'puppet_spec/verbose' +# TODO: ultimately would like to move these requires into the puppet_spec_helper.rb file, but the namespaces +# are not currently the same between the two, so tests would need to be modified. Not ready to undertake that +# just yet. require 'puppet_spec/files' -require 'puppet_spec/fixtures' -require 'puppet_spec/matchers' -require 'monkey_patches/alias_should_to_must' -require 'monkey_patches/publicize_methods' -# JJM Hack to make the stdlib tests run in Puppet 2.6 (See puppet commit cf183534) -if not Puppet.constants.include? "Test" then - module Puppet::Test - class LogCollector - def initialize(logs) - @logs = logs - end +require 'puppet_spec_helper' - def <<(value) - @logs << value - end - end - end - Puppet::Util::Log.newdesttype :log_collector do - match "Puppet::Test::LogCollector" - - def initialize(messages) - @messages = messages - end - - def handle(msg) - @messages << msg - end - end -end - -Pathname.glob("#{dir}/shared_behaviours/**/*.rb") do |behaviour| - require behaviour.relative_path_from(Pathname.new(dir)) -end RSpec.configure do |config| - include PuppetSpec::Fixtures - - config.mock_with :mocha config.before :each do GC.disable - - - # REVISIT: I think this conceals other bad tests, but I don't have time to - # fully diagnose those right now. When you read this, please come tell me - # I suck for letting this float. --daniel 2011-04-21 - Signal.stubs(:trap) - - # We're using send because this is a private method to communicate it - # should only be used for tests. Puppet 2.6.x does not have the method. - Puppet.settings.send(:initialize_everything_for_tests) unless Puppet.version =~ /^2\.6/ - - - @logs = [] - Puppet::Util::Log.newdestination(Puppet::Test::LogCollector.new(@logs)) - - @log_level = Puppet::Util::Log.level end config.after :each do - # We're using send because this is a private method to communicate it - # should only be used for tests. Puppet 2.6.x does not have the method. - Puppet.settings.send(:clear_everything_for_tests) unless Puppet.version =~ /^2\.6/ - Puppet::Node::Environment.clear - Puppet::Util::Storage.clear - Puppet::Util::ExecutionStub.reset if Puppet::Util.constants.include? "ExecutionStub" - - PuppetSpec::Files.cleanup - - @logs.clear - Puppet::Util::Log.close_all - Puppet::Util::Log.level = @log_level - GC.enable end end From 20aacc5a29f767f09ecf5964068392cf3054bddc Mon Sep 17 00:00:00 2001 From: Jeff McCune Date: Thu, 10 May 2012 22:00:19 -0700 Subject: [PATCH 2/4] Memoize file_line spec instance variables This just changes the instance variables to a memoized let block and gets ride of the before :each block. The patch has no change in behavior. --- spec/unit/puppet/type/file_line_spec.rb | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/spec/unit/puppet/type/file_line_spec.rb b/spec/unit/puppet/type/file_line_spec.rb index 7e07c06..a3e13ea 100644 --- a/spec/unit/puppet/type/file_line_spec.rb +++ b/spec/unit/puppet/type/file_line_spec.rb @@ -1,19 +1,19 @@ require 'puppet' require 'tempfile' describe Puppet::Type.type(:file_line) do - before :each do - @file_line = Puppet::Type.type(:file_line).new(:name => 'foo', :line => 'line', :path => '/tmp/path') + let :file_line do + Puppet::Type.type(:file_line).new(:name => 'foo', :line => 'line', :path => '/tmp/path') end it 'should accept a line and path' do - @file_line[:line] = 'my_line' - @file_line[:line].should == 'my_line' + file_line[:line] = 'my_line' + file_line[:line].should == 'my_line' end it 'should accept posix filenames' do - @file_line[:path] = '/tmp/path' - @file_line[:path].should == '/tmp/path' + file_line[:path] = '/tmp/path' + file_line[:path].should == '/tmp/path' end it 'should not accept unqualified path' do - expect { @file_line[:path] = 'file' }.should raise_error(Puppet::Error, /File paths must be fully qualified/) + expect { file_line[:path] = 'file' }.should raise_error(Puppet::Error, /File paths must be fully qualified/) end it 'should require that a line is specified' do expect { Puppet::Type.type(:file_line).new(:name => 'foo', :path => '/tmp/file') }.should raise_error(Puppet::Error, /Both line and path are required attributes/) From 1373e70639e0105ec314c006bd82545573a389e6 Mon Sep 17 00:00:00 2001 From: Jeff McCune Date: Thu, 10 May 2012 21:36:46 -0700 Subject: [PATCH 3/4] Make file_line default to ensure => present The examples in the file_line resource documentation state the following resource should work: file_line { 'sudo_rule': path => '/etc/sudoers', line => '%sudo ALL=(ALL) ALL', } Without this patch the example does not work because ensure is not set to present. This patch fixes the problem by setting the default value of ensure to present. --- lib/puppet/type/file_line.rb | 10 ++++++---- spec/unit/puppet/type/file_line_spec.rb | 3 +++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/puppet/type/file_line.rb b/lib/puppet/type/file_line.rb index 9f03771..8559cfa 100644 --- a/lib/puppet/type/file_line.rb +++ b/lib/puppet/type/file_line.rb @@ -23,18 +23,20 @@ Puppet::Type.newtype(:file_line) do EOT - ensurable + ensurable do + defaultto :present + end newparam(:name, :namevar => true) do - desc 'arbitrary name used as identity' + desc 'An arbitrary name used as the identity of the resource.' end newparam(:line) do - desc 'The line to be appended to the path.' + desc 'The line to be appended to the file located by the path parameter.' end newparam(:path) do - desc 'File to possibly append a line to.' + desc 'The file Puppet will ensure contains the line specified by the line parameter.' validate do |value| unless (Puppet.features.posix? and value =~ /^\//) or (Puppet.features.microsoft_windows? and (value =~ /^.:\// or value =~ /^\/\/[^\/]+\/[^\/]+/)) raise(Puppet::Error, "File paths must be fully qualified, not '#{value}'") diff --git a/spec/unit/puppet/type/file_line_spec.rb b/spec/unit/puppet/type/file_line_spec.rb index a3e13ea..c86dbd2 100644 --- a/spec/unit/puppet/type/file_line_spec.rb +++ b/spec/unit/puppet/type/file_line_spec.rb @@ -21,4 +21,7 @@ describe Puppet::Type.type(:file_line) do it 'should require that a file is specified' do expect { Puppet::Type.type(:file_line).new(:name => 'foo', :line => 'path') }.should raise_error(Puppet::Error, /Both line and path are required attributes/) end + it 'should default to ensure => present' do + file_line[:ensure].should eq :present + end end From beaa812e107d41418586af3fc81b4c8ab2d73c07 Mon Sep 17 00:00:00 2001 From: Jeff McCune Date: Thu, 10 May 2012 22:19:24 -0700 Subject: [PATCH 4/4] Update CHANGELOG for 2.3.2 release --- CHANGELOG | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index f027d4e..c0b22f6 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,13 @@ +2012-05-10 - Puppet Labs - 2.3.2 + * Make file_line default to ensure => present (1373e70) + * Memoize file_line spec instance variables (20aacc5) + * Fix spec tests using the new spec_helper (1ebfa5d) + * (#13595) initialize_everything_for_tests couples modules Puppet ver (3222f35) + * (#13439) Fix MRI 1.9 issue with spec_helper (15c5fd1) + * (#13439) Fix test failures with Puppet 2.6.x (665610b) + * (#13439) refactor spec helper for compatibility with both puppet 2.7 and master (82194ca) + * (#13494) Specify the behavior of zero padded strings (61891bb) + 2012-03-29 Puppet Labs - 2.1.3 * (#11607) Add Rakefile to enable spec testing * (#12377) Avoid infinite loop when retrying require json