chef-sugar 1.0.0.beta.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.
- checksums.yaml +7 -0
- data/.gitignore +22 -0
- data/.kitchen.yml +14 -0
- data/.travis.yml +6 -0
- data/CHANGELOG.md +7 -0
- data/CONTRIBUTING.md +20 -0
- data/Gemfile +2 -0
- data/LICENSE +201 -0
- data/README.md +256 -0
- data/Rakefile +1 -0
- data/chef-extensions.gemspec +37 -0
- data/lib/chef/sugar.rb +38 -0
- data/lib/chef/sugar/architecture.rb +53 -0
- data/lib/chef/sugar/cloud.rb +147 -0
- data/lib/chef/sugar/ip.rb +48 -0
- data/lib/chef/sugar/node.rb +41 -0
- data/lib/chef/sugar/platform.rb +166 -0
- data/lib/chef/sugar/platform_family.rb +158 -0
- data/lib/chef/sugar/ruby.rb +51 -0
- data/lib/chef/sugar/shell.rb +136 -0
- data/lib/chef/sugar/vagrant.rb +41 -0
- data/lib/chef/sugar/version.rb +21 -0
- data/metadata.rb +8 -0
- data/recipes/default.rb +25 -0
- data/spec/spec_helper.rb +5 -0
- data/spec/support/shared_examples.rb +20 -0
- data/spec/unit/chef/extensions/architecture_spec.rb +29 -0
- data/spec/unit/chef/extensions/cloud_spec.rb +113 -0
- data/spec/unit/chef/extensions/ip_spec.rb +53 -0
- data/spec/unit/chef/extensions/node_spec.rb +30 -0
- data/spec/unit/chef/extensions/platform_family_spec.rb +137 -0
- data/spec/unit/chef/extensions/platform_spec.rb +201 -0
- data/spec/unit/chef/extensions/ruby_spec.rb +39 -0
- data/spec/unit/chef/extensions/shell_spec.rb +82 -0
- data/spec/unit/chef/extensions/vagrant_spec.rb +17 -0
- data/spec/unit/recipes/default_spec.rb +9 -0
- metadata +207 -0
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Chef::Sugar::Ruby do
|
4
|
+
it_behaves_like 'a chef sugar'
|
5
|
+
|
6
|
+
describe '#ruby_20?' do
|
7
|
+
it 'returns true when the ruby version is 2.0' do
|
8
|
+
node = { 'languages' => { 'ruby' => { 'version' => '2.0.0' } } }
|
9
|
+
expect(described_class.ruby_20?(node)).to be_true
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'returns true when the ruby version is less than 2.0' do
|
13
|
+
node = { 'languages' => { 'ruby' => { 'version' => '1.9.3' } } }
|
14
|
+
expect(described_class.ruby_20?(node)).to be_false
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'returns false when the ruby version is higher than 2.0' do
|
18
|
+
node = { 'languages' => { 'ruby' => { 'version' => '3.0.0' } } }
|
19
|
+
expect(described_class.ruby_20?(node)).to be_false
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '#ruby_19?' do
|
24
|
+
it 'returns true when the ruby version is 1.9' do
|
25
|
+
node = { 'languages' => { 'ruby' => { 'version' => '1.9.1' } } }
|
26
|
+
expect(described_class.ruby_19?(node)).to be_true
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'returns true when the ruby version is less than 1.9' do
|
30
|
+
node = { 'languages' => { 'ruby' => { 'version' => '1.8.7' } } }
|
31
|
+
expect(described_class.ruby_19?(node)).to be_false
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'returns false when the ruby version is higher than 1.9' do
|
35
|
+
node = { 'languages' => { 'ruby' => { 'version' => '2.0.0' } } }
|
36
|
+
expect(described_class.ruby_19?(node)).to be_false
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Chef::Sugar::Shell do
|
4
|
+
describe '#which' do
|
5
|
+
it 'returns the first executable matching the command' do
|
6
|
+
File.stub(:executable?).and_return(false)
|
7
|
+
File.stub(:executable?).with('/usr/bin/mongo').and_return(true)
|
8
|
+
expect(described_class.which('mongo')).to eq('/usr/bin/mongo')
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'returns nil when no command is found' do
|
12
|
+
File.stub(:executable?).and_return(false)
|
13
|
+
expect(described_class.which('node')).to be_nil
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe '#dev_null' do
|
18
|
+
it 'returns NUL on Windows' do
|
19
|
+
node = { 'platform_family' => 'windows' }
|
20
|
+
expect(described_class.dev_null(node)).to eq('NUL')
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'returns /dev/null on Linux' do
|
24
|
+
node = { 'platform_family' => 'debian' }
|
25
|
+
expect(described_class.dev_null(node)).to eq('/dev/null')
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe '#installed?' do
|
30
|
+
it 'returns true if the given binary exists' do
|
31
|
+
File.stub(:which).and_return(false)
|
32
|
+
File.stub(:which).with('/usr/bin/mongo').and_return(true)
|
33
|
+
expect(described_class.installed?('mongo')).to be_true
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'returns false if the given binary does not exist' do
|
37
|
+
File.stub(:executable?).and_return(false)
|
38
|
+
expect(described_class.installed?('node')).to be_false
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe '#installed_at_version?' do
|
43
|
+
it 'returns true if the command is installed at the correct version' do
|
44
|
+
described_class.stub(:which).and_return(true)
|
45
|
+
described_class.stub(:version_for).and_return('1.2.3')
|
46
|
+
expect(described_class.installed_at_version?('mongo', '1.2.3')).to be_true
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'returns true if the command is installed at the correct version and has additional output' do
|
50
|
+
described_class.stub(:which).and_return(true)
|
51
|
+
described_class.stub(:version_for).and_return('Mongo DB version 1.2.3. Some other text.')
|
52
|
+
expect(described_class.installed_at_version?('mongo', '1.2.3')).to be_true
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'returns true if the command is installed at the correct version with a regex' do
|
56
|
+
described_class.stub(:which).and_return(true)
|
57
|
+
described_class.stub(:version_for).and_return('1.2.3')
|
58
|
+
expect(described_class.installed_at_version?('mongo', /1\.2/)).to be_true
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'returns false if the command is installed at the wrong version' do
|
62
|
+
described_class.stub(:which).and_return(true)
|
63
|
+
described_class.stub(:version_for).and_return('1.2.3')
|
64
|
+
expect(described_class.installed_at_version?('mongo', '4.5.6')).to be_false
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'returns false if the command is not installed' do
|
68
|
+
described_class.stub(:which).and_return(nil)
|
69
|
+
expect(described_class.installed_at_version?('mongo', '1.0.0')).to be_false
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
describe '#version_for' do
|
74
|
+
let(:shell_out) { double('shell_out', run_command: nil, error!: nil, stdout: '1.2.3') }
|
75
|
+
before { Mixlib::ShellOut.stub(:new).and_return(shell_out) }
|
76
|
+
|
77
|
+
it 'runs the thing in shellout' do
|
78
|
+
expect(Mixlib::ShellOut).to receive(:new).with('mongo --version')
|
79
|
+
described_class.version_for('mongo')
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Chef::Sugar::Vagrant do
|
4
|
+
it_behaves_like 'a chef sugar'
|
5
|
+
|
6
|
+
describe '#vagrant?' do
|
7
|
+
it 'returns true when the machine is on vagrant' do
|
8
|
+
node = { 'vagrant' => {} }
|
9
|
+
expect(described_class.vagrant?(node)).to be_true
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'returns false when the machine is not on vagrant' do
|
13
|
+
node = {}
|
14
|
+
expect(described_class.vagrant?(node)).to be_false
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
metadata
ADDED
@@ -0,0 +1,207 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: chef-sugar
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0.beta.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Seth Vargo
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-10-15 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.3'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: chef
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '11.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '11.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '2.11'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '2.11'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: chefspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 3.0.0.beta
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 3.0.0.beta
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: foodcritic
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ~>
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '3.0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ~>
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '3.0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: test-kitchen
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ~>
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 1.0.0.beta
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ~>
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 1.0.0.beta
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: kitchen-vagrant
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ~>
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0.11'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ~>
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0.11'
|
125
|
+
description: A series of helpful sugar of the Chef core and other resources to make
|
126
|
+
a cleaner, more lean recipe DSL, enforce DRY principles, and make writing Chef recipes
|
127
|
+
an awesome experience!
|
128
|
+
email:
|
129
|
+
- sethvargo@gmail.com
|
130
|
+
executables: []
|
131
|
+
extensions: []
|
132
|
+
extra_rdoc_files: []
|
133
|
+
files:
|
134
|
+
- .gitignore
|
135
|
+
- .kitchen.yml
|
136
|
+
- .travis.yml
|
137
|
+
- CHANGELOG.md
|
138
|
+
- CONTRIBUTING.md
|
139
|
+
- Gemfile
|
140
|
+
- LICENSE
|
141
|
+
- README.md
|
142
|
+
- Rakefile
|
143
|
+
- chef-extensions.gemspec
|
144
|
+
- lib/chef/sugar.rb
|
145
|
+
- lib/chef/sugar/architecture.rb
|
146
|
+
- lib/chef/sugar/cloud.rb
|
147
|
+
- lib/chef/sugar/ip.rb
|
148
|
+
- lib/chef/sugar/node.rb
|
149
|
+
- lib/chef/sugar/platform.rb
|
150
|
+
- lib/chef/sugar/platform_family.rb
|
151
|
+
- lib/chef/sugar/ruby.rb
|
152
|
+
- lib/chef/sugar/shell.rb
|
153
|
+
- lib/chef/sugar/vagrant.rb
|
154
|
+
- lib/chef/sugar/version.rb
|
155
|
+
- metadata.rb
|
156
|
+
- recipes/default.rb
|
157
|
+
- spec/spec_helper.rb
|
158
|
+
- spec/support/shared_examples.rb
|
159
|
+
- spec/unit/chef/extensions/architecture_spec.rb
|
160
|
+
- spec/unit/chef/extensions/cloud_spec.rb
|
161
|
+
- spec/unit/chef/extensions/ip_spec.rb
|
162
|
+
- spec/unit/chef/extensions/node_spec.rb
|
163
|
+
- spec/unit/chef/extensions/platform_family_spec.rb
|
164
|
+
- spec/unit/chef/extensions/platform_spec.rb
|
165
|
+
- spec/unit/chef/extensions/ruby_spec.rb
|
166
|
+
- spec/unit/chef/extensions/shell_spec.rb
|
167
|
+
- spec/unit/chef/extensions/vagrant_spec.rb
|
168
|
+
- spec/unit/recipes/default_spec.rb
|
169
|
+
homepage: https://github.com/sethvargo/chef-sugar
|
170
|
+
licenses:
|
171
|
+
- Apache 2.0
|
172
|
+
metadata: {}
|
173
|
+
post_install_message:
|
174
|
+
rdoc_options: []
|
175
|
+
require_paths:
|
176
|
+
- lib
|
177
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
178
|
+
requirements:
|
179
|
+
- - '>='
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: '1.9'
|
182
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
183
|
+
requirements:
|
184
|
+
- - '>'
|
185
|
+
- !ruby/object:Gem::Version
|
186
|
+
version: 1.3.1
|
187
|
+
requirements: []
|
188
|
+
rubyforge_project:
|
189
|
+
rubygems_version: 2.0.3
|
190
|
+
signing_key:
|
191
|
+
specification_version: 4
|
192
|
+
summary: A collection of helper methods and modules that make working with Chef recipes
|
193
|
+
awesome.
|
194
|
+
test_files:
|
195
|
+
- spec/spec_helper.rb
|
196
|
+
- spec/support/shared_examples.rb
|
197
|
+
- spec/unit/chef/extensions/architecture_spec.rb
|
198
|
+
- spec/unit/chef/extensions/cloud_spec.rb
|
199
|
+
- spec/unit/chef/extensions/ip_spec.rb
|
200
|
+
- spec/unit/chef/extensions/node_spec.rb
|
201
|
+
- spec/unit/chef/extensions/platform_family_spec.rb
|
202
|
+
- spec/unit/chef/extensions/platform_spec.rb
|
203
|
+
- spec/unit/chef/extensions/ruby_spec.rb
|
204
|
+
- spec/unit/chef/extensions/shell_spec.rb
|
205
|
+
- spec/unit/chef/extensions/vagrant_spec.rb
|
206
|
+
- spec/unit/recipes/default_spec.rb
|
207
|
+
has_rdoc:
|