halite 1.4.0 → 1.5.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 383a870b42dac4047e9b88c03a02af8b9c99ebaa
4
- data.tar.gz: c6d8081b5b781d66fa1d91aa4862476fc032f3e1
3
+ metadata.gz: 1e31ce37e3c552a468e47471ddca26379265e6ee
4
+ data.tar.gz: 0b3404564d2f9687e26c0b132d6b0efcdb075cd8
5
5
  SHA512:
6
- metadata.gz: bf3bfea8cf053b1ee3efa0f66c0945b472282fc34ebaaeb4fd44d038fe57964ed4808eded5a758f082447a39baaee48fb611e55db2815cf75052a4d45e967bad
7
- data.tar.gz: 2d51de40d5d43315fad759cc8c2ad275ca239c094c5f0e19ffcca4dcd1816c25cca51e5ae4bb708131f836969ef9dcfcc0f39ed6e18647a7ea9588e302eebbd3
6
+ metadata.gz: 8a1d326bf0b05463d54b2eee1d75d99bcf975a8f396b313183b29ecd61e40874e3da881f66510d1aa4beee89f55dda5663c16db39b410f2777f8aa7dd5c728f0
7
+ data.tar.gz: d5bc501dc9431f2a2af53b63084da17c3f2150ace12000e52b7dee2b06759cc1815e447bb4a92c4911e78cea14e90cfd5b4f40f74fe42a065cff3a84d6cdd305
@@ -2,8 +2,8 @@ sudo: false
2
2
  cache: bundler
3
3
  language: ruby
4
4
  rvm:
5
- - "2.2.5"
6
- - "2.3.1"
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
@@ -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
@@ -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'
@@ -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', '~> 12.0'
37
- spec.add_dependency 'stove', '~> 4.0'
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 #{(gem_data.spec.metadata['halite_chef_version'] || '~> 12').inspect} if defined?(chef_version)\n"
50
+ buf << "chef_version(*#{gem_data.chef_version_requirement.inspect}) if defined?(chef_version)\n"
51
51
  end
52
52
  end
53
53
 
@@ -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]
@@ -17,5 +17,5 @@
17
17
 
18
18
  module Halite
19
19
  # Halite version.
20
- VERSION = '1.4.0'
20
+ VERSION = '1.5.0'
21
21
  end
@@ -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 "~> 12" if defined?(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 "~> 12" if defined?(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 "~> 12" if defined?(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 "~> 12" if defined?(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 "~> 12" if defined?(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 "~> 12" if defined?(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(:gem_metadata) { {'halite_chef_version' => '>= 0'} }
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 ">= 0" if defined?(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 "~> 12" if defined?(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
@@ -6,4 +6,4 @@ maintainer "Noah Kantrowitz"
6
6
  maintainer_email "noah@coderanger.net"
7
7
  source_url "http://example.com/" if defined?(source_url)
8
8
  license "Apache 2.0"
9
- chef_version "~> 12" if defined?(chef_version)
9
+ chef_version(*[">= 12"]) if defined?(chef_version)
@@ -6,4 +6,4 @@ maintainer_email "noah@coderanger.net"
6
6
  source_url "http://example.com/" if defined?(source_url)
7
7
  license "Apache 2.0"
8
8
  depends "testdep"
9
- chef_version "~> 12" if defined?(chef_version)
9
+ chef_version(*[">= 12"]) if defined?(chef_version)
@@ -6,4 +6,4 @@ maintainer_email "noah@coderanger.net"
6
6
  source_url "http://example.com/" if defined?(source_url)
7
7
  license "Apache 2.0"
8
8
  depends "test2", "~> 4.5.6"
9
- chef_version "~> 12" if defined?(chef_version)
9
+ chef_version(*[">= 3"]) if defined?(chef_version)
@@ -0,0 +1,3 @@
1
+ module Test4
2
+ VERSION = '2.3.1.rc.1'
3
+ end
@@ -0,0 +1,3 @@
1
+ # coding: utf-8
2
+ raise 'Halite is not compatible with no_lazy_load false, please set no_lazy_load true in your Chef configuration file.' unless Chef::Config[:no_lazy_load]
3
+ $LOAD_PATH << File.expand_path('../../files/halite_gem', __FILE__)
@@ -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) }
@@ -0,0 +1,2 @@
1
+ module Test4
2
+ end
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.require_paths = %w{lib}
21
21
 
22
22
  spec.add_dependency 'halite'
23
+ spec.add_dependency 'chef', '>= 1'
23
24
 
24
25
  spec.add_development_dependency 'rake'
25
26
  end
@@ -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
@@ -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.0
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-01-25 00:00:00.000000000 Z
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: '4.0'
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: '4.0'
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/test1.rb
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/test1.rb
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