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 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