summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore12
-rw-r--r--.project6
-rw-r--r--.sync.yml2
-rw-r--r--.travis.yml13
-rw-r--r--CHANGELOG.md19
-rw-r--r--CONTRIBUTING.md3
-rw-r--r--Gemfile11
-rw-r--r--MAINTAINERS.md6
-rw-r--r--Rakefile7
-rw-r--r--appveyor.yml40
-rw-r--r--metadata.json2
-rw-r--r--spec/aliases/hash_spec.rb32
-rw-r--r--spec/fixtures/test/manifests/hash.pp8
-rw-r--r--spec/functions/deprecation_spec.rb4
-rwxr-xr-xspec/functions/load_module_metadata_spec.rb37
-rw-r--r--spec/functions/loadjson_spec.rb31
-rwxr-xr-xspec/functions/validate_cmd_spec.rb2
-rw-r--r--spec/functions/validate_legacy_spec.rb2
-rwxr-xr-xspec/spec_helper_acceptance.rb9
-rwxr-xr-xspec/unit/puppet/type/file_line_spec.rb36
-rw-r--r--types/compat/hash.pp2
21 files changed, 217 insertions, 67 deletions
diff --git a/.gitignore b/.gitignore
index 33bc5ff..07aff17 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,15 +1,27 @@
#This file is generated by ModuleSync, do not edit.
pkg/
Gemfile.lock
+Gemfile.local
vendor/
spec/fixtures/manifests/
spec/fixtures/modules/
+log/
+junit/
.vagrant/
.bundle/
coverage/
log/
.idea/
+.metadata
*.iml
+.*.sw[op]
+.yardoc
+.yardwarns
+.DS_Store
+tmp/
+vendor/
+doc/
+
!spec/fixtures/
spec/fixtures/manifests/site.pp
spec/fixtures/modules/*
diff --git a/.project b/.project
index 4e2c033..6d71ee5 100644
--- a/.project
+++ b/.project
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
- <name>stdlib</name>
+ <name>puppetlabs-stdlib</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
- <name>org.cloudsmith.geppetto.pp.dsl.ui.modulefileBuilder</name>
+ <name>com.puppetlabs.geppetto.pp.dsl.ui.modulefileBuilder</name>
<arguments>
</arguments>
</buildCommand>
@@ -17,7 +17,7 @@
</buildCommand>
</buildSpec>
<natures>
- <nature>org.cloudsmith.geppetto.pp.dsl.ui.puppetNature</nature>
+ <nature>com.puppetlabs.geppetto.pp.dsl.ui.puppetNature</nature>
<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
</natures>
</projectDescription>
diff --git a/.sync.yml b/.sync.yml
index 34cfb5f..a870bb7 100644
--- a/.sync.yml
+++ b/.sync.yml
@@ -1,4 +1,6 @@
---
+NOTICE:
+ unmanaged: true
.gitignore:
paths:
- '!spec/fixtures/'
diff --git a/.travis.yml b/.travis.yml
index d972387..4981b25 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -3,7 +3,7 @@
sudo: false
language: ruby
cache: bundler
-script: "bundle exec rake validate lint spec"
+script: "bundle exec rake release_checks"
#Inserting below due to the following issue: https://github.com/travis-ci/travis-ci/issues/3531#issuecomment-88311203
before_install:
- gem update bundler
@@ -25,17 +25,8 @@ matrix:
- rvm: 2.3.1
bundler_args: --without system_tests
env: PUPPET_GEM_VERSION="~> 4.0"
- - rvm: 2.1.9
+ - rvm: 2.1.7
bundler_args: --without system_tests
env: PUPPET_GEM_VERSION="~> 4.0"
- - rvm: 2.1.5
- bundler_args: --without system_tests
- env: PUPPET_GEM_VERSION="~> 3.0" FUTURE_PARSER="yes"
- - rvm: 2.1.5
- bundler_args: --without system_tests
- env: PUPPET_GEM_VERSION="~> 3.0"
- - rvm: 1.9.3
- bundler_args: --without system_tests
- env: PUPPET_GEM_VERSION="~> 3.0"
notifications:
email: false
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9157b2d..98873f6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,22 @@
+## Supported Release 4.14.0
+### Summary
+
+Adds several new features and updates, especially around refining the deprecation and validate_legacy functions. Also includes a Gemfile update around an issue with parallel_tests dependancy for different versions of Ruby.
+
+#### Features
+- Deprecation function now uses puppet stacktrace if available.
+- join_key_to_values function now handles array values. If values are arrays, multiple keys are added for each element.
+- Updated Gemfile to deal with parallel_tests Ruby dependancy (MODULES-3983).
+- Updated/Fixed ipv4 regex validator (MODULES-3980).
+- Deprecation clarification added to README.
+
+#### Bugfixes
+- README typo fixes.
+- Use .dup to duplicate classes for modification (MODULES-3829).
+- Fixes spec failures that were caused by a change in the tested error message in validate_legacy_spec.
+- Broken link to validate_legacy docs fixed.
+- Updates deprecation tests to include future parser.
+
## Supported Release 4.13.1
### Summary
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 3c3f1e7..990edba 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -43,7 +43,7 @@ Checklist (and a short version for the impatient)
- Make sure you have a [GitHub account](https://github.com/join)
- - [Create a ticket](https://tickets.puppetlabs.com/secure/CreateIssue!default.jspa), or [watch the ticket](https://tickets.puppetlabs.com/browse/) you are patching for.
+ - [Create a ticket](https://tickets.puppet.com/secure/CreateIssue!default.jspa), or [watch the ticket](https://tickets.puppet.com/browse/) you are patching for.
* Preferred method:
@@ -215,4 +215,3 @@ Additional Resources
* [General GitHub documentation](http://help.github.com/)
* [GitHub pull request documentation](http://help.github.com/send-pull-requests/)
-
diff --git a/Gemfile b/Gemfile
index 3d46720..5d86325 100644
--- a/Gemfile
+++ b/Gemfile
@@ -49,16 +49,15 @@ group :development do
gem 'json_pure', '<= 2.0.1', :require => false if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.0.0')
gem 'fast_gettext', '1.1.0', :require => false if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.1.0')
gem 'fast_gettext', :require => false if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.1.0')
+ gem 'rainbow', '< 2.2.0', :require => false
end
group :system_tests do
- gem 'beaker', *location_for(ENV['BEAKER_VERSION'] || '~> 2.20') if supports_windows
- gem 'beaker', *location_for(ENV['BEAKER_VERSION']) if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.3.0') and ! supports_windows
- gem 'beaker', *location_for(ENV['BEAKER_VERSION'] || '< 3') if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.3.0') and ! supports_windows
- gem 'beaker-pe', :require => false if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.3.0')
- gem 'beaker-rspec', *location_for(ENV['BEAKER_RSPEC_VERSION'] || '>= 3.4') if ! supports_windows
- gem 'beaker-rspec', *location_for(ENV['BEAKER_RSPEC_VERSION'] || '~> 5.1') if supports_windows
+ gem 'beaker', *location_for(ENV['BEAKER_VERSION'] || '>= 3')
+ gem 'beaker-pe', :require => false
+ gem 'beaker-rspec', *location_for(ENV['BEAKER_RSPEC_VERSION'])
gem 'beaker-puppet_install_helper', :require => false
+ gem 'beaker-module_install_helper', :require => false
gem 'master_manipulator', :require => false
gem 'beaker-hostgenerator', *location_for(ENV['BEAKER_HOSTGENERATOR_VERSION'])
gem 'beaker-abs', *location_for(ENV['BEAKER_ABS_VERSION'] || '~> 0.1')
diff --git a/MAINTAINERS.md b/MAINTAINERS.md
new file mode 100644
index 0000000..e8004a5
--- /dev/null
+++ b/MAINTAINERS.md
@@ -0,0 +1,6 @@
+## Maintenance
+
+Maintainers:
+ - Puppet Forge Modules Team `forge-modules |at| puppet |dot| com`
+
+Tickets: https://tickets.puppet.com/browse/MODULES. Make sure to set component to `stdlib`.
diff --git a/Rakefile b/Rakefile
index 3e8d4cb..d12d854 100644
--- a/Rakefile
+++ b/Rakefile
@@ -1,10 +1,9 @@
-require 'puppet_blacksmith/rake_tasks'
-require 'puppet-lint/tasks/puppet-lint'
require 'puppetlabs_spec_helper/rake_tasks'
+require 'puppet-lint/tasks/puppet-lint'
+require 'puppet_blacksmith/rake_tasks' if Bundler.rubygems.find_name('puppet-blacksmith').any?
+PuppetLint.configuration.fail_on_warnings = true
PuppetLint.configuration.send('relative')
-PuppetLint.configuration.send('disable_documentation')
-PuppetLint.configuration.send('disable_single_quote_string_with_variables')
desc 'Generate pooler nodesets'
task :gen_nodeset do
diff --git a/appveyor.yml b/appveyor.yml
new file mode 100644
index 0000000..c87ed7c
--- /dev/null
+++ b/appveyor.yml
@@ -0,0 +1,40 @@
+version: 1.1.x.{build}
+skip_commits:
+ message: /^\(?doc\)?.*/
+clone_depth: 10
+init:
+- SET
+- 'mkdir C:\ProgramData\PuppetLabs\code && exit 0'
+- 'mkdir C:\ProgramData\PuppetLabs\facter && exit 0'
+- 'mkdir C:\ProgramData\PuppetLabs\hiera && exit 0'
+- 'mkdir C:\ProgramData\PuppetLabs\puppet\var && exit 0'
+environment:
+ matrix:
+ - PUPPET_GEM_VERSION: ~> 4.0
+ RUBY_VER: 21
+ - PUPPET_GEM_VERSION: ~> 4.0
+ RUBY_VER: 21-x64
+ - PUPPET_GEM_VERSION: ~> 4.0
+ RUBY_VER: 23
+ - PUPPET_GEM_VERSION: ~> 4.0
+ RUBY_VER: 23-x64
+ - PUPPET_GEM_VERSION: 4.2.3
+ RUBY_VER: 21-x64
+matrix:
+ fast_finish: true
+install:
+- SET PATH=C:\Ruby%RUBY_VER%\bin;%PATH%
+- bundle install --jobs 4 --retry 2 --without system_tests
+- type Gemfile.lock
+build: off
+test_script:
+- bundle exec puppet -V
+- ruby -v
+- bundle exec rake spec SPEC_OPTS='--format documentation'
+notifications:
+- provider: Email
+ to:
+ - nobody@nowhere.com
+ on_build_success: false
+ on_build_failure: false
+ on_build_status_changed: false
diff --git a/metadata.json b/metadata.json
index 82078bf..b697da0 100644
--- a/metadata.json
+++ b/metadata.json
@@ -1,6 +1,6 @@
{
"name": "puppetlabs-stdlib",
- "version": "4.13.1",
+ "version": "4.14.0",
"author": "puppetlabs",
"summary": "Standard library of resources for Puppet modules.",
"license": "Apache-2.0",
diff --git a/spec/aliases/hash_spec.rb b/spec/aliases/hash_spec.rb
new file mode 100644
index 0000000..e10a04b
--- /dev/null
+++ b/spec/aliases/hash_spec.rb
@@ -0,0 +1,32 @@
+require 'spec_helper'
+
+if Puppet.version.to_f >= 4.5
+ describe 'test::hash', type: :class do
+ describe 'accepts hashes' do
+ [
+ {},
+ {'one' => "two"},
+ {'wan' => 3},
+ {'001' => "helly"},
+ ].each do |value|
+ describe value.inspect do
+ let(:params) {{ value: value }}
+ it { is_expected.to compile }
+ end
+ end
+ end
+ describe 'rejects other values' do
+ [
+ '',
+ 'one',
+ '1',
+ [],
+ ].each do |value|
+ describe value.inspect do
+ let(:params) {{ value: value }}
+ it { is_expected.to compile.and_raise_error(/parameter 'value' expects a Stdlib::Compat::Hash/) }
+ end
+ end
+ end
+ end
+end
diff --git a/spec/fixtures/test/manifests/hash.pp b/spec/fixtures/test/manifests/hash.pp
new file mode 100644
index 0000000..c243570
--- /dev/null
+++ b/spec/fixtures/test/manifests/hash.pp
@@ -0,0 +1,8 @@
+# Class to test the Stdlib::Compat::Hash type alias
+class test::hash(
+ Stdlib::Compat::Hash $value,
+ ) {
+
+ notice("Success")
+
+}
diff --git a/spec/functions/deprecation_spec.rb b/spec/functions/deprecation_spec.rb
index cee4f1c..8a65b69 100644
--- a/spec/functions/deprecation_spec.rb
+++ b/spec/functions/deprecation_spec.rb
@@ -1,6 +1,6 @@
require 'spec_helper'
-if Puppet.version.to_f >= 4.0
+if Puppet.version.to_f >= 4.5
describe 'deprecation' do
before(:each) {
# this is to reset the strict variable to default
@@ -40,7 +40,7 @@ if Puppet.version.to_f >= 4.0
Puppet.settings[:strict] = :warning
}
end
-else
+elsif Puppet.version.to_f < 4.0
# Puppet version < 4 will use these tests.
describe 'deprecation' do
after(:all) do
diff --git a/spec/functions/load_module_metadata_spec.rb b/spec/functions/load_module_metadata_spec.rb
index 1a61e2c..2ba41a5 100755
--- a/spec/functions/load_module_metadata_spec.rb
+++ b/spec/functions/load_module_metadata_spec.rb
@@ -7,30 +7,43 @@ describe 'load_module_metadata' do
describe "when calling with valid arguments" do
before :each do
- if RSpec.configuration.puppet_future
- allow(File).to receive(:read).with(/\/stdlib\/metadata.json/, {:encoding=>"utf-8"}).and_return('{"name": "puppetlabs-stdlib"}')
- else
- allow(File).to receive(:read).with(/\/stdlib\/metadata.json/).and_return('{"name": "puppetlabs-stdlib"}')
- end
+ allow(File).to receive(:read).with(/\/stdlib\/metadata.json/, {:encoding=>"utf-8"}).and_return('{"name": "puppetlabs-stdlib"}')
+ allow(File).to receive(:read).with(/\/stdlib\/metadata.json/).and_return('{"name": "puppetlabs-stdlib"}')
end
it "should json parse the file" do
- allow(scope).to receive(:function_get_module_path).with(['science']).and_return('/path/to/module/')
- allow(File).to receive(:exists?).with('/path/to/module/metadata.json').and_return(true)
- allow(File).to receive(:read).with('/path/to/module/metadata.json').and_return('{"name": "spencer-science"}')
+ if Puppet::Util::Platform.windows?
+ allow(scope).to receive(:function_get_module_path).with(['science']).and_return('C:/path/to/module/')
+ allow(File).to receive(:exists?).with('C:/path/to/module/metadata.json').and_return(true)
+ allow(File).to receive(:read).with('C:/path/to/module/metadata.json').and_return('{"name": "spencer-science"}')
+ else
+ allow(scope).to receive(:function_get_module_path).with(['science']).and_return('/path/to/module/')
+ allow(File).to receive(:exists?).with('/path/to/module/metadata.json').and_return(true)
+ allow(File).to receive(:read).with('/path/to/module/metadata.json').and_return('{"name": "spencer-science"}')
+ end
result = subject.call(['science'])
expect(result['name']).to eq('spencer-science')
end
it "should fail by default if there is no metadata.json" do
- allow(scope).to receive(:function_get_module_path).with(['science']).and_return('/path/to/module/')
- allow(File).to receive(:exists?).with('/path/to/module/metadata.json').and_return(false)
+ if Puppet::Util::Platform.windows?
+ allow(scope).to receive(:function_get_module_path).with(['science']).and_return('C:/path/to/module/')
+ allow(File).to receive(:exists?).with('C:/path/to/module/metadata.json').and_return(false)
+ else
+ allow(scope).to receive(:function_get_module_path).with(['science']).and_return('/path/to/module/')
+ allow(File).to receive(:exists?).with('/path/to/module/metadata.json').and_return(false)
+ end
expect {subject.call(['science'])}.to raise_error(Puppet::ParseError)
end
it "should return nil if user allows empty metadata.json" do
- allow(scope).to receive(:function_get_module_path).with(['science']).and_return('/path/to/module/')
- allow(File).to receive(:exists?).with('/path/to/module/metadata.json').and_return(false)
+ if Puppet::Util::Platform.windows?
+ allow(scope).to receive(:function_get_module_path).with(['science']).and_return('C:/path/to/module/')
+ allow(File).to receive(:exists?).with('C:/path/to/module/metadata.json').and_return(false)
+ else
+ allow(scope).to receive(:function_get_module_path).with(['science']).and_return('/path/to/module/')
+ allow(File).to receive(:exists?).with('/path/to/module/metadata.json').and_return(false)
+ end
result = subject.call(['science', true])
expect(result).to eq({})
end
diff --git a/spec/functions/loadjson_spec.rb b/spec/functions/loadjson_spec.rb
index a00dff9..9d26e93 100644
--- a/spec/functions/loadjson_spec.rb
+++ b/spec/functions/loadjson_spec.rb
@@ -6,15 +6,18 @@ describe 'loadjson' do
describe "when calling with valid arguments" do
before :each do
- if RSpec.configuration.puppet_future
- allow(File).to receive(:read).with(/\/stdlib\/metadata.json/, {:encoding=>"utf-8"}).and_return('{"name": "puppetlabs-stdlib"}')
- else
- allow(File).to receive(:read).with(/\/stdlib\/metadata.json/).and_return('{"name": "puppetlabs-stdlib"}')
- end
+ allow(File).to receive(:read).with(/\/stdlib\/metadata.json/, {:encoding=>"utf-8"}).and_return('{"name": "puppetlabs-stdlib"}')
+ allow(File).to receive(:read).with(/\/stdlib\/metadata.json/).and_return('{"name": "puppetlabs-stdlib"}')
end
context 'when a non-existing file is specified' do
- let(:filename) { '/tmp/doesnotexist' }
+ let(:filename) {
+ if Puppet::Util::Platform.windows?
+ 'C:/tmp/doesnotexist'
+ else
+ '/tmp/doesnotexist'
+ end
+ }
before {
allow(File).to receive(:exists?).with(filename).and_return(false).once
allow(PSON).to receive(:load).never
@@ -23,7 +26,13 @@ describe 'loadjson' do
end
context 'when an existing file is specified' do
- let(:filename) { '/tmp/doesexist' }
+ let(:filename) {
+ if Puppet::Util::Platform.windows?
+ 'C:/tmp/doesexist'
+ else
+ '/tmp/doesexist'
+ end
+ }
let(:data) { { 'key' => 'value' } }
let(:json) { '{"key":"value"}' }
before {
@@ -36,7 +45,13 @@ describe 'loadjson' do
end
context 'when the file could not be parsed' do
- let(:filename) { '/tmp/doesexist' }
+ let(:filename) {
+ if Puppet::Util::Platform.windows?
+ 'C:/tmp/doesexist'
+ else
+ '/tmp/doesexist'
+ end
+ }
let(:json) { '{"key":"value"}' }
before {
allow(File).to receive(:exists?).with(filename).and_return(true).once
diff --git a/spec/functions/validate_cmd_spec.rb b/spec/functions/validate_cmd_spec.rb
index ab0cbc9..c6559e8 100755
--- a/spec/functions/validate_cmd_spec.rb
+++ b/spec/functions/validate_cmd_spec.rb
@@ -1,6 +1,6 @@
require 'spec_helper'
-describe 'validate_cmd' do
+describe 'validate_cmd', :unless => Puppet::Util::Platform.windows? do
let(:touch) { File.exists?('/usr/bin/touch') ? '/usr/bin/touch' : '/bin/touch' }
describe 'signature validation' do
diff --git a/spec/functions/validate_legacy_spec.rb b/spec/functions/validate_legacy_spec.rb
index 50cb317..10b2aee 100644
--- a/spec/functions/validate_legacy_spec.rb
+++ b/spec/functions/validate_legacy_spec.rb
@@ -1,6 +1,6 @@
require 'spec_helper'
-if Puppet.version.to_f >= 4.0
+if Puppet.version.to_f >= 4.4
describe 'validate_legacy' do
it { is_expected.not_to eq(nil) }
it { is_expected.to run.with_params.and_raise_error(ArgumentError) }
diff --git a/spec/spec_helper_acceptance.rb b/spec/spec_helper_acceptance.rb
index 8a1907f..89e64d4 100755
--- a/spec/spec_helper_acceptance.rb
+++ b/spec/spec_helper_acceptance.rb
@@ -1,15 +1,16 @@
#! /usr/bin/env ruby -S rspec
require 'beaker-rspec'
require 'beaker/puppet_install_helper'
+require 'beaker/module_install_helper'
UNSUPPORTED_PLATFORMS = []
run_puppet_install_helper
+install_ca_certs unless ENV['PUPPET_INSTALL_TYPE'] =~ /pe/i
+install_module_on(hosts)
+install_module_dependencies_on(hosts)
RSpec.configure do |c|
- # Project root
- proj_root = File.expand_path(File.join(File.dirname(__FILE__), '..'))
-
# Readable test descriptions
c.formatter = :documentation
@@ -19,8 +20,6 @@ RSpec.configure do |c|
default[:default_apply_opts] ||= {}
default[:default_apply_opts].merge!({:parser => 'future'})
end
-
- copy_root_module_to(default, :source => proj_root, :module_name => 'stdlib')
end
end
diff --git a/spec/unit/puppet/type/file_line_spec.rb b/spec/unit/puppet/type/file_line_spec.rb
index 48e2670..c559e44 100755
--- a/spec/unit/puppet/type/file_line_spec.rb
+++ b/spec/unit/puppet/type/file_line_spec.rb
@@ -2,14 +2,28 @@
require 'spec_helper'
require 'tempfile'
describe Puppet::Type.type(:file_line) do
+ let :tmp_path do
+ if Puppet::Util::Platform.windows?
+ 'C:\tmp\path'
+ else
+ '/tmp/path'
+ end
+ end
+ let :my_path do
+ if Puppet::Util::Platform.windows?
+ 'C:\my\path'
+ else
+ '/my/path'
+ end
+ end
let :file_line do
- 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
it 'should accept a line and path' do
file_line[:line] = 'my_line'
expect(file_line[:line]).to eq('my_line')
- file_line[:path] = '/my/path'
- expect(file_line[:path]).to eq('/my/path')
+ file_line[:path] = my_path
+ expect(file_line[:path]).to eq(my_path)
end
it 'should accept a match regex' do
file_line[:match] = '^foo.*$'
@@ -19,7 +33,7 @@ describe Puppet::Type.type(:file_line) do
expect {
Puppet::Type.type(:file_line).new(
:name => 'foo',
- :path => '/my/path',
+ :path => my_path,
:line => 'foo=bar',
:match => '^bar=blah$'
)}.not_to raise_error
@@ -28,23 +42,23 @@ describe Puppet::Type.type(:file_line) do
expect {
Puppet::Type.type(:file_line).new(
:name => 'foo',
- :path => '/my/path',
+ :path => my_path,
:line => 'foo=bar',
:match => '^\s*foo=.*$'
)}.not_to raise_error
end
it 'should accept posix filenames' do
- file_line[:path] = '/tmp/path'
- expect(file_line[:path]).to eq('/tmp/path')
+ file_line[:path] = tmp_path
+ expect(file_line[:path]).to eq(tmp_path)
end
it 'should not accept unqualified path' do
expect { file_line[:path] = 'file' }.to 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') }.to raise_error(Puppet::Error, /line is a required attribute/)
+ expect { Puppet::Type.type(:file_line).new(:name => 'foo', :path => tmp_path) }.to raise_error(Puppet::Error, /line is a required attribute/)
end
it 'should not require that a line is specified when matching for absence' do
- expect { Puppet::Type.type(:file_line).new(:name => 'foo', :path => '/tmp/file', :ensure => :absent, :match_for_absence => :true, :match => 'match') }.not_to raise_error
+ expect { Puppet::Type.type(:file_line).new(:name => 'foo', :path => tmp_path, :ensure => :absent, :match_for_absence => :true, :match => 'match') }.not_to raise_error
end
it 'should require that a file is specified' do
expect { Puppet::Type.type(:file_line).new(:name => 'foo', :line => 'path') }.to raise_error(Puppet::Error, /path is a required attribute/)
@@ -58,12 +72,12 @@ describe Puppet::Type.type(:file_line) do
it "should autorequire the file it manages" do
catalog = Puppet::Resource::Catalog.new
- file = Puppet::Type.type(:file).new(:name => "/tmp/path")
+ file = Puppet::Type.type(:file).new(:name => tmp_path)
catalog.add_resource file
catalog.add_resource file_line
relationship = file_line.autorequire.find do |rel|
- (rel.source.to_s == "File[/tmp/path]") and (rel.target.to_s == file_line.to_s)
+ (rel.source.to_s == "File[#{tmp_path}]") and (rel.target.to_s == file_line.to_s)
end
expect(relationship).to be_a Puppet::Relationship
end
diff --git a/types/compat/hash.pp b/types/compat/hash.pp
new file mode 100644
index 0000000..e84a10b
--- /dev/null
+++ b/types/compat/hash.pp
@@ -0,0 +1,2 @@
+# Emulate the is_hash and validate_hash functions
+type Stdlib::Compat::Hash = Hash[Any, Any]