diff options
| -rw-r--r-- | lib/puppet/type/file_line.rb | 10 | ||||
| -rw-r--r-- | spec/spec_helper.rb | 73 | ||||
| -rw-r--r-- | spec/unit/puppet/type/file_line_spec.rb | 17 | 
3 files changed, 21 insertions, 79 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/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 - -      def <<(value) -        @logs << value -      end -    end -  end -  Puppet::Util::Log.newdesttype :log_collector do -    match "Puppet::Test::LogCollector" -    def initialize(messages) -      @messages = messages -    end +require 'puppet_spec_helper' -    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 diff --git a/spec/unit/puppet/type/file_line_spec.rb b/spec/unit/puppet/type/file_line_spec.rb index 7e07c06..c86dbd2 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/) @@ -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  | 
