Skip to content

Make file_line default to ensure => present #69

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
May 11, 2012
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions lib/puppet/type/file_line.rb
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,20 @@

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}'")
Expand Down
73 changes: 5 additions & 68 deletions spec/spec_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,90 +10,27 @@
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
17 changes: 10 additions & 7 deletions spec/unit/puppet/type/file_line_spec.rb
Original file line number Diff line number Diff line change
@@ -1,24 +1,27 @@
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/)
end
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