chef-dk 2.3.4 → 2.4.17

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/Gemfile +22 -18
  3. data/Gemfile.lock +184 -254
  4. data/README.md +1 -1
  5. data/Rakefile +1 -1
  6. data/acceptance/Gemfile.lock +27 -32
  7. data/lib/chef-dk/chef_server_api_multi.rb +73 -0
  8. data/lib/chef-dk/command/update.rb +5 -12
  9. data/lib/chef-dk/configurable.rb +19 -0
  10. data/lib/chef-dk/cookbook_omnifetch.rb +1 -0
  11. data/lib/chef-dk/exceptions.rb +11 -0
  12. data/lib/chef-dk/generator.rb +1 -1
  13. data/lib/chef-dk/policyfile/attribute_merge_checker.rb +110 -0
  14. data/lib/chef-dk/policyfile/chef_server_cookbook_source.rb +5 -4
  15. data/lib/chef-dk/policyfile/chef_server_lock_fetcher.rb +164 -0
  16. data/lib/chef-dk/policyfile/cookbook_location_specification.rb +3 -3
  17. data/lib/chef-dk/policyfile/dsl.rb +16 -0
  18. data/lib/chef-dk/policyfile/included_policies_cookbook_source.rb +156 -0
  19. data/lib/chef-dk/policyfile/local_lock_fetcher.rb +122 -0
  20. data/lib/chef-dk/policyfile/lock_applier.rb +80 -0
  21. data/lib/chef-dk/policyfile/null_cookbook_source.rb +4 -0
  22. data/lib/chef-dk/policyfile/policyfile_location_specification.rb +122 -0
  23. data/lib/chef-dk/policyfile_compiler.rb +129 -16
  24. data/lib/chef-dk/policyfile_lock.rb +30 -0
  25. data/lib/chef-dk/policyfile_services/install.rb +7 -1
  26. data/lib/chef-dk/policyfile_services/update_attributes.rb +10 -2
  27. data/lib/chef-dk/skeletons/code_generator/templates/default/recipe_spec.rb.erb +14 -1
  28. data/lib/chef-dk/version.rb +1 -1
  29. data/omnibus_overrides.rb +6 -6
  30. data/spec/unit/chef_server_api_multi_spec.rb +120 -0
  31. data/spec/unit/command/update_spec.rb +3 -3
  32. data/spec/unit/configurable_spec.rb +27 -0
  33. data/spec/unit/policyfile/attribute_merge_checker_spec.rb +80 -0
  34. data/spec/unit/policyfile/chef_server_lock_fetcher_spec.rb +161 -0
  35. data/spec/unit/policyfile/cookbook_location_specification_spec.rb +48 -0
  36. data/spec/unit/policyfile/included_policies_cookbook_source_spec.rb +242 -0
  37. data/spec/unit/policyfile/local_lock_fetcher_spec.rb +161 -0
  38. data/spec/unit/policyfile/lock_applier_spec.rb +100 -0
  39. data/spec/unit/policyfile_demands_spec.rb +1 -1
  40. data/spec/unit/policyfile_includes_dsl_spec.rb +159 -0
  41. data/spec/unit/policyfile_includes_spec.rb +720 -0
  42. data/spec/unit/policyfile_install_with_includes_spec.rb +232 -0
  43. data/spec/unit/policyfile_lock_build_spec.rb +11 -2
  44. data/spec/unit/policyfile_services/update_attributes_spec.rb +13 -0
  45. metadata +28 -3
@@ -0,0 +1,232 @@
1
+ # -*- coding: UTF-8 -*-
2
+ #
3
+ # Copyright:: Copyright (c) 2017 Chef Software Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require "spec_helper"
20
+ require "chef-dk/policyfile_compiler"
21
+ require "chef-dk/policyfile_lock.rb"
22
+
23
+ describe ChefDK::PolicyfileLock, "installing cookbooks from included policies" do
24
+
25
+ let(:run_list) { ["local::default"] }
26
+
27
+ let(:default_source) { [:community] }
28
+
29
+ let(:external_cookbook_universe) do
30
+ {
31
+ "cookbookA" => {
32
+ "1.0.0" => [ ],
33
+ "2.0.0" => [ ["cookbookB", "= 2.0.0" ]],
34
+ },
35
+ "cookbookB" => {
36
+ "1.0.0" => [ ],
37
+ "2.0.0" => [ ],
38
+ },
39
+ "cookbookC" => {
40
+ "1.0.0" => [ ],
41
+ "2.0.0" => [ ],
42
+ },
43
+ "local" => {
44
+ "1.0.0" => [ ["cookbookC", "= 1.0.0" ] ],
45
+ },
46
+ "local_easy" => {
47
+ "1.0.0" => [ ["cookbookC", "= 2.0.0" ] ],
48
+ },
49
+ }
50
+ end
51
+
52
+ let(:included_policy_cookbook_universe) { external_cookbook_universe }
53
+
54
+ let(:included_policy_default_attributes) { {} }
55
+ let(:included_policy_override_attributes) { {} }
56
+ let(:included_policy_expanded_named_runlist) { nil }
57
+ let(:included_policy_expanded_runlist) { ["recipe[cookbookA::default]"] }
58
+ let(:included_policy_cookbooks) do
59
+ [
60
+ {
61
+ name: "cookbookA",
62
+ version: "2.0.0",
63
+ },
64
+ # We need to manually specify the dependencies of cookbookA
65
+ {
66
+ name: "cookbookB",
67
+ version: "2.0.0",
68
+ },
69
+ ]
70
+ end
71
+
72
+ let(:included_policy_source_options) do
73
+ {
74
+ "cookbookA" => {
75
+ "2.0.0" => { artifactserver: "https://supermarket.example/c/cookbookA/2.0.0/download", version: "2.0.0", from_included_policy: "withavalue" },
76
+ },
77
+ "cookbookB" => {
78
+ "2.0.0" => { artifactserver: "https://supermarket.example/c/cookbookB/2.0.0/download", version: "2.0.0", from_included_policy: "withavalue" },
79
+ },
80
+ }
81
+ end
82
+
83
+ let(:included_policy_lock_data) do
84
+ cookbook_locks = included_policy_cookbooks.inject({}) do |acc, cookbook_info|
85
+ acc[cookbook_info[:name]] = {
86
+ "version" => cookbook_info[:version],
87
+ "identifier" => "identifier",
88
+ "dotted_decimal_identifier" => "dotted_decimal_identifier",
89
+ "cache_key" => "#{cookbook_info[:name]}-#{cookbook_info[:version]}",
90
+ "origin" => "uri",
91
+ "source_options" => included_policy_source_options[cookbook_info[:name]][cookbook_info[:version]],
92
+ }
93
+ acc
94
+ end
95
+
96
+ solution_dependencies_lock = included_policy_cookbooks.map do |cookbook_info|
97
+ [cookbook_info[:name], cookbook_info[:version]]
98
+ end
99
+
100
+ solution_dependencies_cookbooks = included_policy_cookbooks.inject({}) do |acc, cookbook_info|
101
+ acc["#{cookbook_info[:name]} (#{cookbook_info[:version]})"] = included_policy_cookbook_universe[cookbook_info[:name]][cookbook_info[:version]]
102
+ acc
103
+ end
104
+
105
+ {
106
+ "name" => "included_policyfile",
107
+ "revision_id" => "myrevisionid",
108
+ "run_list" => included_policy_expanded_runlist,
109
+ "cookbook_locks" => cookbook_locks,
110
+ "default_attributes" => included_policy_default_attributes,
111
+ "override_attributes" => included_policy_override_attributes,
112
+ "solution_dependencies" => {
113
+ "Policyfile" => solution_dependencies_lock,
114
+ "dependencies" => solution_dependencies_cookbooks,
115
+ },
116
+ }.tap do |core|
117
+ core["named_run_lists"] = included_policy_expanded_named_runlist if included_policy_expanded_named_runlist
118
+ end
119
+ end
120
+
121
+ let(:lock_source_options) { { :path => "somelocation" } }
122
+
123
+ let(:included_policy_lock_name) { "included" }
124
+
125
+ let(:included_policy_fetcher) do
126
+ instance_double("ChefDK::Policyfile::LocalLockFetcher").tap do |double|
127
+ allow(double).to receive(:lock_data).and_return(included_policy_lock_data)
128
+ allow(double).to receive(:valid?).and_return(true)
129
+ allow(double).to receive(:errors).and_return([])
130
+ end
131
+ end
132
+
133
+ let(:default_source_obj) do
134
+ instance_double("ChefDK::Policyfile::CommunityCookbookSource")
135
+ end
136
+
137
+ let(:policyfile) do
138
+ policyfile = ChefDK::PolicyfileCompiler.new.build do |p|
139
+ p.run_list(*run_list)
140
+ end
141
+
142
+ allow(policyfile.dsl).to receive(:default_source).and_return([default_source_obj])
143
+
144
+ allow(default_source_obj).to receive(:universe_graph).
145
+ and_return(external_cookbook_universe)
146
+
147
+ allow(default_source_obj).to receive(:null?).and_return(false)
148
+ allow(default_source_obj).to receive(:preferred_cookbooks).and_return([])
149
+
150
+ allow(policyfile).to receive(:included_policies).and_return([included_policy_lock_spec])
151
+
152
+ policyfile
153
+ end
154
+
155
+ before do
156
+
157
+ allow(default_source_obj).to receive(:preferred_source_for?).and_return(false)
158
+
159
+ allow(default_source_obj).to receive(:source_options_for) do |cookbook_name, version|
160
+ { artifactserver: "https://supermarket.example/c/#{cookbook_name}/#{version}/download", version: version }
161
+ end
162
+
163
+ allow(ChefDK::Policyfile::CookbookLocationSpecification).to receive(:new) do |cookbook_name, version_constraint, source_opts, storage_config|
164
+ double = instance_double("ChefDK::Policyfile::CookbookLocationSpecification",
165
+ name: cookbook_name,
166
+ version_constraint: Semverse::Constraint.new(version_constraint),
167
+ ensure_cached: nil,
168
+ to_s: "#{cookbook_name} #{version_constraint}")
169
+ allow(double).to receive(:cookbook_has_recipe?).and_return(true)
170
+ allow(double).to receive(:installed?).and_return(true)
171
+ allow(double).to receive(:mirrors_canonical_upstream?).and_return(true)
172
+ allow(double).to receive(:cache_key).and_return("#{cookbook_name}-#{version_constraint}-#{source_opts}")
173
+ allow(double).to receive(:uri).and_return("uri://#{cookbook_name}-#{version_constraint}-#{source_opts}")
174
+ allow(double).to receive(:source_options_for_lock).and_return(source_opts)
175
+ double
176
+ end
177
+ end
178
+
179
+ context "when a policy is included" do
180
+ let(:included_policy_lock_spec) do
181
+ ChefDK::Policyfile::PolicyfileLocationSpecification.new(included_policy_lock_name, lock_source_options, nil).tap do |spec|
182
+ allow(spec).to receive(:valid?).and_return(true)
183
+ allow(spec).to receive(:fetcher).and_return(included_policy_fetcher)
184
+ allow(spec).to receive(:source_options_for_lock).and_return(lock_source_options)
185
+ end
186
+ end
187
+
188
+ before do
189
+ policyfile.install
190
+ end
191
+
192
+ it "maintains the correct source locations for cookbooks from the included policy" do
193
+ expect(policyfile.lock.cookbook_locks["cookbookA"].source_options).to eq(included_policy_source_options["cookbookA"]["2.0.0"])
194
+ expect(policyfile.lock.cookbook_locks["cookbookB"].source_options).to eq(included_policy_source_options["cookbookB"]["2.0.0"])
195
+ end
196
+
197
+ it "maintains the correct source locations for cookbooks from the current policy" do
198
+ expect(policyfile.lock.cookbook_locks["local"].source_options).to eq(default_source_obj.source_options_for("local", "1.0.0"))
199
+ expect(policyfile.lock.cookbook_locks["cookbookC"].source_options).to eq(default_source_obj.source_options_for("cookbookC", "1.0.0"))
200
+ end
201
+
202
+ it "maintains identifiers for remote cookbooks" do
203
+ allow(ChefDK::Policyfile::CachedCookbook).to receive(:new) do |name, storage_config|
204
+ mock = ChefDK::Policyfile::CachedCookbook.allocate
205
+ mock.send(:initialize, name, storage_config)
206
+ allow(mock).to receive(:installed?).and_return(true)
207
+ allow(mock).to receive(:validate!)
208
+ allow(mock).to receive(:cookbook_version) do
209
+ instance_double("Chef::CookbookVersion",
210
+ version: mock.source_options[:version],
211
+ manifest_records_by_path: [])
212
+ end
213
+ mock
214
+ end
215
+ expect(policyfile.lock.to_lock["cookbook_locks"]["cookbookA"]["source_options"]).to eq(included_policy_source_options["cookbookA"]["2.0.0"])
216
+ expect(policyfile.lock.to_lock["cookbook_locks"]["cookbookB"]["source_options"]).to eq(included_policy_source_options["cookbookB"]["2.0.0"])
217
+ end
218
+
219
+ it "emits the included policy in the lock file" do
220
+ lock = policyfile.lock
221
+ allow(lock).to receive(:cookbook_locks_for_lockfile).and_return({})
222
+ expect(lock.to_lock["included_policy_locks"]).to eq(
223
+ [
224
+ {
225
+ "name" => included_policy_lock_name,
226
+ "revision_id" => "myrevisionid",
227
+ "source_options" => lock_source_options,
228
+ },
229
+ ])
230
+ end
231
+ end
232
+ end
@@ -238,6 +238,7 @@ REVISION_STRING
238
238
  "override_attributes" => {},
239
239
 
240
240
  "solution_dependencies" => { "Policyfile" => [], "dependencies" => {} },
241
+ "included_policy_locks" => [],
241
242
  }
242
243
  end
243
244
 
@@ -334,6 +335,7 @@ REVISION_STRING
334
335
  "override_attributes" => { "foo2" => "baz" },
335
336
 
336
337
  "solution_dependencies" => { "Policyfile" => [], "dependencies" => {} },
338
+ "included_policy_locks" => [],
337
339
  }
338
340
  end
339
341
 
@@ -425,6 +427,7 @@ REVISION_STRING
425
427
  "override_attributes" => {},
426
428
 
427
429
  "solution_dependencies" => { "Policyfile" => [], "dependencies" => {} },
430
+ "included_policy_locks" => [],
428
431
  }
429
432
  end
430
433
 
@@ -535,6 +538,7 @@ REVISION_STRING
535
538
  "override_attributes" => {},
536
539
 
537
540
  "solution_dependencies" => { "Policyfile" => [], "dependencies" => {} },
541
+ "included_policy_locks" => [],
538
542
  }
539
543
  end
540
544
 
@@ -680,7 +684,7 @@ REVISION_STRING
680
684
  "override_attributes" => {},
681
685
 
682
686
  "solution_dependencies" => { "Policyfile" => [], "dependencies" => {} },
683
-
687
+ "included_policy_locks" => [],
684
688
  }
685
689
  end
686
690
 
@@ -772,6 +776,7 @@ REVISION_STRING
772
776
  "Policyfile" => [],
773
777
  "dependencies" => { "foo (1.0.0)" => [] },
774
778
  },
779
+ "included_policy_locks" => [],
775
780
  }
776
781
  end
777
782
 
@@ -841,6 +846,7 @@ REVISION_STRING
841
846
  "override_attributes" => {},
842
847
 
843
848
  "solution_dependencies" => { "Policyfile" => [], "dependencies" => {} },
849
+ "included_policy_locks" => [],
844
850
  }
845
851
  end
846
852
 
@@ -933,7 +939,9 @@ REVISION_STRING
933
939
  all_cookbook_location_specs: { "foo" => cached_location_spec, "bar" => local_location_spec },
934
940
  solution_dependencies: policyfile_solution_dependencies,
935
941
  default_attributes: policyfile_default_attrs,
936
- override_attributes: policyfile_override_attrs )
942
+ override_attributes: policyfile_override_attrs,
943
+ included_policies: []
944
+ )
937
945
  end
938
946
 
939
947
  let(:policyfile_lock) do
@@ -1019,6 +1027,7 @@ REVISION_STRING
1019
1027
  "Policyfile" => [ [ "foo", "~> 1.0" ] ],
1020
1028
  "dependencies" => { "foo (1.0.0)" => [], "bar (0.1.0)" => [] },
1021
1029
  },
1030
+ "included_policy_locks" => [],
1022
1031
  }
1023
1032
  end
1024
1033
 
@@ -134,6 +134,7 @@ E
134
134
  "Policyfile" => [["local-cookbook", ">= 0.0.0"]],
135
135
  "dependencies" => { "local-cookbook (2.3.4)" => [] },
136
136
  },
137
+ "included_policy_locks" => [],
137
138
  }
138
139
  end
139
140
 
@@ -168,6 +169,18 @@ E
168
169
  expect(ui.output).to include(message)
169
170
  end
170
171
 
172
+ context "when a policyfile is included" do
173
+ let(:lock_applier) { instance_double("ChefDK::Policyfile::LockApplier") }
174
+
175
+ it "locks the included policyfile" do
176
+ expect(ChefDK::Policyfile::LockApplier).to receive(:new).with(
177
+ update_attrs_service.policyfile_lock, update_attrs_service.policyfile_compiler).and_return(lock_applier)
178
+ expect(lock_applier).not_to receive(:with_unlocked_policies)
179
+ expect(lock_applier).to receive(:apply!)
180
+
181
+ update_attrs_service.run
182
+ end
183
+ end
171
184
  end
172
185
 
173
186
  context "when the Policyfile.rb has different attributes than the lockfile" do
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: 2.3.4
4
+ version: 2.4.17
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: 2017-09-22 00:00:00.000000000 Z
13
+ date: 2017-11-28 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: mixlib-cli
@@ -262,6 +262,7 @@ files:
262
262
  - lib/chef-dk/authenticated_http.rb
263
263
  - lib/chef-dk/builtin_commands.rb
264
264
  - lib/chef-dk/chef_runner.rb
265
+ - lib/chef-dk/chef_server_api_multi.rb
265
266
  - lib/chef-dk/cli.rb
266
267
  - lib/chef-dk/command/base.rb
267
268
  - lib/chef-dk/command/clean_policy_cookbooks.rb
@@ -317,8 +318,10 @@ files:
317
318
  - lib/chef-dk/helpers.rb
318
319
  - lib/chef-dk/pager.rb
319
320
  - lib/chef-dk/policyfile/artifactory_cookbook_source.rb
321
+ - lib/chef-dk/policyfile/attribute_merge_checker.rb
320
322
  - lib/chef-dk/policyfile/chef_repo_cookbook_source.rb
321
323
  - lib/chef-dk/policyfile/chef_server_cookbook_source.rb
324
+ - lib/chef-dk/policyfile/chef_server_lock_fetcher.rb
322
325
  - lib/chef-dk/policyfile/community_cookbook_source.rb
323
326
  - lib/chef-dk/policyfile/comparison_base.rb
324
327
  - lib/chef-dk/policyfile/cookbook_location_specification.rb
@@ -327,8 +330,12 @@ files:
327
330
  - lib/chef-dk/policyfile/delivery_supermarket_source.rb
328
331
  - lib/chef-dk/policyfile/differ.rb
329
332
  - lib/chef-dk/policyfile/dsl.rb
333
+ - lib/chef-dk/policyfile/included_policies_cookbook_source.rb
330
334
  - lib/chef-dk/policyfile/lister.rb
335
+ - lib/chef-dk/policyfile/local_lock_fetcher.rb
336
+ - lib/chef-dk/policyfile/lock_applier.rb
331
337
  - lib/chef-dk/policyfile/null_cookbook_source.rb
338
+ - lib/chef-dk/policyfile/policyfile_location_specification.rb
332
339
  - lib/chef-dk/policyfile/read_cookbook_for_compat_mode_upload.rb
333
340
  - lib/chef-dk/policyfile/reports/install.rb
334
341
  - lib/chef-dk/policyfile/reports/table_printer.rb
@@ -430,6 +437,7 @@ files:
430
437
  - spec/spec_helper.rb
431
438
  - spec/test_helpers.rb
432
439
  - spec/unit/chef_runner_spec.rb
440
+ - spec/unit/chef_server_api_multi_spec.rb
433
441
  - spec/unit/cli_spec.rb
434
442
  - spec/unit/command/base_spec.rb
435
443
  - spec/unit/command/clean_policy_cookbooks_spec.rb
@@ -562,15 +570,20 @@ files:
562
570
  - spec/unit/generator_spec.rb
563
571
  - spec/unit/pager_spec.rb
564
572
  - spec/unit/policyfile/artifactory_cookbook_source_spec.rb
573
+ - spec/unit/policyfile/attribute_merge_checker_spec.rb
565
574
  - spec/unit/policyfile/chef_repo_cookbook_source_spec.rb
566
575
  - spec/unit/policyfile/chef_server_cookbook_source_spec.rb
576
+ - spec/unit/policyfile/chef_server_lock_fetcher_spec.rb
567
577
  - spec/unit/policyfile/community_cookbook_source_spec.rb
568
578
  - spec/unit/policyfile/comparison_base_spec.rb
569
579
  - spec/unit/policyfile/cookbook_location_specification_spec.rb
570
580
  - spec/unit/policyfile/cookbook_locks_spec.rb
571
581
  - spec/unit/policyfile/delivery_supermarket_source_spec.rb
572
582
  - spec/unit/policyfile/differ_spec.rb
583
+ - spec/unit/policyfile/included_policies_cookbook_source_spec.rb
573
584
  - spec/unit/policyfile/lister_spec.rb
585
+ - spec/unit/policyfile/local_lock_fetcher_spec.rb
586
+ - spec/unit/policyfile/lock_applier_spec.rb
574
587
  - spec/unit/policyfile/null_cookbook_source_spec.rb
575
588
  - spec/unit/policyfile/read_cookbook_for_compat_mode_upload_spec.rb
576
589
  - spec/unit/policyfile/reports/install_spec.rb
@@ -583,6 +596,9 @@ files:
583
596
  - spec/unit/policyfile/uploader_spec.rb
584
597
  - spec/unit/policyfile_demands_spec.rb
585
598
  - spec/unit/policyfile_evaluation_spec.rb
599
+ - spec/unit/policyfile_includes_dsl_spec.rb
600
+ - spec/unit/policyfile_includes_spec.rb
601
+ - spec/unit/policyfile_install_with_includes_spec.rb
586
602
  - spec/unit/policyfile_lock_build_spec.rb
587
603
  - spec/unit/policyfile_lock_install_spec.rb
588
604
  - spec/unit/policyfile_lock_serialization_spec.rb
@@ -636,7 +652,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
636
652
  version: '0'
637
653
  requirements: []
638
654
  rubyforge_project:
639
- rubygems_version: 2.6.13
655
+ rubygems_version: 2.6.14
640
656
  signing_key:
641
657
  specification_version: 4
642
658
  summary: A streamlined development and deployment workflow for Chef platform.
@@ -651,6 +667,7 @@ test_files:
651
667
  - spec/spec_helper.rb
652
668
  - spec/test_helpers.rb
653
669
  - spec/unit/chef_runner_spec.rb
670
+ - spec/unit/chef_server_api_multi_spec.rb
654
671
  - spec/unit/cli_spec.rb
655
672
  - spec/unit/command/base_spec.rb
656
673
  - spec/unit/command/clean_policy_cookbooks_spec.rb
@@ -783,15 +800,20 @@ test_files:
783
800
  - spec/unit/generator_spec.rb
784
801
  - spec/unit/pager_spec.rb
785
802
  - spec/unit/policyfile/artifactory_cookbook_source_spec.rb
803
+ - spec/unit/policyfile/attribute_merge_checker_spec.rb
786
804
  - spec/unit/policyfile/chef_repo_cookbook_source_spec.rb
787
805
  - spec/unit/policyfile/chef_server_cookbook_source_spec.rb
806
+ - spec/unit/policyfile/chef_server_lock_fetcher_spec.rb
788
807
  - spec/unit/policyfile/community_cookbook_source_spec.rb
789
808
  - spec/unit/policyfile/comparison_base_spec.rb
790
809
  - spec/unit/policyfile/cookbook_location_specification_spec.rb
791
810
  - spec/unit/policyfile/cookbook_locks_spec.rb
792
811
  - spec/unit/policyfile/delivery_supermarket_source_spec.rb
793
812
  - spec/unit/policyfile/differ_spec.rb
813
+ - spec/unit/policyfile/included_policies_cookbook_source_spec.rb
794
814
  - spec/unit/policyfile/lister_spec.rb
815
+ - spec/unit/policyfile/local_lock_fetcher_spec.rb
816
+ - spec/unit/policyfile/lock_applier_spec.rb
795
817
  - spec/unit/policyfile/null_cookbook_source_spec.rb
796
818
  - spec/unit/policyfile/read_cookbook_for_compat_mode_upload_spec.rb
797
819
  - spec/unit/policyfile/reports/install_spec.rb
@@ -804,6 +826,9 @@ test_files:
804
826
  - spec/unit/policyfile/uploader_spec.rb
805
827
  - spec/unit/policyfile_demands_spec.rb
806
828
  - spec/unit/policyfile_evaluation_spec.rb
829
+ - spec/unit/policyfile_includes_dsl_spec.rb
830
+ - spec/unit/policyfile_includes_spec.rb
831
+ - spec/unit/policyfile_install_with_includes_spec.rb
807
832
  - spec/unit/policyfile_lock_build_spec.rb
808
833
  - spec/unit/policyfile_lock_install_spec.rb
809
834
  - spec/unit/policyfile_lock_serialization_spec.rb