summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md20
-rw-r--r--lib/puppet/parser/functions/has_interface_with.rb14
-rw-r--r--lib/puppet/parser/functions/range.rb26
-rw-r--r--metadata.json6
-rwxr-xr-xspec/acceptance/ensure_packages_spec.rb2
-rwxr-xr-xspec/acceptance/ensure_resource_spec.rb2
-rwxr-xr-xspec/acceptance/type_spec.rb2
-rwxr-xr-xspec/functions/range_spec.rb16
-rwxr-xr-xspec/spec_helper_acceptance.rb29
9 files changed, 81 insertions, 36 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index fb5fd7f..2fb73db 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,23 @@
+##2014-11-10 - Supported Release 4.4.0
+###Summary
+This release has an overhauled readme, new private manifest function, and fixes many future parser bugs.
+
+####Features
+- All new shiny README
+- New `private()` function for making private manifests (yay!)
+
+####Bugfixes
+- Code reuse in `bool2num()` and `zip()`
+- Fix many functions to handle `generate()` no longer returning a string on new puppets
+- `concat()` no longer modifies the first argument (whoops)
+- strict variable support for `getvar()`, `member()`, `values_at`, and `has_interface_with()`
+- `to_bytes()` handles PB and EB now
+- Fix `tempfile` ruby requirement for `validate_augeas()` and `validate_cmd()`
+- Fix `validate_cmd()` for windows
+- Correct `validate_string()` docs to reflect non-handling of `undef`
+- Fix `file_line` matching on older rubies
+
+
##2014-07-15 - Supported Release 4.3.2
###Summary
diff --git a/lib/puppet/parser/functions/has_interface_with.rb b/lib/puppet/parser/functions/has_interface_with.rb
index 00e405d..3691524 100644
--- a/lib/puppet/parser/functions/has_interface_with.rb
+++ b/lib/puppet/parser/functions/has_interface_with.rb
@@ -35,7 +35,13 @@ has_interface_with("lo") => true
kind, value = args
- if lookupvar(kind) == value
+ # Bug with 3.7.1 - 3.7.3 when using future parser throws :undefined_variable
+ # https://tickets.puppetlabs.com/browse/PUP-3597
+ factval = nil
+ catch :undefined_variable do
+ factval = lookupvar(kind)
+ end
+ if factval == value
return true
end
@@ -44,7 +50,11 @@ has_interface_with("lo") => true
iface.downcase!
factval = nil
begin
- factval = lookupvar("#{kind}_#{iface}")
+ # Bug with 3.7.1 - 3.7.3 when using future parser throws :undefined_variable
+ # https://tickets.puppetlabs.com/browse/PUP-3597
+ catch :undefined_variable do
+ factval = lookupvar("#{kind}_#{iface}")
+ end
rescue Puppet::ParseError # Eat the exception if strict_variables = true is set
end
if value == factval
diff --git a/lib/puppet/parser/functions/range.rb b/lib/puppet/parser/functions/range.rb
index ffbdf84..49fba21 100644
--- a/lib/puppet/parser/functions/range.rb
+++ b/lib/puppet/parser/functions/range.rb
@@ -65,21 +65,21 @@ Will return: [0,2,4,6,8]
end
end
- # Check whether we have integer value if so then make it so ...
- if start.match(/^\d+$/)
- start = start.to_i
- stop = stop.to_i
- else
- start = start.to_s
- stop = stop.to_s
- end
+ # Check whether we have integer value if so then make it so ...
+ if start.to_s.match(/^\d+$/)
+ start = start.to_i
+ stop = stop.to_i
+ else
+ start = start.to_s
+ stop = stop.to_s
+ end
- range = case type
- when /^(\.\.|\-)$/ then (start .. stop)
- when /^(\.\.\.)$/ then (start ... stop) # Exclusive of last element ...
- end
+ range = case type
+ when /^(\.\.|\-)$/ then (start .. stop)
+ when /^(\.\.\.)$/ then (start ... stop) # Exclusive of last element ...
+ end
- result = range.step(step).collect { |i| i } # Get them all ... Pokemon ...
+ result = range.step(step).collect { |i| i } # Get them all ... Pokemon ...
return result
end
diff --git a/metadata.json b/metadata.json
index 26167b6..186166d 100644
--- a/metadata.json
+++ b/metadata.json
@@ -1,12 +1,12 @@
{
"name": "puppetlabs-stdlib",
- "version": "4.3.2",
+ "version": "4.4.0",
"author": "puppetlabs",
"summary": "Puppet Module Standard Library",
"license": "Apache 2.0",
"source": "git://github.com/puppetlabs/puppetlabs-stdlib",
"project_page": "https://github.com/puppetlabs/puppetlabs-stdlib",
- "issues_url": "https://github.com/puppetlabs/puppetlabs-stdlib/issues",
+ "issues_url": "https://tickets.puppetlabs.com/browse/MODULES",
"operatingsystem_support": [
{
"operatingsystem": "RedHat",
@@ -97,7 +97,7 @@
"requirements": [
{
"name": "pe",
- "version_requirement": "3.3.x"
+ "version_requirement": "3.x"
},
{
"name": "puppet",
diff --git a/spec/acceptance/ensure_packages_spec.rb b/spec/acceptance/ensure_packages_spec.rb
index 3651f29..aedcfb5 100755
--- a/spec/acceptance/ensure_packages_spec.rb
+++ b/spec/acceptance/ensure_packages_spec.rb
@@ -1,7 +1,7 @@
#! /usr/bin/env ruby -S rspec
require 'spec_helper_acceptance'
-describe 'ensure_packages function', :unless => (UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) || fact('osfamily') == 'windows') do
+describe 'ensure_packages function', :unless => fact('osfamily') =~ /windows/i do
describe 'success' do
it 'ensure_packages a package' do
apply_manifest('package { "rake": ensure => absent, provider => "gem", }')
diff --git a/spec/acceptance/ensure_resource_spec.rb b/spec/acceptance/ensure_resource_spec.rb
index f1bfa54..1cee53d 100755
--- a/spec/acceptance/ensure_resource_spec.rb
+++ b/spec/acceptance/ensure_resource_spec.rb
@@ -1,7 +1,7 @@
#! /usr/bin/env ruby -S rspec
require 'spec_helper_acceptance'
-describe 'ensure_resource function', :unless => (UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) || fact('osfamily') == 'windows') do
+describe 'ensure_resource function', :unless => fact('osfamily') =~ /windows/i do
describe 'success' do
it 'ensure_resource a package' do
apply_manifest('package { "rake": ensure => absent, provider => "gem", }')
diff --git a/spec/acceptance/type_spec.rb b/spec/acceptance/type_spec.rb
index 15fa217..67e3248 100755
--- a/spec/acceptance/type_spec.rb
+++ b/spec/acceptance/type_spec.rb
@@ -1,7 +1,7 @@
#! /usr/bin/env ruby -S rspec
require 'spec_helper_acceptance'
-describe 'type function', :unless => (UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) || !(is_future_parser_enabled?)) do
+describe 'type function', :unless => (UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) || is_future_parser_enabled?) do
describe 'success' do
it 'types arrays' do
pp = <<-EOS
diff --git a/spec/functions/range_spec.rb b/spec/functions/range_spec.rb
index 9b9ece0..ef86f97 100755
--- a/spec/functions/range_spec.rb
+++ b/spec/functions/range_spec.rb
@@ -67,4 +67,20 @@ describe "the range function" do
expect(scope.function_range(["00", "10"])).to eq expected
end
end
+
+ describe 'with a numeric range' do
+ it "returns a range of numbers" do
+ expected = (1..10).to_a
+ expect(scope.function_range([1,10])).to eq expected
+ end
+ it "returns a range of numbers with step parameter" do
+ expected = (1..10).step(2).to_a
+ expect(scope.function_range([1,10,2])).to eq expected
+ end
+ it "works with mixed numeric like strings and numeric arguments" do
+ expected = (1..10).to_a
+ expect(scope.function_range(['1',10])).to eq expected
+ expect(scope.function_range([1,'10'])).to eq expected
+ end
+ end
end
diff --git a/spec/spec_helper_acceptance.rb b/spec/spec_helper_acceptance.rb
index ef99723..3203ce9 100755
--- a/spec/spec_helper_acceptance.rb
+++ b/spec/spec_helper_acceptance.rb
@@ -4,15 +4,23 @@ require 'beaker-rspec'
UNSUPPORTED_PLATFORMS = []
unless ENV['RS_PROVISION'] == 'no' or ENV['BEAKER_provision'] == 'no'
- # This will install the latest available package on el and deb based
- # systems fail on windows and osx, and install via gem on other *nixes
- foss_opts = { :default_action => 'gem_install' }
+ foss_opts = {
+ :default_action => 'gem_install',
+ :version => (ENV['PUPPET_VERSION'] ? ENV['PUPPET_VERSION'] : '3.7.2'),
+ }
if default.is_pe?; then install_pe; else install_puppet( foss_opts ); end
hosts.each do |host|
- on host, "mkdir -p #{host['distmoduledir']}"
- on host, "/bin/touch #{host['puppetpath']}/hiera.yaml"
+ if host['platform'] !~ /windows/i
+ if host.is_pe?
+ on host, 'mkdir -p /etc/puppetlabs/facter/facts.d'
+ else
+ on host, "/bin/touch #{host['puppetpath']}/hiera.yaml"
+ on host, "mkdir -p #{host['distmoduledir']}"
+ on host, 'mkdir -p /etc/facter/facts.d'
+ end
+ end
end
end
@@ -29,17 +37,8 @@ RSpec.configure do |c|
default[:default_apply_opts] ||= {}
default[:default_apply_opts].merge!({:parser => 'future'})
end
- hosts.each do |host|
- if host['platform'] !~ /windows/i
- copy_root_module_to(host, :source => proj_root, :module_name => 'stdlib')
- end
- end
- hosts.each do |host|
- if host['platform'] =~ /windows/i
- on host, puppet('plugin download')
- end
- end
+ copy_root_module_to(default, :source => proj_root, :module_name => 'stdlib')
end
end