Skip to content
This repository was archived by the owner on Jun 5, 2020. It is now read-only.

Commit 4e4498e

Browse files
authored
Merge pull request #79 from cyberious/modules_4221
MODULES-4221 - Allow boolean values to be passed
2 parents 1c2e8c2 + 2a06bc5 commit 4e4498e

File tree

6 files changed

+126
-59
lines changed

6 files changed

+126
-59
lines changed

.travis.yml

+20-22
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,29 @@
1+
#This file is generated by ModuleSync, do not edit.
12
---
3+
sudo: false
24
language: ruby
3-
4-
bundler_args: '--without development system_tests'
5-
5+
cache: bundler
6+
script: "bundle exec rake validate lint spec"
7+
#Inserting below due to the following issue: https://github.com/travis-ci/travis-ci/issues/3531#issuecomment-88311203
68
before_install:
7-
- 'gem update --system'
8-
- 'gem update bundler'
9-
10-
script: "SPEC_OPTS='--format documentation' bundle exec rake validate lint spec"
11-
9+
- gem update bundler
1210
matrix:
1311
fast_finish: true
1412
include:
15-
- rvm: 1.8.7
16-
env: PUPPET_GEM_VERSION="~> 3.0" FACTER_GEM_VERSION="~> 1.0"
17-
- rvm: 1.8.7
18-
env: PUPPET_GEM_VERSION="~> 3.0" FACTER_GEM_VERSION="~> 2.0"
19-
- rvm: 1.9.3
20-
env: PUPPET_GEM_VERSION="~> 3.0" FACTER_GEM_VERSION="~> 1.0"
21-
- rvm: 1.9.3
22-
env: PUPPET_GEM_VERSION="~> 3.0" FACTER_GEM_VERSION="~> 2.0"
23-
- rvm: 2.0.0
24-
env: PUPPET_GEM_VERSION="~> 3.0" FACTER_GEM_VERSION="~> 1.0"
25-
- rvm: 2.0.0
26-
env: PUPPET_GEM_VERSION="~> 3.0" FACTER_GEM_VERSION="~> 2.0"
2713
- rvm: 2.3.1
28-
env: PUPPET_GEM_VERSION="~> 4" FACTER_GEM_VERSION="~> 2.0"
29-
14+
bundler_args: --without system_tests
15+
env: PUPPET_GEM_VERSION="~> 4.0"
16+
- rvm: 2.1.9
17+
bundler_args: --without system_tests
18+
env: PUPPET_GEM_VERSION="~> 4.0"
19+
- rvm: 2.1.5
20+
bundler_args: --without system_tests
21+
env: PUPPET_GEM_VERSION="~> 3.0" FUTURE_PARSER="yes"
22+
- rvm: 2.1.5
23+
bundler_args: --without system_tests
24+
env: PUPPET_GEM_VERSION="~> 3.0"
25+
- rvm: 1.9.3
26+
bundler_args: --without system_tests
27+
env: PUPPET_GEM_VERSION="~> 3.0"
3028
notifications:
3129
email: false

Gemfile

+67-34
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,86 @@
1+
#This file is generated by ModuleSync, do not edit.
2+
13
source ENV['GEM_SOURCE'] || "https://rubygems.org"
24

3-
def location_for(place, fake_version = nil)
4-
if place =~ /^(git:[^#]*)#(.*)/
5+
# Determines what type of gem is requested based on place_or_version.
6+
def gem_type(place_or_version)
7+
if place_or_version =~ /^git:/
8+
:git
9+
elsif place_or_version =~ /^file:/
10+
:file
11+
else
12+
:gem
13+
end
14+
end
15+
16+
# Find a location or specific version for a gem. place_or_version can be a
17+
# version, which is most often used. It can also be git, which is specified as
18+
# `git://somewhere.git#branch`. You can also use a file source location, which
19+
# is specified as `file://some/location/on/disk`.
20+
def location_for(place_or_version, fake_version = nil)
21+
if place_or_version =~ /^(git[:@][^#]*)#(.*)/
522
[fake_version, { :git => $1, :branch => $2, :require => false }].compact
6-
elsif place =~ /^file:\/\/(.*)/
23+
elsif place_or_version =~ /^file:\/\/(.*)/
724
['>= 0', { :path => File.expand_path($1), :require => false }]
825
else
9-
[place, { :require => false }]
26+
[place_or_version, { :require => false }]
1027
end
1128
end
1229

13-
is_ruby18 = RUBY_VERSION.start_with? '1.8'
30+
# Used for gem conditionals
31+
supports_windows = false
1432

15-
group :development, :test do
16-
gem 'rake', :require => false
17-
if is_ruby18
18-
gem 'rspec', "~> 3.1.0", :require => false
19-
end
20-
gem 'rspec-puppet', :require => false
21-
gem 'puppetlabs_spec_helper', :require => false
22-
gem 'puppet-lint', :require => false
23-
gem 'pry', :require => false
24-
gem 'simplecov', :require => false
25-
gem 'metadata-json-lint', :require => false
33+
group :development do
34+
gem 'puppet-lint', :require => false
35+
gem 'metadata-json-lint', :require => false, :platforms => 'ruby'
36+
gem 'puppet_facts', :require => false
37+
gem 'puppet-blacksmith', '>= 3.4.0', :require => false, :platforms => 'ruby'
38+
gem 'puppetlabs_spec_helper', '>= 1.2.1', :require => false
39+
gem 'rspec-puppet', '>= 2.3.2', :require => false
40+
gem 'rspec-puppet-facts', :require => false, :platforms => 'ruby'
41+
gem 'mocha', '< 1.2.0', :require => false
42+
gem 'simplecov', :require => false, :platforms => 'ruby'
43+
gem 'parallel_tests', '< 2.10.0', :require => false if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.0.0')
44+
gem 'parallel_tests', :require => false if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.0.0')
45+
gem 'rubocop', '0.41.2', :require => false if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.0.0')
46+
gem 'rubocop', :require => false if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.0.0')
47+
gem 'rubocop-rspec', '~> 1.6', :require => false if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.3.0')
48+
gem 'pry', :require => false
49+
gem 'json_pure', '<= 2.0.1', :require => false if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.0.0')
50+
gem 'fast_gettext', '1.1.0', :require => false if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.1.0')
2651
end
2752

28-
beaker_version = ENV['BEAKER_VERSION']
2953
group :system_tests do
30-
gem 'serverspec', :require => false
31-
if beaker_version
32-
gem 'beaker', *location_for(beaker_version)
33-
else
34-
gem 'beaker', :require => false
35-
end
36-
gem 'beaker-rspec', :require => false
54+
gem 'beaker', *location_for(ENV['BEAKER_VERSION'] || '~> 2.20') if supports_windows
55+
gem 'beaker', *location_for(ENV['BEAKER_VERSION']) if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.3.0') and ! supports_windows
56+
gem 'beaker', *location_for(ENV['BEAKER_VERSION'] || '< 3') if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.3.0') and ! supports_windows
57+
gem 'beaker-pe', :require => false if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.3.0')
58+
gem 'beaker-rspec', *location_for(ENV['BEAKER_RSPEC_VERSION'] || '>= 3.4') if ! supports_windows
59+
gem 'beaker-rspec', *location_for(ENV['BEAKER_RSPEC_VERSION'] || '~> 5.1') if supports_windows
60+
gem 'beaker-puppet_install_helper', :require => false
61+
gem 'master_manipulator', :require => false
62+
gem 'beaker-hostgenerator', *location_for(ENV['BEAKER_HOSTGENERATOR_VERSION'])
63+
gem 'beaker-abs', *location_for(ENV['BEAKER_ABS_VERSION'] || '~> 0.1')
3764
end
3865

39-
facter_version = ENV['FACTER_GEM_VERSION']
40-
if facter_version
41-
gem 'facter', *location_for(facter_version)
42-
else
43-
gem 'facter', :require => false
66+
gem 'puppet', *location_for(ENV['PUPPET_GEM_VERSION'])
67+
68+
# Only explicitly specify Facter/Hiera if a version has been specified.
69+
# Otherwise it can lead to strange bundler behavior. If you are seeing weird
70+
# gem resolution behavior, try setting `DEBUG_RESOLVER` environment variable
71+
# to `1` and then run bundle install.
72+
gem 'facter', *location_for(ENV['FACTER_GEM_VERSION']) if ENV['FACTER_GEM_VERSION']
73+
gem 'hiera', *location_for(ENV['HIERA_GEM_VERSION']) if ENV['HIERA_GEM_VERSION']
74+
75+
76+
# Evaluate Gemfile.local if it exists
77+
if File.exists? "#{__FILE__}.local"
78+
eval(File.read("#{__FILE__}.local"), binding)
4479
end
4580

46-
puppet_version = ENV['PUPPET_GEM_VERSION']
47-
if puppet_version
48-
gem 'puppet', *location_for(puppet_version)
49-
else
50-
gem 'puppet', :require => false
81+
# Evaluate ~/.gemfile if it exists
82+
if File.exists?(File.join(Dir.home, '.gemfile'))
83+
eval(File.read(File.join(Dir.home, '.gemfile')), binding)
5184
end
5285

5386
# vim:ft=ruby

Rakefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ require 'puppet-lint/tasks/puppet-lint'
33
PuppetLint.configuration.send('disable_80chars')
44
PuppetLint.configuration.send('disable_140chars')
55
PuppetLint.configuration.relative = true
6-
PuppetLint.configuration.ignore_paths = ["spec/**/*.pp", "pkg/**/*.pp"]
6+
PuppetLint.configuration.ignore_paths = ["spec/**/*.pp", "pkg/**/*.pp","vendor/**/*.pp"]
77

88
desc 'Validate manifests, templates, and ruby files'
99
task :validate do

lib/puppet/type/git_config.rb

+3-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@
2828
DOC
2929

3030
validate do
31-
fail('it is required to pass "value"') if self[:value].nil? || self[:value].empty? || self[:value] == :absent
31+
if self[:value].nil? || (self[:value].respond_to?(:empty?) && self[:value].empty?) || self[:value] == :absent
32+
fail('it is required to pass "value"')
33+
end
3234
warning('Parameter `section` is deprecated, supply the full option name (e.g. "user.email") in the `key` parameter') if
3335
self[:section] && !self[:section].empty?
3436
end

spec/defines/git_config_spec.rb

+20
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,24 @@
3434
have_git_config_resource_count(1)
3535
end
3636
end
37+
context 'allow boolean values' do
38+
let(:title) { 'core.preloadindex' }
39+
let(:params) {
40+
{
41+
:value => true,
42+
:scope => 'system',
43+
}
44+
}
45+
it {
46+
is_expected.to compile
47+
}
48+
it {
49+
is_expected.to contain_git_config(title).with(
50+
{
51+
'value' => params[:value],
52+
'scope' => params[:scope],
53+
}
54+
)
55+
}
56+
end
3757
end

spec/unit/puppet/type/git_config/git_config_spec.rb

+15-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,20 @@
1818
@class.key_attributes.should == [:name]
1919
end
2020

21+
describe "should fail when value is empty string" do
22+
let(:params) {
23+
{
24+
name: 'core.preloadindex',
25+
value: ''
26+
}
27+
}
28+
it {
29+
expect{
30+
Puppet::Type.type(:git_config).new(params)
31+
}.to raise_error(Puppet::ResourceError, /it is required to pass "value"/)
32+
}
33+
end
34+
2135
describe "when validating attributes" do
2236

2337
params = [
@@ -46,4 +60,4 @@
4660

4761
end
4862

49-
end
63+
end

0 commit comments

Comments
 (0)