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 |