Merge branch 'fix/2.3.x/file_line_ensure' into 2.3.x
* fix/2.3.x/file_line_ensure: Make file_line default to ensure => present Memoize file_line spec instance variables Fix spec tests using the new spec_helper
This commit is contained in:
commit
fb43a6ff2f
3 changed files with 21 additions and 79 deletions
|
@ -23,18 +23,20 @@ Puppet::Type.newtype(:file_line) do
|
||||||
|
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
ensurable
|
ensurable do
|
||||||
|
defaultto :present
|
||||||
|
end
|
||||||
|
|
||||||
newparam(:name, :namevar => true) do
|
newparam(:name, :namevar => true) do
|
||||||
desc 'arbitrary name used as identity'
|
desc 'An arbitrary name used as the identity of the resource.'
|
||||||
end
|
end
|
||||||
|
|
||||||
newparam(:line) do
|
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
|
end
|
||||||
|
|
||||||
newparam(:path) do
|
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|
|
validate do |value|
|
||||||
unless (Puppet.features.posix? and value =~ /^\//) or (Puppet.features.microsoft_windows? and (value =~ /^.:\// or 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}'")
|
raise(Puppet::Error, "File paths must be fully qualified, not '#{value}'")
|
||||||
|
|
|
@ -10,90 +10,27 @@ require 'mocha'
|
||||||
gem 'rspec', '>=2.0.0'
|
gem 'rspec', '>=2.0.0'
|
||||||
require 'rspec/expectations'
|
require 'rspec/expectations'
|
||||||
|
|
||||||
|
|
||||||
# So everyone else doesn't have to include this base constant.
|
# So everyone else doesn't have to include this base constant.
|
||||||
module PuppetSpec
|
module PuppetSpec
|
||||||
FIXTURE_DIR = File.join(dir = File.expand_path(File.dirname(__FILE__)), "fixtures") unless defined?(FIXTURE_DIR)
|
FIXTURE_DIR = File.join(dir = File.expand_path(File.dirname(__FILE__)), "fixtures") unless defined?(FIXTURE_DIR)
|
||||||
end
|
end
|
||||||
|
|
||||||
require 'pathname'
|
# TODO: ultimately would like to move these requires into the puppet_spec_helper.rb file, but the namespaces
|
||||||
require 'tmpdir'
|
# 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/verbose'
|
|
||||||
require 'puppet_spec/files'
|
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)
|
require 'puppet_spec_helper'
|
||||||
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
|
|
||||||
|
|
||||||
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|
|
RSpec.configure do |config|
|
||||||
include PuppetSpec::Fixtures
|
|
||||||
|
|
||||||
config.mock_with :mocha
|
|
||||||
|
|
||||||
config.before :each do
|
config.before :each do
|
||||||
GC.disable
|
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
|
end
|
||||||
|
|
||||||
config.after :each do
|
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
|
GC.enable
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
require 'puppet'
|
require 'puppet'
|
||||||
require 'tempfile'
|
require 'tempfile'
|
||||||
describe Puppet::Type.type(:file_line) do
|
describe Puppet::Type.type(:file_line) do
|
||||||
before :each do
|
let :file_line do
|
||||||
@file_line = Puppet::Type.type(:file_line).new(:name => 'foo', :line => 'line', :path => '/tmp/path')
|
Puppet::Type.type(:file_line).new(:name => 'foo', :line => 'line', :path => '/tmp/path')
|
||||||
end
|
end
|
||||||
it 'should accept a line and path' do
|
it 'should accept a line and path' do
|
||||||
@file_line[:line] = 'my_line'
|
file_line[:line] = 'my_line'
|
||||||
@file_line[:line].should == 'my_line'
|
file_line[:line].should == 'my_line'
|
||||||
end
|
end
|
||||||
it 'should accept posix filenames' do
|
it 'should accept posix filenames' do
|
||||||
@file_line[:path] = '/tmp/path'
|
file_line[:path] = '/tmp/path'
|
||||||
@file_line[:path].should == '/tmp/path'
|
file_line[:path].should == '/tmp/path'
|
||||||
end
|
end
|
||||||
it 'should not accept unqualified path' do
|
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
|
end
|
||||||
it 'should require that a line is specified' do
|
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/)
|
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
|
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/)
|
expect { Puppet::Type.type(:file_line).new(:name => 'foo', :line => 'path') }.should raise_error(Puppet::Error, /Both line and path are required attributes/)
|
||||||
end
|
end
|
||||||
|
it 'should default to ensure => present' do
|
||||||
|
file_line[:ensure].should eq :present
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue