chef-dk 0.5.0.rc.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
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