halite 1.4.0 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +4 -2
- data/CHANGELOG.md +12 -0
- data/gemfiles/master.gemfile +1 -0
- data/halite.gemspec +2 -2
- data/lib/halite/converter/metadata.rb +1 -1
- data/lib/halite/gem.rb +15 -0
- data/lib/halite/spec_helper/runner.rb +3 -0
- data/lib/halite/version.rb +1 -1
- data/spec/converter/metadata_spec.rb +11 -9
- data/spec/fixtures/cookbooks/test1/metadata.rb +1 -1
- data/spec/fixtures/cookbooks/test2/metadata.rb +1 -1
- data/spec/fixtures/cookbooks/test3/metadata.rb +1 -1
- data/spec/fixtures/{gems/test4/lib/test1.rb → cookbooks/test4/files/halite_gem/test4.rb} +0 -0
- data/spec/fixtures/cookbooks/test4/files/halite_gem/test4/version.rb +3 -0
- data/spec/fixtures/cookbooks/test4/libraries/default.rb +3 -0
- data/spec/fixtures/cookbooks/test4/metadata.rb +9 -0
- data/spec/fixtures/gems/test3/test3.gemspec +1 -0
- data/spec/fixtures/gems/test4/lib/test4.rb +2 -0
- data/spec/fixtures/gems/test4/test4.gemspec +1 -0
- data/spec/gem_spec.rb +4 -0
- data/spec/integration_spec.rb +4 -0
- metadata +22 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1e31ce37e3c552a468e47471ddca26379265e6ee
|
4
|
+
data.tar.gz: 0b3404564d2f9687e26c0b132d6b0efcdb075cd8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8a1d326bf0b05463d54b2eee1d75d99bcf975a8f396b313183b29ecd61e40874e3da881f66510d1aa4beee89f55dda5663c16db39b410f2777f8aa7dd5c728f0
|
7
|
+
data.tar.gz: d5bc501dc9431f2a2af53b63084da17c3f2150ace12000e52b7dee2b06759cc1815e447bb4a92c4911e78cea14e90cfd5b4f40f74fe42a065cff3a84d6cdd305
|
data/.travis.yml
CHANGED
@@ -2,8 +2,8 @@ sudo: false
|
|
2
2
|
cache: bundler
|
3
3
|
language: ruby
|
4
4
|
rvm:
|
5
|
-
- "2.
|
6
|
-
- "2.
|
5
|
+
- "2.3.3"
|
6
|
+
# - "2.4.1"
|
7
7
|
gemfile:
|
8
8
|
- gemfiles/chef-12.0.gemfile
|
9
9
|
- gemfiles/chef-12.1.gemfile
|
@@ -26,4 +26,6 @@ before_install:
|
|
26
26
|
- gem --version
|
27
27
|
- gem install bundler
|
28
28
|
- bundle --version
|
29
|
+
- bundle config --local path ${BUNDLE_PATH:-vendor/bundle}
|
30
|
+
install: bundle update --jobs=3 --retry=3
|
29
31
|
script: bundle exec rake integration
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
# Halite Changelog
|
2
2
|
|
3
|
+
## v1.5.0
|
4
|
+
|
5
|
+
* Set the default spec platform and version even when using the Halite runner
|
6
|
+
API directly.
|
7
|
+
* Allow setting the chef_version constraints on a cookbook through a normal
|
8
|
+
gem dependency on the `chef` gem.
|
9
|
+
* The default chef_version constraint has been changed from `~> 12.0` to `>= 12`
|
10
|
+
to allow for better interaction with the upcoming Chef 13 release.
|
11
|
+
* Bump Stove dependency from 4.x to 5.x. This removes Ruby 2.0 compat. Sorry.
|
12
|
+
* No longer testing on Ruby 2.2, which happens to be entering security-maintenance
|
13
|
+
mode today. Don't use it.
|
14
|
+
|
3
15
|
## v1.4.0
|
4
16
|
|
5
17
|
* Set a default platform and version in ChefSpec because Fauxhai is trying to
|
data/gemfiles/master.gemfile
CHANGED
@@ -17,6 +17,7 @@
|
|
17
17
|
eval_gemfile File.expand_path('../../Gemfile', __FILE__)
|
18
18
|
|
19
19
|
gem 'chef', github: 'chef/chef'
|
20
|
+
gem 'ohai', github: 'chef/ohai'
|
20
21
|
gem 'poise', github: 'poise/poise'
|
21
22
|
gem 'poise-boiler', github: 'poise/poise-boiler'
|
22
23
|
gem 'poise-profiler', github: 'poise/poise-profiler'
|
data/halite.gemspec
CHANGED
@@ -33,8 +33,8 @@ Gem::Specification.new do |spec|
|
|
33
33
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
34
34
|
spec.require_paths = %w{lib}
|
35
35
|
|
36
|
-
spec.add_dependency 'chef', '
|
37
|
-
spec.add_dependency 'stove', '~>
|
36
|
+
spec.add_dependency 'chef', '>= 12.0', '< 14.0'
|
37
|
+
spec.add_dependency 'stove', '~> 5.0'
|
38
38
|
spec.add_dependency 'bundler' # Used for Bundler.load_gemspec
|
39
39
|
spec.add_dependency 'thor' # Used for Thor::Shell
|
40
40
|
|
@@ -47,7 +47,7 @@ module Halite
|
|
47
47
|
buf << ", #{dep.requirement.inspect}" if dep.requirement != '>= 0'
|
48
48
|
buf << "\n"
|
49
49
|
end
|
50
|
-
buf << "chef_version
|
50
|
+
buf << "chef_version(*#{gem_data.chef_version_requirement.inspect}) if defined?(chef_version)\n"
|
51
51
|
end
|
52
52
|
end
|
53
53
|
|
data/lib/halite/gem.rb
CHANGED
@@ -206,6 +206,21 @@ module Halite
|
|
206
206
|
nil
|
207
207
|
end
|
208
208
|
|
209
|
+
# Figure out which version of Chef this cookbook requires. Returns an array
|
210
|
+
# of Gem::Requirement-style string like `~> 12.0`.
|
211
|
+
#
|
212
|
+
# @return [Array<String>]
|
213
|
+
def chef_version_requirement
|
214
|
+
if spec.metadata['halite_chef_version']
|
215
|
+
# Manually overridden by gem metadata, use that.
|
216
|
+
[spec.metadata['halite_chef_version']]
|
217
|
+
elsif dep = spec.dependencies.find {|dep| dep.name == 'chef' && !dep.requirement.none? }
|
218
|
+
dep.requirement.as_list
|
219
|
+
else
|
220
|
+
['>= 12']
|
221
|
+
end
|
222
|
+
end
|
223
|
+
|
209
224
|
private
|
210
225
|
|
211
226
|
# Find a spec given a dependency.
|
@@ -43,6 +43,9 @@ module Halite
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def initialize(options={})
|
46
|
+
# Repeating the detault platform.
|
47
|
+
options[:platform] ||= 'ubuntu'
|
48
|
+
options[:version] ||= '16.04'
|
46
49
|
super(options) do |node|
|
47
50
|
# Allow inserting arbitrary attribute data in to the node
|
48
51
|
node.attributes.default = Chef::Mixin::DeepMerge.merge(node.attributes.default, options[:default_attributes]) if options[:default_attributes]
|
data/lib/halite/version.rb
CHANGED
@@ -25,6 +25,7 @@ describe Halite::Converter::Metadata do
|
|
25
25
|
let(:issues_url) { nil }
|
26
26
|
let(:cookbook_dependencies) { [] }
|
27
27
|
let(:gem_metadata) { {} }
|
28
|
+
let(:chef_version_requirement) { ['>= 12'] }
|
28
29
|
let(:spec) do
|
29
30
|
instance_double('Gem::Specification',
|
30
31
|
author: nil,
|
@@ -48,6 +49,7 @@ describe Halite::Converter::Metadata do
|
|
48
49
|
version: version,
|
49
50
|
cookbook_version: cookbook_version,
|
50
51
|
issues_url: issues_url,
|
52
|
+
chef_version_requirement: chef_version_requirement,
|
51
53
|
)
|
52
54
|
end
|
53
55
|
subject { described_class.generate(gem_data) }
|
@@ -56,7 +58,7 @@ describe Halite::Converter::Metadata do
|
|
56
58
|
it { is_expected.to eq <<-EOH }
|
57
59
|
name "mygem"
|
58
60
|
version "1.0.0"
|
59
|
-
chef_version
|
61
|
+
chef_version(*[">= 12"]) if defined?(chef_version)
|
60
62
|
EOH
|
61
63
|
end # /context with simple data
|
62
64
|
|
@@ -68,7 +70,7 @@ EOH
|
|
68
70
|
# header
|
69
71
|
name "mygem"
|
70
72
|
version "1.0.0"
|
71
|
-
chef_version
|
73
|
+
chef_version(*[">= 12"]) if defined?(chef_version)
|
72
74
|
EOH
|
73
75
|
end # /context with a license header
|
74
76
|
|
@@ -78,7 +80,7 @@ EOH
|
|
78
80
|
name "mygem"
|
79
81
|
version "1.0.0"
|
80
82
|
depends "other"
|
81
|
-
chef_version
|
83
|
+
chef_version(*[">= 12"]) if defined?(chef_version)
|
82
84
|
EOH
|
83
85
|
end # /context with one dependency
|
84
86
|
|
@@ -89,7 +91,7 @@ name "mygem"
|
|
89
91
|
version "1.0.0"
|
90
92
|
depends "other", "~> 1.0"
|
91
93
|
depends "another", "~> 2.0.0"
|
92
|
-
chef_version
|
94
|
+
chef_version(*[">= 12"]) if defined?(chef_version)
|
93
95
|
EOH
|
94
96
|
end # /context with two dependencies
|
95
97
|
|
@@ -102,7 +104,7 @@ EOH
|
|
102
104
|
name "mygem"
|
103
105
|
version "1.0.0"
|
104
106
|
description "My awesome library!"
|
105
|
-
chef_version
|
107
|
+
chef_version(*[">= 12"]) if defined?(chef_version)
|
106
108
|
EOH
|
107
109
|
end # /context with a description
|
108
110
|
|
@@ -116,17 +118,17 @@ EOH
|
|
116
118
|
name "mygem"
|
117
119
|
version "1.0.0"
|
118
120
|
long_description "My awesome readme!\\nCopyright me.\\n"
|
119
|
-
chef_version
|
121
|
+
chef_version(*[">= 12"]) if defined?(chef_version)
|
120
122
|
EOH
|
121
123
|
end # /context with a readme
|
122
124
|
|
123
125
|
context 'with a chef_version' do
|
124
|
-
let(:
|
126
|
+
let(:chef_version_requirement) { ['>= 0'] }
|
125
127
|
|
126
128
|
it { is_expected.to eq <<-EOH }
|
127
129
|
name "mygem"
|
128
130
|
version "1.0.0"
|
129
|
-
chef_version
|
131
|
+
chef_version(*[">= 0"]) if defined?(chef_version)
|
130
132
|
EOH
|
131
133
|
end # /context with a chef_version
|
132
134
|
|
@@ -137,7 +139,7 @@ EOH
|
|
137
139
|
name "mygem"
|
138
140
|
version "1.0.0"
|
139
141
|
issues_url "http://issues" if defined?(issues_url)
|
140
|
-
chef_version
|
142
|
+
chef_version(*[">= 12"]) if defined?(chef_version)
|
141
143
|
EOH
|
142
144
|
end # /context with an issues_url
|
143
145
|
end # /describe #generate
|
File without changes
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
name "test4"
|
3
|
+
version "2.3.1"
|
4
|
+
maintainer "Noah Kantrowitz"
|
5
|
+
maintainer_email "noah@coderanger.net"
|
6
|
+
source_url "http://example.com/" if defined?(source_url)
|
7
|
+
issues_url "http://issues" if defined?(issues_url)
|
8
|
+
license "Apache 2.0"
|
9
|
+
chef_version(*[">= 1"]) if defined?(chef_version)
|
@@ -13,6 +13,7 @@ Gem::Specification.new do |spec|
|
|
13
13
|
spec.homepage = 'http://example.com/'
|
14
14
|
spec.license = 'Apache 2.0'
|
15
15
|
spec.metadata['halite_entry_point'] = 'test3/dsl'
|
16
|
+
spec.metadata['halite_chef_version'] = '>= 3'
|
16
17
|
|
17
18
|
spec.files = `cd #{File.expand_path('..', __FILE__)} && git ls-files`.split($/)
|
18
19
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
data/spec/gem_spec.rb
CHANGED
@@ -66,6 +66,7 @@ describe Halite::Gem do
|
|
66
66
|
its(:cookbook_dependencies) { is_expected.to eq [] }
|
67
67
|
its(:is_halite_cookbook?) { is_expected.to be_truthy }
|
68
68
|
its(:issues_url) { is_expected.to be_nil }
|
69
|
+
its(:chef_version_requirement) { is_expected.to eq [">= 12"] }
|
69
70
|
|
70
71
|
describe '#each_file' do
|
71
72
|
context 'with no prefixes' do
|
@@ -104,6 +105,7 @@ describe Halite::Gem do
|
|
104
105
|
its(:cookbook_dependencies) { is_expected.to eq [Halite::Dependencies::Dependency.new('testdep', '>= 0', :requirements)] }
|
105
106
|
its(:is_halite_cookbook?) { is_expected.to be_truthy }
|
106
107
|
its(:issues_url) { is_expected.to be_nil }
|
108
|
+
its(:chef_version_requirement) { is_expected.to eq [">= 12"] }
|
107
109
|
|
108
110
|
describe '#each_file' do
|
109
111
|
context 'with no prefixes' do
|
@@ -139,6 +141,7 @@ describe Halite::Gem do
|
|
139
141
|
its(:cookbook_dependencies) { is_expected.to eq [Halite::Dependencies::Dependency.new('test2', '~> 4.5.6', :dependencies)] }
|
140
142
|
its(:is_halite_cookbook?) { is_expected.to be_truthy }
|
141
143
|
its(:issues_url) { is_expected.to be_nil }
|
144
|
+
its(:chef_version_requirement) { is_expected.to eq [">= 3"] }
|
142
145
|
end # /context when loading test3
|
143
146
|
|
144
147
|
context 'when loading test4' do
|
@@ -147,6 +150,7 @@ describe Halite::Gem do
|
|
147
150
|
its(:version) { is_expected.to eq '2.3.1.rc.1' }
|
148
151
|
its(:cookbook_version) { is_expected.to eq '2.3.1' }
|
149
152
|
its(:issues_url) { is_expected.to eq 'http://issues' }
|
153
|
+
its(:chef_version_requirement) { is_expected.to eq [">= 1"] }
|
150
154
|
end # /context when loading test4
|
151
155
|
|
152
156
|
context 'when loading a Gem::Dependency' do
|
data/spec/integration_spec.rb
CHANGED
@@ -77,4 +77,8 @@ describe 'integration tests' do
|
|
77
77
|
let(:expect_output) { '!!!!!!!!!!test34.5.6' }
|
78
78
|
it_should_behave_like 'an integration test', 'test3', '7.8.9', [['testdep', '1.0.0']]
|
79
79
|
end # /context with test3 gem
|
80
|
+
|
81
|
+
context 'with test4 gem', integration: true do
|
82
|
+
it_should_behave_like 'an integration test', 'test4', '2.3.1.rc.1'
|
83
|
+
end # /context with test1 gem
|
80
84
|
end
|
metadata
CHANGED
@@ -1,43 +1,49 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: halite
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Noah Kantrowitz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-03-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: chef
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '12.0'
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '14.0'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
|
-
- - "
|
27
|
+
- - ">="
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: '12.0'
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '14.0'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: stove
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
37
|
- - "~>"
|
32
38
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
39
|
+
version: '5.0'
|
34
40
|
type: :runtime
|
35
41
|
prerelease: false
|
36
42
|
version_requirements: !ruby/object:Gem::Requirement
|
37
43
|
requirements:
|
38
44
|
- - "~>"
|
39
45
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
46
|
+
version: '5.0'
|
41
47
|
- !ruby/object:Gem::Dependency
|
42
48
|
name: bundler
|
43
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -183,6 +189,10 @@ files:
|
|
183
189
|
- spec/fixtures/cookbooks/test3/libraries/default.rb
|
184
190
|
- spec/fixtures/cookbooks/test3/metadata.rb
|
185
191
|
- spec/fixtures/cookbooks/test3/recipes/default.rb
|
192
|
+
- spec/fixtures/cookbooks/test4/files/halite_gem/test4.rb
|
193
|
+
- spec/fixtures/cookbooks/test4/files/halite_gem/test4/version.rb
|
194
|
+
- spec/fixtures/cookbooks/test4/libraries/default.rb
|
195
|
+
- spec/fixtures/cookbooks/test4/metadata.rb
|
186
196
|
- spec/fixtures/gems/test1/Rakefile
|
187
197
|
- spec/fixtures/gems/test1/lib/test1.rb
|
188
198
|
- spec/fixtures/gems/test1/lib/test1/version.rb
|
@@ -202,7 +212,7 @@ files:
|
|
202
212
|
- spec/fixtures/gems/test3/lib/test3/version.rb
|
203
213
|
- spec/fixtures/gems/test3/test3.gemspec
|
204
214
|
- spec/fixtures/gems/test4/Rakefile
|
205
|
-
- spec/fixtures/gems/test4/lib/
|
215
|
+
- spec/fixtures/gems/test4/lib/test4.rb
|
206
216
|
- spec/fixtures/gems/test4/lib/test4/version.rb
|
207
217
|
- spec/fixtures/gems/test4/test4.gemspec
|
208
218
|
- spec/gem_spec.rb
|
@@ -262,6 +272,10 @@ test_files:
|
|
262
272
|
- spec/fixtures/cookbooks/test3/libraries/default.rb
|
263
273
|
- spec/fixtures/cookbooks/test3/metadata.rb
|
264
274
|
- spec/fixtures/cookbooks/test3/recipes/default.rb
|
275
|
+
- spec/fixtures/cookbooks/test4/files/halite_gem/test4.rb
|
276
|
+
- spec/fixtures/cookbooks/test4/files/halite_gem/test4/version.rb
|
277
|
+
- spec/fixtures/cookbooks/test4/libraries/default.rb
|
278
|
+
- spec/fixtures/cookbooks/test4/metadata.rb
|
265
279
|
- spec/fixtures/gems/test1/Rakefile
|
266
280
|
- spec/fixtures/gems/test1/lib/test1.rb
|
267
281
|
- spec/fixtures/gems/test1/lib/test1/version.rb
|
@@ -281,7 +295,7 @@ test_files:
|
|
281
295
|
- spec/fixtures/gems/test3/lib/test3/version.rb
|
282
296
|
- spec/fixtures/gems/test3/test3.gemspec
|
283
297
|
- spec/fixtures/gems/test4/Rakefile
|
284
|
-
- spec/fixtures/gems/test4/lib/
|
298
|
+
- spec/fixtures/gems/test4/lib/test4.rb
|
285
299
|
- spec/fixtures/gems/test4/lib/test4/version.rb
|
286
300
|
- spec/fixtures/gems/test4/test4.gemspec
|
287
301
|
- spec/gem_spec.rb
|