rspec-puppet-maestrodev 0.1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +20 -0
- data/README.md +292 -0
- data/Rakefile +7 -0
- data/bin/rspec-puppet-init +20 -0
- data/lib/rspec-puppet.rb +15 -0
- data/lib/rspec-puppet/example.rb +27 -0
- data/lib/rspec-puppet/example/class_example_group.rb +60 -0
- data/lib/rspec-puppet/example/define_example_group.rb +62 -0
- data/lib/rspec-puppet/example/function_example_group.rb +54 -0
- data/lib/rspec-puppet/example/host_example_group.rb +35 -0
- data/lib/rspec-puppet/matchers.rb +4 -0
- data/lib/rspec-puppet/matchers/create_generic.rb +133 -0
- data/lib/rspec-puppet/matchers/create_resource.rb +53 -0
- data/lib/rspec-puppet/matchers/include_class.rb +19 -0
- data/lib/rspec-puppet/matchers/run.rb +76 -0
- data/lib/rspec-puppet/setup.rb +144 -0
- data/lib/rspec-puppet/support.rb +37 -0
- data/rspec-puppet.gemspec +47 -0
- data/spec/classes/boolean_regexp_spec.rb +10 -0
- data/spec/classes/boolean_spec.rb +11 -0
- data/spec/classes/sysctl_common_spec.rb +40 -0
- data/spec/defines/sysctl_before_spec.rb +24 -0
- data/spec/defines/sysctl_spec.rb +14 -0
- data/spec/fixtures/manifests/site.pp +7 -0
- data/spec/fixtures/modules/boolean/manifests/init.pp +12 -0
- data/spec/fixtures/modules/sysctl/manifests/init.pp +39 -0
- data/spec/functions/split_spec.rb +17 -0
- data/spec/hosts/foo_spec.rb +6 -0
- data/spec/hosts/testhost_spec.rb +5 -0
- data/spec/spec_helper.rb +6 -0
- metadata +86 -0
@@ -0,0 +1,37 @@
|
|
1
|
+
module RSpec::Puppet
|
2
|
+
module Support
|
3
|
+
|
4
|
+
@@cache = {}
|
5
|
+
|
6
|
+
protected
|
7
|
+
def build_catalog_without_cache(nodename, facts_val, code)
|
8
|
+
if Integer(Puppet.version.split('.').first) >= 3
|
9
|
+
Puppet.initialize_settings
|
10
|
+
end
|
11
|
+
|
12
|
+
Puppet[:code] = code
|
13
|
+
|
14
|
+
node_obj = Puppet::Node.new(nodename)
|
15
|
+
|
16
|
+
node_obj.merge(facts_val)
|
17
|
+
|
18
|
+
# trying to be compatible with 2.7 as well as 2.6
|
19
|
+
if Puppet::Resource::Catalog.respond_to? :find
|
20
|
+
Puppet::Resource::Catalog.find(node_obj.name, :use_node => node_obj)
|
21
|
+
else
|
22
|
+
Puppet::Resource::Catalog.indirection.find(node_obj.name, :use_node => node_obj)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
public
|
27
|
+
def build_catalog *args
|
28
|
+
@@cache[args] ||= self.build_catalog_without_cache(*args)
|
29
|
+
end
|
30
|
+
|
31
|
+
def munge_facts(facts)
|
32
|
+
output = {}
|
33
|
+
facts.keys.each { |key| output[key.to_s] = facts[key] }
|
34
|
+
output
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = 'rspec-puppet-maestrodev'
|
3
|
+
s.version = '0.1.5.1'
|
4
|
+
s.homepage = 'https://github.com/rodjek/rspec-puppet/'
|
5
|
+
s.summary = 'RSpec tests for your Puppet manifests'
|
6
|
+
s.description = 'RSpec tests for your Puppet manifests'
|
7
|
+
|
8
|
+
s.executables = ['rspec-puppet-init']
|
9
|
+
|
10
|
+
s.files = [
|
11
|
+
'bin/rspec-puppet-init',
|
12
|
+
'lib/rspec-puppet/example/class_example_group.rb',
|
13
|
+
'lib/rspec-puppet/example/define_example_group.rb',
|
14
|
+
'lib/rspec-puppet/example/function_example_group.rb',
|
15
|
+
'lib/rspec-puppet/example/host_example_group.rb',
|
16
|
+
'lib/rspec-puppet/example.rb',
|
17
|
+
'lib/rspec-puppet/matchers/create_generic.rb',
|
18
|
+
'lib/rspec-puppet/matchers/create_resource.rb',
|
19
|
+
'lib/rspec-puppet/matchers/include_class.rb',
|
20
|
+
'lib/rspec-puppet/matchers/run.rb',
|
21
|
+
'lib/rspec-puppet/matchers.rb',
|
22
|
+
'lib/rspec-puppet/setup.rb',
|
23
|
+
'lib/rspec-puppet/support.rb',
|
24
|
+
'lib/rspec-puppet.rb',
|
25
|
+
'LICENSE',
|
26
|
+
'Rakefile',
|
27
|
+
'README.md',
|
28
|
+
'rspec-puppet.gemspec',
|
29
|
+
'spec/classes/boolean_regexp_spec.rb',
|
30
|
+
'spec/classes/boolean_spec.rb',
|
31
|
+
'spec/classes/sysctl_common_spec.rb',
|
32
|
+
'spec/defines/sysctl_before_spec.rb',
|
33
|
+
'spec/defines/sysctl_spec.rb',
|
34
|
+
'spec/hosts/foo_spec.rb',
|
35
|
+
'spec/hosts/testhost_spec.rb',
|
36
|
+
'spec/fixtures/manifests/site.pp',
|
37
|
+
'spec/fixtures/modules/boolean/manifests/init.pp',
|
38
|
+
'spec/fixtures/modules/sysctl/manifests/init.pp',
|
39
|
+
'spec/functions/split_spec.rb',
|
40
|
+
'spec/spec_helper.rb',
|
41
|
+
]
|
42
|
+
|
43
|
+
s.add_dependency 'rspec'
|
44
|
+
|
45
|
+
s.authors = ['Tim Sharpe']
|
46
|
+
s.email = 'tim@sharpe.id.au'
|
47
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'boolean' do
|
4
|
+
let(:title) { 'bool.testing' }
|
5
|
+
let(:params) { { :bool => false } }
|
6
|
+
let(:message_re) { /bool is false/ }
|
7
|
+
|
8
|
+
it { should create_notify("bool testing").with_message(message_re) }
|
9
|
+
it { should_not create_notify("bool testing").with_message(/true/) }
|
10
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
if Puppet::PUPPETVERSION !~ /0\.2/
|
4
|
+
describe 'boolean' do
|
5
|
+
let(:title) { 'bool.testing' }
|
6
|
+
let(:params) { { :bool => false } }
|
7
|
+
|
8
|
+
it { should create_notify("bool testing")\
|
9
|
+
.with_message("This will print when \$bool is false.") }
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'sysctl::common' do
|
4
|
+
it { should contain_exec('sysctl/reload') \
|
5
|
+
.with_command('/sbin/sysctl -p /etc/sysctl.conf').with_returns([0, 2]) }
|
6
|
+
it { should_not create_augeas('foo') }
|
7
|
+
describe 'when using with to specify a hash of parameters' do
|
8
|
+
it 'should fail if the parameter is not contained in the resource' do
|
9
|
+
expect do
|
10
|
+
subject.should contain_exec('sysctl/reload').with('foo' => 'bar')
|
11
|
+
end.to raise_error(RSpec::Expectations::ExpectationNotMetError)
|
12
|
+
end
|
13
|
+
it 'should pass if the parameters are contained in the resource' do
|
14
|
+
subject.should contain_exec('sysctl/reload').with(
|
15
|
+
'refreshonly' => 'true',
|
16
|
+
'returns' => [0, 2]
|
17
|
+
)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
describe 'when using without to specify parameter name(s)' do
|
21
|
+
it 'should pass if the parameter name is not contained in the resource' do
|
22
|
+
subject.should contain_exec('sysctl/reload').without('foo')
|
23
|
+
end
|
24
|
+
it 'should pass if the parameter names are not contained in the resource' do
|
25
|
+
subject.should contain_exec('sysctl/reload').without(['foo', 'bar'])
|
26
|
+
end
|
27
|
+
it 'should fail if any of the parameter names are contained in the resource' do
|
28
|
+
expect do
|
29
|
+
subject.should contain_exec('sysctl/reload').without(['foo', 'returns'])
|
30
|
+
end.to raise_error(RSpec::Expectations::ExpectationNotMetError)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe 'sysctl::common' do
|
36
|
+
let(:params) { { :test_param => "yes" } }
|
37
|
+
|
38
|
+
it { should create_class("sysctl::common")\
|
39
|
+
.with_test_param("yes") }
|
40
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'sysctl::before' do
|
4
|
+
let(:title) { 'sysctl::before' }
|
5
|
+
let(:params) { { :value => "title" } }
|
6
|
+
|
7
|
+
it "Should raise an error about needing the sysctl::common class" do
|
8
|
+
expect { should create_notify("message-title")\
|
9
|
+
.with_message("This should print if the class is here first.") }\
|
10
|
+
.to raise_error(Puppet::Error, /Could not find resource 'Class\[Sysctl::Common\]/)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe 'sysctl::before' do
|
15
|
+
let(:title) { 'test define' }
|
16
|
+
let(:pre_condition) { 'class {"sysctl::common":}' }
|
17
|
+
let(:params) { { :value => "title" } }
|
18
|
+
|
19
|
+
it { should create_resource("sysctl::before", 'test define')\
|
20
|
+
.with_param(:value, "title") }
|
21
|
+
|
22
|
+
it { should include_class("sysctl::common") }
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'sysctl' do
|
4
|
+
let(:title) { 'vm.swappiness' }
|
5
|
+
let(:params) { {:value => '60'} }
|
6
|
+
|
7
|
+
it { should include_class('sysctl::common') }
|
8
|
+
it { should create_augeas('sysctl/vm.swappiness') \
|
9
|
+
.with_context('/files/etc/sysctl.conf') \
|
10
|
+
.with_changes("set vm.swappiness '60'") \
|
11
|
+
.with_onlyif("match vm.swappiness[.='60'] size == 0") \
|
12
|
+
.with_notify('Exec[sysctl/reload]')\
|
13
|
+
.without_foo }
|
14
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
class sysctl::common ($test_param = 'yes') {
|
2
|
+
exec { 'sysctl/reload':
|
3
|
+
command => '/sbin/sysctl -p /etc/sysctl.conf',
|
4
|
+
refreshonly => true,
|
5
|
+
returns => [0, 2],
|
6
|
+
}
|
7
|
+
}
|
8
|
+
|
9
|
+
define sysctl($value) {
|
10
|
+
include sysctl::common
|
11
|
+
|
12
|
+
augeas { "sysctl/${name}":
|
13
|
+
context => '/files/etc/sysctl.conf',
|
14
|
+
changes => "set ${name} '${value}'",
|
15
|
+
onlyif => "match ${name}[.='${value}'] size == 0",
|
16
|
+
notify => Exec['sysctl/reload'],
|
17
|
+
}
|
18
|
+
}
|
19
|
+
|
20
|
+
class boolean($bool) {
|
21
|
+
$real_bool = $bool ? {
|
22
|
+
true => false,
|
23
|
+
false => true,
|
24
|
+
}
|
25
|
+
|
26
|
+
if ($real_bool) {
|
27
|
+
notify {"bool testing":
|
28
|
+
message => "This will print when \$bool is false."
|
29
|
+
}
|
30
|
+
}
|
31
|
+
}
|
32
|
+
|
33
|
+
define sysctl::before($value) {
|
34
|
+
Class['sysctl::common'] -> Sysctl::Before[$name]
|
35
|
+
|
36
|
+
notify {"message-${name}":
|
37
|
+
message => "This should print if the class is here first."
|
38
|
+
}
|
39
|
+
}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'split' do
|
4
|
+
it { should run.with_params('aoeu', 'o').and_return(['a', 'eu']) }
|
5
|
+
it { should run.with_params('foo').and_raise_error(Puppet::ParseError) }
|
6
|
+
it { should_not run.with_params('foo').and_raise_error(Puppet::DevError) }
|
7
|
+
|
8
|
+
it 'something' do
|
9
|
+
if Integer(Puppet.version.split('.').first) >= 3
|
10
|
+
expected_error = ArgumentError
|
11
|
+
else
|
12
|
+
expected_error = Puppet::ParseError
|
13
|
+
end
|
14
|
+
|
15
|
+
expect { subject.call('foo') }.to raise_error(expected_error)
|
16
|
+
end
|
17
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rspec-puppet-maestrodev
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.5.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Tim Sharpe
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-11-16 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rspec
|
16
|
+
requirement: &70235609484660 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70235609484660
|
25
|
+
description: RSpec tests for your Puppet manifests
|
26
|
+
email: tim@sharpe.id.au
|
27
|
+
executables:
|
28
|
+
- rspec-puppet-init
|
29
|
+
extensions: []
|
30
|
+
extra_rdoc_files: []
|
31
|
+
files:
|
32
|
+
- bin/rspec-puppet-init
|
33
|
+
- lib/rspec-puppet/example/class_example_group.rb
|
34
|
+
- lib/rspec-puppet/example/define_example_group.rb
|
35
|
+
- lib/rspec-puppet/example/function_example_group.rb
|
36
|
+
- lib/rspec-puppet/example/host_example_group.rb
|
37
|
+
- lib/rspec-puppet/example.rb
|
38
|
+
- lib/rspec-puppet/matchers/create_generic.rb
|
39
|
+
- lib/rspec-puppet/matchers/create_resource.rb
|
40
|
+
- lib/rspec-puppet/matchers/include_class.rb
|
41
|
+
- lib/rspec-puppet/matchers/run.rb
|
42
|
+
- lib/rspec-puppet/matchers.rb
|
43
|
+
- lib/rspec-puppet/setup.rb
|
44
|
+
- lib/rspec-puppet/support.rb
|
45
|
+
- lib/rspec-puppet.rb
|
46
|
+
- LICENSE
|
47
|
+
- Rakefile
|
48
|
+
- README.md
|
49
|
+
- rspec-puppet.gemspec
|
50
|
+
- spec/classes/boolean_regexp_spec.rb
|
51
|
+
- spec/classes/boolean_spec.rb
|
52
|
+
- spec/classes/sysctl_common_spec.rb
|
53
|
+
- spec/defines/sysctl_before_spec.rb
|
54
|
+
- spec/defines/sysctl_spec.rb
|
55
|
+
- spec/hosts/foo_spec.rb
|
56
|
+
- spec/hosts/testhost_spec.rb
|
57
|
+
- spec/fixtures/manifests/site.pp
|
58
|
+
- spec/fixtures/modules/boolean/manifests/init.pp
|
59
|
+
- spec/fixtures/modules/sysctl/manifests/init.pp
|
60
|
+
- spec/functions/split_spec.rb
|
61
|
+
- spec/spec_helper.rb
|
62
|
+
homepage: https://github.com/rodjek/rspec-puppet/
|
63
|
+
licenses: []
|
64
|
+
post_install_message:
|
65
|
+
rdoc_options: []
|
66
|
+
require_paths:
|
67
|
+
- lib
|
68
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
69
|
+
none: false
|
70
|
+
requirements:
|
71
|
+
- - ! '>='
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '0'
|
74
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
75
|
+
none: false
|
76
|
+
requirements:
|
77
|
+
- - ! '>='
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
80
|
+
requirements: []
|
81
|
+
rubyforge_project:
|
82
|
+
rubygems_version: 1.8.9
|
83
|
+
signing_key:
|
84
|
+
specification_version: 3
|
85
|
+
summary: RSpec tests for your Puppet manifests
|
86
|
+
test_files: []
|