chef-dk 0.5.0.rc.1 → 0.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.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +63 -24
  3. data/lib/chef-dk/builtin_commands.rb +2 -0
  4. data/lib/chef-dk/command/diff.rb +312 -0
  5. data/lib/chef-dk/command/push.rb +1 -1
  6. data/lib/chef-dk/command/shell_init.rb +21 -3
  7. data/lib/chef-dk/command/update.rb +28 -5
  8. data/lib/chef-dk/configurable.rb +1 -1
  9. data/lib/chef-dk/exceptions.rb +3 -0
  10. data/lib/chef-dk/pager.rb +106 -0
  11. data/lib/chef-dk/policyfile/chef_repo_cookbook_source.rb +114 -0
  12. data/lib/chef-dk/policyfile/comparison_base.rb +124 -0
  13. data/lib/chef-dk/policyfile/cookbook_sources.rb +1 -0
  14. data/lib/chef-dk/policyfile/differ.rb +266 -0
  15. data/lib/chef-dk/policyfile/dsl.rb +26 -3
  16. data/lib/chef-dk/policyfile/uploader.rb +4 -5
  17. data/lib/chef-dk/policyfile_compiler.rb +8 -0
  18. data/lib/chef-dk/policyfile_lock.rb +135 -3
  19. data/lib/chef-dk/policyfile_services/install.rb +1 -0
  20. data/lib/chef-dk/policyfile_services/update_attributes.rb +104 -0
  21. data/lib/chef-dk/service_exceptions.rb +12 -0
  22. data/lib/chef-dk/ui.rb +8 -0
  23. data/lib/chef-dk/version.rb +1 -1
  24. data/spec/spec_helper.rb +6 -0
  25. data/spec/test_helpers.rb +4 -0
  26. data/spec/unit/command/diff_spec.rb +283 -0
  27. data/spec/unit/command/shell_init_spec.rb +19 -2
  28. data/spec/unit/command/update_spec.rb +96 -0
  29. data/spec/unit/command/verify_spec.rb +0 -6
  30. data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/Berksfile +3 -0
  31. data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/README.md +4 -0
  32. data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/chefignore +96 -0
  33. data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/metadata.rb +9 -0
  34. data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/recipes/default.rb +8 -0
  35. data/spec/unit/pager_spec.rb +119 -0
  36. data/spec/unit/policyfile/chef_repo_cookbook_source_spec.rb +66 -0
  37. data/spec/unit/policyfile/comparison_base_spec.rb +343 -0
  38. data/spec/unit/policyfile/differ_spec.rb +687 -0
  39. data/spec/unit/policyfile_evaluation_spec.rb +87 -0
  40. data/spec/unit/policyfile_lock_build_spec.rb +247 -8
  41. data/spec/unit/policyfile_lock_serialization_spec.rb +47 -0
  42. data/spec/unit/policyfile_services/export_repo_spec.rb +2 -0
  43. data/spec/unit/policyfile_services/push_spec.rb +2 -0
  44. data/spec/unit/policyfile_services/update_attributes_spec.rb +217 -0
  45. metadata +62 -6
@@ -27,6 +27,8 @@ describe ChefDK::PolicyfileLock, "when reading a Policyfile.lock" do
27
27
  "cookbook_locks" => {
28
28
  # TODO: add some valid locks
29
29
  },
30
+ "default_attributes" => { "foo" => "bar" },
31
+ "override_attributes" => { "override_foo" => "override_bar" },
30
32
  "solution_dependencies" => {
31
33
  "Policyfile" => [],
32
34
  "dependencies" => {}
@@ -38,6 +40,27 @@ describe ChefDK::PolicyfileLock, "when reading a Policyfile.lock" do
38
40
 
39
41
  let(:lockfile) { ChefDK::PolicyfileLock.new(storage_config) }
40
42
 
43
+ describe "populating the deserialized lock" do
44
+
45
+ before do
46
+ lockfile.build_from_lock_data(valid_lock_data)
47
+ end
48
+
49
+ it "includes the run list" do
50
+ expect(lockfile.run_list).to eq(["recipe[cookbook::recipe_name]"])
51
+ end
52
+
53
+ it "includes the cookbook locks" do
54
+ expect(lockfile.cookbook_locks).to eq({})
55
+ end
56
+
57
+ it "includes the attributes" do
58
+ expect(lockfile.default_attributes).to eq({"foo" => "bar"})
59
+ expect(lockfile.override_attributes).to eq({"override_foo" => "override_bar"})
60
+ end
61
+
62
+ end
63
+
41
64
  describe "validating required fields" do
42
65
 
43
66
  it "does not raise an error when all fields are valid" do
@@ -88,6 +111,30 @@ describe ChefDK::PolicyfileLock, "when reading a Policyfile.lock" do
88
111
  expect { lockfile.build_from_lock_data(invalid_locks) }.to raise_error(ChefDK::InvalidLockfile)
89
112
  end
90
113
 
114
+ it "requires the `default_attributes` section be present and its value is a Hash" do
115
+ missing_attrs = valid_lock_data.dup
116
+ missing_attrs.delete("default_attributes")
117
+
118
+ expect { lockfile.build_from_lock_data(missing_attrs) }.to raise_error(ChefDK::InvalidLockfile)
119
+
120
+ invalid_attrs = valid_lock_data.dup
121
+ invalid_attrs["default_attributes"] = []
122
+
123
+ expect { lockfile.build_from_lock_data(invalid_attrs) }.to raise_error(ChefDK::InvalidLockfile)
124
+ end
125
+
126
+ it "requires the `override_attributes` section be present and its value is a Hash" do
127
+ missing_attrs = valid_lock_data.dup
128
+ missing_attrs.delete("override_attributes")
129
+
130
+ expect { lockfile.build_from_lock_data(missing_attrs) }.to raise_error(ChefDK::InvalidLockfile)
131
+
132
+ invalid_attrs = valid_lock_data.dup
133
+ invalid_attrs["override_attributes"] = []
134
+
135
+ expect { lockfile.build_from_lock_data(invalid_attrs) }.to raise_error(ChefDK::InvalidLockfile)
136
+ end
137
+
91
138
  describe "validating solution_dependencies" do
92
139
 
93
140
  it "requires the `solution_dependencies' section be present" do
@@ -123,6 +123,8 @@ describe ChefDK::PolicyfileServices::ExportRepo do
123
123
  }
124
124
  }
125
125
  },
126
+ "default_attributes": {},
127
+ "override_attributes": {},
126
128
  "solution_dependencies": {
127
129
  "Policyfile": [
128
130
  [
@@ -145,6 +145,8 @@ describe ChefDK::PolicyfileServices::Push do
145
145
  }
146
146
  }
147
147
  },
148
+ "default_attributes": {},
149
+ "override_attributes": {},
148
150
  "solution_dependencies": {
149
151
  "Policyfile": [
150
152
  [
@@ -0,0 +1,217 @@
1
+ #
2
+ # Copyright:: Copyright (c) 2015 Chef Software Inc.
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require 'spec_helper'
19
+ require 'chef-dk/helpers'
20
+ require 'chef-dk/policyfile_services/update_attributes'
21
+
22
+ describe ChefDK::PolicyfileServices::UpdateAttributes do
23
+
24
+ include ChefDK::Helpers
25
+
26
+ let(:working_dir) do
27
+ path = File.join(tempdir, "policyfile_services_test_working_dir")
28
+ Dir.mkdir(path)
29
+ path
30
+ end
31
+
32
+ let(:policyfile_rb_explicit_name) { nil }
33
+
34
+ let(:policyfile_rb_name) { policyfile_rb_explicit_name || "Policyfile.rb" }
35
+
36
+ let(:policyfile_lock_name) { "Policyfile.lock.json" }
37
+
38
+ let(:policyfile_rb_path) { File.join(working_dir, policyfile_rb_name) }
39
+
40
+ let(:policyfile_lock_path) { File.join(working_dir, policyfile_lock_name) }
41
+
42
+ let(:local_cookbooks_root) do
43
+ File.join(fixtures_path, "local_path_cookbooks")
44
+ end
45
+
46
+ let(:local_cookbook_path) { File.join(local_cookbooks_root, "local-cookbook") }
47
+
48
+ let(:local_cookbook_copy_path) { File.join(working_dir, "cookbooks/local-cookbook") }
49
+
50
+ let(:policyfile_content) do
51
+ <<-E
52
+ name 'install-example'
53
+
54
+ run_list 'local-cookbook'
55
+
56
+ cookbook 'local-cookbook', path: 'cookbooks/local-cookbook'
57
+
58
+ default["default_attr"] = "new_value_default"
59
+
60
+ override["override_attr"] = "new_value_override"
61
+ E
62
+ end
63
+
64
+ let(:ui) { TestHelpers::TestUI.new }
65
+
66
+ let(:storage_config) do
67
+ ChefDK::Policyfile::StorageConfig.new( cache_path: nil, relative_paths_root: working_dir )
68
+ end
69
+
70
+ subject(:update_attrs_service) { described_class.new(policyfile: policyfile_rb_name, ui: ui, root_dir: working_dir) }
71
+
72
+ before do
73
+ FileUtils.mkdir_p(File.dirname(local_cookbook_copy_path))
74
+ FileUtils.cp_r(local_cookbook_path, local_cookbook_copy_path)
75
+ end
76
+
77
+ context "when first created" do
78
+
79
+ it "has the UI object it was created with" do
80
+ expect(update_attrs_service.ui).to eq(ui)
81
+ end
82
+
83
+ it "creates a storage config from the given policyfile path and root dir" do
84
+ new_storage_config = instance_double("ChefDK::Policyfile::StorageConfig")
85
+ expect(ChefDK::Policyfile::StorageConfig).to receive(:new).with(no_args).and_return(new_storage_config)
86
+ expect(new_storage_config).to receive(:use_policyfile).with(policyfile_rb_path).and_return(new_storage_config)
87
+ expect(update_attrs_service.storage_config).to eq(new_storage_config)
88
+ end
89
+
90
+ end
91
+
92
+ context "when no Policyfile is present or specified" do
93
+
94
+ it "errors out" do
95
+ expect { update_attrs_service.assert_policy_and_lock_present! }.to raise_error(ChefDK::PolicyfileNotFound, "Policyfile not found at path #{policyfile_rb_path}")
96
+ expect { update_attrs_service.run }.to raise_error(ChefDK::PolicyfileUpdateError)
97
+ end
98
+
99
+ end
100
+
101
+ context "when no lockfile exists" do
102
+
103
+ it "errors out" do
104
+ with_file(policyfile_rb_path) { |f| f.print(policyfile_content) }
105
+ expect { update_attrs_service.assert_policy_and_lock_present! }.to raise_error(ChefDK::LockfileNotFound, "Policyfile lock not found at path #{policyfile_lock_path}")
106
+ expect { update_attrs_service.run }.to raise_error(ChefDK::PolicyfileUpdateError)
107
+ end
108
+
109
+ end
110
+
111
+ context "when both the policyfile and lockfile exist" do
112
+
113
+ let(:lock_data_with_new_values) do
114
+ {
115
+ "revision_id" => "522d740beba4c4e5857bd8bccdb2d7ffd0bbd45ac4350f92b26e4e3b8f68d530",
116
+ "name" => "install-example",
117
+ "run_list" => ["recipe[local-cookbook::default]"],
118
+ "cookbook_locks"=> {
119
+ "local-cookbook"=> {
120
+ "version"=>"2.3.4",
121
+ "identifier"=>"fab501cfaf747901bd82c1bc706beae7dc3a350c",
122
+ "dotted_decimal_identifier"=> "70567763561641081.489844270461035.258281553147148",
123
+ "source"=>"cookbooks/local-cookbook",
124
+ "cache_key"=>nil,
125
+ "scm_info" => nil,
126
+ "source_options"=> {
127
+ "path"=>"cookbooks/local-cookbook"
128
+ }
129
+ }
130
+ },
131
+ "default_attributes" => {"default_attr"=>"new_value_default"},
132
+ "override_attributes" => {"override_attr"=>"new_value_override"},
133
+ "solution_dependencies" => {
134
+ "Policyfile"=>[["local-cookbook", ">= 0.0.0"]],
135
+ "dependencies"=>{"local-cookbook (2.3.4)"=>[]}
136
+ }
137
+ }
138
+ end
139
+
140
+ let(:previous_policyfile_lock_data) { lock_data_with_new_values }
141
+
142
+ let(:policyfile_lock_content) do
143
+ FFI_Yajl::Encoder.encode(previous_policyfile_lock_data, pretty: true )
144
+ end
145
+
146
+ before do
147
+ with_file(policyfile_rb_path) { |f| f.print(policyfile_content) }
148
+ with_file(policyfile_lock_path) { |f| f.print(policyfile_lock_content) }
149
+ end
150
+
151
+ def result_policyfile_lock_data
152
+ expect(File).to exist(policyfile_lock_path)
153
+ content = IO.read(policyfile_lock_path)
154
+ FFI_Yajl::Parser.parse(content)
155
+ end
156
+
157
+ context "when the current lock already has the desired attributes" do
158
+
159
+ it "makes no changes to the lockfile" do
160
+ update_attrs_service.run
161
+ expect(result_policyfile_lock_data).to eq(lock_data_with_new_values)
162
+ end
163
+
164
+ it "emits a message that no changes have been made to the lockfile" do
165
+ update_attrs_service.run
166
+
167
+ message = "Attributes already up to date"
168
+ expect(ui.output).to include(message)
169
+ end
170
+
171
+ end
172
+
173
+ context "when the Policyfile.rb has different attributes than the lockfile" do
174
+
175
+ let(:previous_policyfile_lock_data) do
176
+ {
177
+ "revision_id" => "522d740beba4c4e5857bd8bccdb2d7ffd0bbd45ac4350f92b26e4e3b8f68d530",
178
+ "name" => "install-example",
179
+ "run_list" => ["recipe[local-cookbook::default]"],
180
+ "cookbook_locks"=> {
181
+ "local-cookbook"=> {
182
+ "version"=>"2.3.4",
183
+ "identifier"=>"fab501cfaf747901bd82c1bc706beae7dc3a350c",
184
+ "dotted_decimal_identifier"=> "70567763561641081.489844270461035.258281553147148",
185
+ "source"=>"cookbooks/local-cookbook",
186
+ "cache_key" => nil,
187
+ "scm_info" => nil,
188
+ "source_options"=> {
189
+ "path"=>"cookbooks/local-cookbook"
190
+ }
191
+ }
192
+ },
193
+ "default_attributes" => {"default_attr"=>"old_value_default"},
194
+ "override_attributes" => {"override_attr"=>"old_value_override"},
195
+ "solution_dependencies" => {
196
+ "Policyfile"=>[["local-cookbook", ">= 0.0.0"]],
197
+ "dependencies"=>{"local-cookbook (2.3.4)"=>[]}
198
+ }
199
+ }
200
+ end
201
+
202
+ it "updates the lockfile with the new attributes" do
203
+ update_attrs_service.run
204
+ expect(result_policyfile_lock_data).to eq(lock_data_with_new_values)
205
+ end
206
+
207
+ it "emits a messsage stating the attributes have been updated" do
208
+ update_attrs_service.run
209
+ expect(ui.output).to include("Updated attributes in #{policyfile_lock_path}")
210
+ end
211
+
212
+ end
213
+
214
+ end
215
+
216
+ end
217
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef-dk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0.rc.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel DeLeo
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2015-03-26 00:00:00.000000000 Z
13
+ date: 2015-04-29 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: mixlib-cli
@@ -69,7 +69,7 @@ dependencies:
69
69
  version: '12.0'
70
70
  - - ">="
71
71
  - !ruby/object:Gem::Version
72
- version: 12.2.0.rc.2
72
+ version: 12.2.1
73
73
  type: :runtime
74
74
  prerelease: false
75
75
  version_requirements: !ruby/object:Gem::Requirement
@@ -79,7 +79,7 @@ dependencies:
79
79
  version: '12.0'
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: 12.2.0.rc.2
82
+ version: 12.2.1
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: solve
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -108,6 +108,34 @@ dependencies:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0.2'
111
+ - !ruby/object:Gem::Dependency
112
+ name: diff-lcs
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '1.0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '1.0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: paint
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '1.0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '1.0'
111
139
  - !ruby/object:Gem::Dependency
112
140
  name: rspec-core
113
141
  requirement: !ruby/object:Gem::Requirement
@@ -171,6 +199,7 @@ files:
171
199
  - lib/chef-dk/chef_runner.rb
172
200
  - lib/chef-dk/cli.rb
173
201
  - lib/chef-dk/command/base.rb
202
+ - lib/chef-dk/command/diff.rb
174
203
  - lib/chef-dk/command/exec.rb
175
204
  - lib/chef-dk/command/export.rb
176
205
  - lib/chef-dk/command/gem.rb
@@ -203,11 +232,15 @@ files:
203
232
  - lib/chef-dk/exceptions.rb
204
233
  - lib/chef-dk/generator.rb
205
234
  - lib/chef-dk/helpers.rb
235
+ - lib/chef-dk/pager.rb
236
+ - lib/chef-dk/policyfile/chef_repo_cookbook_source.rb
206
237
  - lib/chef-dk/policyfile/chef_server_cookbook_source.rb
207
238
  - lib/chef-dk/policyfile/community_cookbook_source.rb
239
+ - lib/chef-dk/policyfile/comparison_base.rb
208
240
  - lib/chef-dk/policyfile/cookbook_location_specification.rb
209
241
  - lib/chef-dk/policyfile/cookbook_locks.rb
210
242
  - lib/chef-dk/policyfile/cookbook_sources.rb
243
+ - lib/chef-dk/policyfile/differ.rb
211
244
  - lib/chef-dk/policyfile/dsl.rb
212
245
  - lib/chef-dk/policyfile/null_cookbook_source.rb
213
246
  - lib/chef-dk/policyfile/read_cookbook_for_compat_mode_upload.rb
@@ -222,6 +255,7 @@ files:
222
255
  - lib/chef-dk/policyfile_services/export_repo.rb
223
256
  - lib/chef-dk/policyfile_services/install.rb
224
257
  - lib/chef-dk/policyfile_services/push.rb
258
+ - lib/chef-dk/policyfile_services/update_attributes.rb
225
259
  - lib/chef-dk/service_exception_inspectors.rb
226
260
  - lib/chef-dk/service_exception_inspectors/base.rb
227
261
  - lib/chef-dk/service_exception_inspectors/http.rb
@@ -286,6 +320,7 @@ files:
286
320
  - spec/unit/chef_runner_spec.rb
287
321
  - spec/unit/cli_spec.rb
288
322
  - spec/unit/command/base_spec.rb
323
+ - spec/unit/command/diff_spec.rb
289
324
  - spec/unit/command/exec_spec.rb
290
325
  - spec/unit/command/export_spec.rb
291
326
  - spec/unit/command/generate_spec.rb
@@ -375,6 +410,11 @@ files:
375
410
  - spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/chefignore
376
411
  - spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/metadata.rb
377
412
  - spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/recipes/default.rb
413
+ - spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/Berksfile
414
+ - spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/README.md
415
+ - spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/chefignore
416
+ - spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/metadata.rb
417
+ - spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/recipes/default.rb
378
418
  - spec/unit/fixtures/local_path_cookbooks/local-cookbook/.kitchen.yml
379
419
  - spec/unit/fixtures/local_path_cookbooks/local-cookbook/Berksfile
380
420
  - spec/unit/fixtures/local_path_cookbooks/local-cookbook/README.md
@@ -387,10 +427,14 @@ files:
387
427
  - spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb
388
428
  - spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb
389
429
  - spec/unit/generator_spec.rb
430
+ - spec/unit/pager_spec.rb
431
+ - spec/unit/policyfile/chef_repo_cookbook_source_spec.rb
390
432
  - spec/unit/policyfile/chef_server_cookbook_source_spec.rb
391
433
  - spec/unit/policyfile/community_cookbook_source_spec.rb
434
+ - spec/unit/policyfile/comparison_base_spec.rb
392
435
  - spec/unit/policyfile/cookbook_location_specification_spec.rb
393
436
  - spec/unit/policyfile/cookbook_locks_spec.rb
437
+ - spec/unit/policyfile/differ_spec.rb
394
438
  - spec/unit/policyfile/null_cookbook_source_spec.rb
395
439
  - spec/unit/policyfile/read_cookbook_for_compat_mode_upload_spec.rb
396
440
  - spec/unit/policyfile/reports/install_spec.rb
@@ -407,6 +451,7 @@ files:
407
451
  - spec/unit/policyfile_services/export_repo_spec.rb
408
452
  - spec/unit/policyfile_services/install_spec.rb
409
453
  - spec/unit/policyfile_services/push_spec.rb
454
+ - spec/unit/policyfile_services/update_attributes_spec.rb
410
455
  - spec/unit/service_exception_inspectors/base_spec.rb
411
456
  - spec/unit/service_exception_inspectors/http_spec.rb
412
457
  - spec/unit/shell_out_spec.rb
@@ -424,9 +469,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
424
469
  version: '2.0'
425
470
  required_rubygems_version: !ruby/object:Gem::Requirement
426
471
  requirements:
427
- - - ">"
472
+ - - ">="
428
473
  - !ruby/object:Gem::Version
429
- version: 1.3.1
474
+ version: '0'
430
475
  requirements: []
431
476
  rubyforge_project:
432
477
  rubygems_version: 2.4.2
@@ -445,6 +490,7 @@ test_files:
445
490
  - spec/unit/chef_runner_spec.rb
446
491
  - spec/unit/cli_spec.rb
447
492
  - spec/unit/command/base_spec.rb
493
+ - spec/unit/command/diff_spec.rb
448
494
  - spec/unit/command/exec_spec.rb
449
495
  - spec/unit/command/export_spec.rb
450
496
  - spec/unit/command/generate_spec.rb
@@ -534,6 +580,11 @@ test_files:
534
580
  - spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/chefignore
535
581
  - spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/metadata.rb
536
582
  - spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/recipes/default.rb
583
+ - spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/Berksfile
584
+ - spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/README.md
585
+ - spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/chefignore
586
+ - spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/metadata.rb
587
+ - spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/recipes/default.rb
537
588
  - spec/unit/fixtures/local_path_cookbooks/local-cookbook/.kitchen.yml
538
589
  - spec/unit/fixtures/local_path_cookbooks/local-cookbook/Berksfile
539
590
  - spec/unit/fixtures/local_path_cookbooks/local-cookbook/README.md
@@ -546,10 +597,14 @@ test_files:
546
597
  - spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb
547
598
  - spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb
548
599
  - spec/unit/generator_spec.rb
600
+ - spec/unit/pager_spec.rb
601
+ - spec/unit/policyfile/chef_repo_cookbook_source_spec.rb
549
602
  - spec/unit/policyfile/chef_server_cookbook_source_spec.rb
550
603
  - spec/unit/policyfile/community_cookbook_source_spec.rb
604
+ - spec/unit/policyfile/comparison_base_spec.rb
551
605
  - spec/unit/policyfile/cookbook_location_specification_spec.rb
552
606
  - spec/unit/policyfile/cookbook_locks_spec.rb
607
+ - spec/unit/policyfile/differ_spec.rb
553
608
  - spec/unit/policyfile/null_cookbook_source_spec.rb
554
609
  - spec/unit/policyfile/read_cookbook_for_compat_mode_upload_spec.rb
555
610
  - spec/unit/policyfile/reports/install_spec.rb
@@ -566,6 +621,7 @@ test_files:
566
621
  - spec/unit/policyfile_services/export_repo_spec.rb
567
622
  - spec/unit/policyfile_services/install_spec.rb
568
623
  - spec/unit/policyfile_services/push_spec.rb
624
+ - spec/unit/policyfile_services/update_attributes_spec.rb
569
625
  - spec/unit/service_exception_inspectors/base_spec.rb
570
626
  - spec/unit/service_exception_inspectors/http_spec.rb
571
627
  - spec/unit/shell_out_spec.rb