chef-dk 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (105) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/lib/chef-dk/authenticated_http.rb +40 -0
  4. data/lib/chef-dk/chef_runner.rb +5 -0
  5. data/lib/chef-dk/command/exec.rb +4 -1
  6. data/lib/chef-dk/command/generate.rb +11 -0
  7. data/lib/chef-dk/command/generator_commands.rb +20 -365
  8. data/lib/chef-dk/command/generator_commands/app.rb +99 -0
  9. data/lib/chef-dk/command/generator_commands/attribute.rb +37 -0
  10. data/lib/chef-dk/command/generator_commands/base.rb +76 -0
  11. data/lib/chef-dk/command/generator_commands/cookbook.rb +100 -0
  12. data/lib/chef-dk/command/generator_commands/cookbook_code_file.rb +99 -0
  13. data/lib/chef-dk/command/generator_commands/cookbook_file.rb +45 -0
  14. data/lib/chef-dk/command/generator_commands/lwrp.rb +36 -0
  15. data/lib/chef-dk/command/generator_commands/recipe.rb +36 -0
  16. data/lib/chef-dk/command/generator_commands/repo.rb +96 -0
  17. data/lib/chef-dk/command/generator_commands/template.rb +45 -0
  18. data/lib/chef-dk/command/verify.rb +28 -0
  19. data/lib/chef-dk/component_test.rb +16 -3
  20. data/lib/chef-dk/cookbook_omnifetch.rb +2 -0
  21. data/lib/chef-dk/cookbook_profiler/identifiers.rb +3 -15
  22. data/lib/chef-dk/exceptions.rb +15 -0
  23. data/lib/chef-dk/generator.rb +102 -25
  24. data/lib/chef-dk/policyfile/community_cookbook_source.rb +0 -7
  25. data/lib/chef-dk/policyfile/{cookbook_spec.rb → cookbook_location_specification.rb} +35 -6
  26. data/lib/chef-dk/policyfile/cookbook_locks.rb +305 -0
  27. data/lib/chef-dk/policyfile/dsl.rb +26 -12
  28. data/lib/chef-dk/policyfile/read_cookbook_for_compat_mode_upload.rb +70 -0
  29. data/lib/chef-dk/policyfile/solution_dependencies.rb +204 -0
  30. data/lib/chef-dk/policyfile/storage_config.rb +77 -0
  31. data/lib/chef-dk/policyfile/uploader.rb +110 -0
  32. data/lib/chef-dk/policyfile_compiler.rb +59 -29
  33. data/lib/chef-dk/policyfile_lock.rb +104 -160
  34. data/lib/chef-dk/skeletons/code_generator/files/default/Berksfile +1 -1
  35. data/lib/chef-dk/skeletons/code_generator/files/default/chefignore +0 -1
  36. data/lib/chef-dk/skeletons/code_generator/files/default/repo/README.md +66 -0
  37. data/lib/chef-dk/skeletons/code_generator/files/default/repo/Rakefile +65 -0
  38. data/lib/chef-dk/skeletons/code_generator/files/default/repo/certificates/README.md +19 -0
  39. data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/README-policy.md +9 -0
  40. data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/README.md +54 -0
  41. data/lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/README.md +63 -0
  42. data/lib/chef-dk/skeletons/code_generator/files/default/repo/environments/README.md +5 -0
  43. data/lib/chef-dk/skeletons/code_generator/files/default/repo/roles/README.md +16 -0
  44. data/lib/chef-dk/skeletons/code_generator/recipes/cookbook.rb +7 -1
  45. data/lib/chef-dk/skeletons/code_generator/recipes/repo.rb +62 -0
  46. data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.all_rights.erb +3 -0
  47. data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.apache2.erb +201 -0
  48. data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.gplv2.erb +339 -0
  49. data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.gplv3.erb +674 -0
  50. data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.mit.erb +21 -0
  51. data/lib/chef-dk/skeletons/code_generator/templates/default/default_recipe.rb.erb +1 -4
  52. data/lib/chef-dk/skeletons/code_generator/templates/default/metadata.rb.erb +3 -3
  53. data/lib/chef-dk/skeletons/code_generator/templates/default/repo/config/rake.rb.erb +38 -0
  54. data/lib/chef-dk/skeletons/code_generator/templates/default/repo/gitignore.erb +11 -0
  55. data/lib/chef-dk/version.rb +1 -1
  56. data/spec/shared/a_file_generator.rb +121 -0
  57. data/spec/shared/a_generated_file.rb +12 -0
  58. data/spec/shared/fixture_cookbook_checksums.rb +47 -0
  59. data/spec/spec_helper.rb +4 -2
  60. data/spec/unit/chef_runner_spec.rb +12 -5
  61. data/spec/unit/cli_spec.rb +4 -4
  62. data/spec/unit/command/base_spec.rb +1 -1
  63. data/spec/unit/command/exec_spec.rb +37 -27
  64. data/spec/unit/command/generate_spec.rb +3 -3
  65. data/spec/unit/command/generator_commands/app_spec.rb +131 -0
  66. data/spec/unit/command/generator_commands/attribute_spec.rb +32 -0
  67. data/spec/unit/command/generator_commands/cookbook_file_spec.rb +32 -0
  68. data/spec/unit/command/generator_commands/cookbook_spec.rb +205 -0
  69. data/spec/unit/command/generator_commands/lwrp_spec.rb +32 -0
  70. data/spec/unit/command/generator_commands/recipe_spec.rb +32 -0
  71. data/spec/unit/command/generator_commands/repo_spec.rb +287 -0
  72. data/spec/unit/command/generator_commands/template_spec.rb +32 -0
  73. data/spec/unit/command/shell_init_spec.rb +4 -4
  74. data/spec/unit/command/verify_spec.rb +9 -9
  75. data/spec/unit/commands_map_spec.rb +1 -1
  76. data/spec/unit/component_test_spec.rb +3 -3
  77. data/spec/unit/cookbook_profiler/git_spec.rb +7 -7
  78. data/spec/unit/cookbook_profiler/identifiers_spec.rb +12 -8
  79. data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/Berksfile +1 -1
  80. data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/Berksfile +1 -1
  81. data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/Berksfile +1 -1
  82. data/spec/unit/fixtures/example_cookbook/Berksfile +1 -1
  83. data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/README.md +4 -0
  84. data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/chefignore +96 -0
  85. data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/metadata.rb +8 -0
  86. data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/recipes/default.rb +8 -0
  87. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/Berksfile +1 -1
  88. data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/.kitchen.yml +16 -0
  89. data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/README.md +4 -0
  90. data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb +8 -0
  91. data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb +8 -0
  92. data/spec/unit/generator_spec.rb +120 -0
  93. data/spec/unit/policyfile/{cookbook_spec_spec.rb → cookbook_location_specification_spec.rb} +83 -38
  94. data/spec/unit/policyfile/cookbook_locks_spec.rb +354 -0
  95. data/spec/unit/policyfile/read_cookbook_for_compat_mode_upload_spec.rb +85 -0
  96. data/spec/unit/policyfile/solution_dependencies_spec.rb +145 -0
  97. data/spec/unit/policyfile/storage_config_spec.rb +98 -0
  98. data/spec/unit/policyfile/uploader_spec.rb +292 -0
  99. data/spec/unit/policyfile_demands_spec.rb +177 -24
  100. data/spec/unit/policyfile_evaluation_spec.rb +40 -12
  101. data/spec/unit/{policyfile_builder_spec.rb → policyfile_lock_build_spec.rb} +179 -64
  102. data/spec/unit/policyfile_lock_install_spec.rb +138 -0
  103. data/spec/unit/policyfile_lock_validation_spec.rb +610 -0
  104. metadata +103 -59
  105. data/spec/unit/command/generator_commands_spec.rb +0 -504
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.2.0
4
+ version: 0.2.1
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: 2014-08-15 00:00:00.000000000 Z
13
+ date: 2014-08-28 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: mixlib-cli
@@ -46,14 +46,14 @@ dependencies:
46
46
  requirements:
47
47
  - - "~>"
48
48
  - !ruby/object:Gem::Version
49
- version: '11.12'
49
+ version: 12.0.0.alpha.1
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
54
  - - "~>"
55
55
  - !ruby/object:Gem::Version
56
- version: '11.12'
56
+ version: 12.0.0.alpha.1
57
57
  - !ruby/object:Gem::Dependency
58
58
  name: solve
59
59
  requirement: !ruby/object:Gem::Requirement
@@ -74,70 +74,56 @@ dependencies:
74
74
  requirements:
75
75
  - - "~>"
76
76
  - !ruby/object:Gem::Version
77
- version: '0.0'
77
+ version: '0.2'
78
78
  type: :runtime
79
79
  prerelease: false
80
80
  version_requirements: !ruby/object:Gem::Requirement
81
81
  requirements:
82
82
  - - "~>"
83
83
  - !ruby/object:Gem::Version
84
- version: '0.0'
84
+ version: '0.2'
85
85
  - !ruby/object:Gem::Dependency
86
86
  name: rspec-core
87
87
  requirement: !ruby/object:Gem::Requirement
88
88
  requirements:
89
89
  - - "~>"
90
90
  - !ruby/object:Gem::Version
91
- version: 2.14.0
91
+ version: '3.0'
92
92
  type: :development
93
93
  prerelease: false
94
94
  version_requirements: !ruby/object:Gem::Requirement
95
95
  requirements:
96
96
  - - "~>"
97
97
  - !ruby/object:Gem::Version
98
- version: 2.14.0
98
+ version: '3.0'
99
99
  - !ruby/object:Gem::Dependency
100
100
  name: rspec-expectations
101
101
  requirement: !ruby/object:Gem::Requirement
102
102
  requirements:
103
103
  - - "~>"
104
104
  - !ruby/object:Gem::Version
105
- version: 2.14.0
105
+ version: '3.0'
106
106
  type: :development
107
107
  prerelease: false
108
108
  version_requirements: !ruby/object:Gem::Requirement
109
109
  requirements:
110
110
  - - "~>"
111
111
  - !ruby/object:Gem::Version
112
- version: 2.14.0
112
+ version: '3.0'
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: rspec-mocks
115
115
  requirement: !ruby/object:Gem::Requirement
116
116
  requirements:
117
117
  - - "~>"
118
118
  - !ruby/object:Gem::Version
119
- version: 2.14.0
119
+ version: '3.0'
120
120
  type: :development
121
121
  prerelease: false
122
122
  version_requirements: !ruby/object:Gem::Requirement
123
123
  requirements:
124
124
  - - "~>"
125
125
  - !ruby/object:Gem::Version
126
- version: 2.14.0
127
- - !ruby/object:Gem::Dependency
128
- name: pry-debugger
129
- requirement: !ruby/object:Gem::Requirement
130
- requirements:
131
- - - ">="
132
- - !ruby/object:Gem::Version
133
- version: '0'
134
- type: :development
135
- prerelease: false
136
- version_requirements: !ruby/object:Gem::Requirement
137
- requirements:
138
- - - ">="
139
- - !ruby/object:Gem::Version
140
- version: '0'
126
+ version: '3.0'
141
127
  description: A streamlined development and deployment workflow for Chef platform.
142
128
  email:
143
129
  - dan@getchef.com
@@ -154,6 +140,7 @@ files:
154
140
  - Rakefile
155
141
  - bin/chef
156
142
  - lib/chef-dk.rb
143
+ - lib/chef-dk/authenticated_http.rb
157
144
  - lib/chef-dk/builtin_commands.rb
158
145
  - lib/chef-dk/chef_runner.rb
159
146
  - lib/chef-dk/cli.rb
@@ -162,6 +149,16 @@ files:
162
149
  - lib/chef-dk/command/gem.rb
163
150
  - lib/chef-dk/command/generate.rb
164
151
  - lib/chef-dk/command/generator_commands.rb
152
+ - lib/chef-dk/command/generator_commands/app.rb
153
+ - lib/chef-dk/command/generator_commands/attribute.rb
154
+ - lib/chef-dk/command/generator_commands/base.rb
155
+ - lib/chef-dk/command/generator_commands/cookbook.rb
156
+ - lib/chef-dk/command/generator_commands/cookbook_code_file.rb
157
+ - lib/chef-dk/command/generator_commands/cookbook_file.rb
158
+ - lib/chef-dk/command/generator_commands/lwrp.rb
159
+ - lib/chef-dk/command/generator_commands/recipe.rb
160
+ - lib/chef-dk/command/generator_commands/repo.rb
161
+ - lib/chef-dk/command/generator_commands/template.rb
165
162
  - lib/chef-dk/command/shell_init.rb
166
163
  - lib/chef-dk/command/verify.rb
167
164
  - lib/chef-dk/commands_map.rb
@@ -176,10 +173,15 @@ files:
176
173
  - lib/chef-dk/helpers.rb
177
174
  - lib/chef-dk/policyfile/chef_server_cookbook_source.rb
178
175
  - lib/chef-dk/policyfile/community_cookbook_source.rb
176
+ - lib/chef-dk/policyfile/cookbook_location_specification.rb
177
+ - lib/chef-dk/policyfile/cookbook_locks.rb
179
178
  - lib/chef-dk/policyfile/cookbook_sources.rb
180
- - lib/chef-dk/policyfile/cookbook_spec.rb
181
179
  - lib/chef-dk/policyfile/dsl.rb
182
180
  - lib/chef-dk/policyfile/null_cookbook_source.rb
181
+ - lib/chef-dk/policyfile/read_cookbook_for_compat_mode_upload.rb
182
+ - lib/chef-dk/policyfile/solution_dependencies.rb
183
+ - lib/chef-dk/policyfile/storage_config.rb
184
+ - lib/chef-dk/policyfile/uploader.rb
183
185
  - lib/chef-dk/policyfile_compiler.rb
184
186
  - lib/chef-dk/policyfile_lock.rb
185
187
  - lib/chef-dk/shell_out.rb
@@ -187,6 +189,14 @@ files:
187
189
  - lib/chef-dk/skeletons/code_generator/files/default/chefignore
188
190
  - lib/chef-dk/skeletons/code_generator/files/default/converge_spec.rb
189
191
  - lib/chef-dk/skeletons/code_generator/files/default/gitignore
192
+ - lib/chef-dk/skeletons/code_generator/files/default/repo/README.md
193
+ - lib/chef-dk/skeletons/code_generator/files/default/repo/Rakefile
194
+ - lib/chef-dk/skeletons/code_generator/files/default/repo/certificates/README.md
195
+ - lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/README-policy.md
196
+ - lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/README.md
197
+ - lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/README.md
198
+ - lib/chef-dk/skeletons/code_generator/files/default/repo/environments/README.md
199
+ - lib/chef-dk/skeletons/code_generator/files/default/repo/roles/README.md
190
200
  - lib/chef-dk/skeletons/code_generator/files/default/spec_helper.rb
191
201
  - lib/chef-dk/skeletons/code_generator/metadata.rb
192
202
  - lib/chef-dk/skeletons/code_generator/recipes/app.rb
@@ -195,7 +205,13 @@ files:
195
205
  - lib/chef-dk/skeletons/code_generator/recipes/cookbook_file.rb
196
206
  - lib/chef-dk/skeletons/code_generator/recipes/lwrp.rb
197
207
  - lib/chef-dk/skeletons/code_generator/recipes/recipe.rb
208
+ - lib/chef-dk/skeletons/code_generator/recipes/repo.rb
198
209
  - lib/chef-dk/skeletons/code_generator/recipes/template.rb
210
+ - lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.all_rights.erb
211
+ - lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.apache2.erb
212
+ - lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.gplv2.erb
213
+ - lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.gplv3.erb
214
+ - lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.mit.erb
199
215
  - lib/chef-dk/skeletons/code_generator/templates/default/README.md.erb
200
216
  - lib/chef-dk/skeletons/code_generator/templates/default/attribute.rb.erb
201
217
  - lib/chef-dk/skeletons/code_generator/templates/default/cookbook_file.erb
@@ -204,9 +220,14 @@ files:
204
220
  - lib/chef-dk/skeletons/code_generator/templates/default/metadata.rb.erb
205
221
  - lib/chef-dk/skeletons/code_generator/templates/default/provider.rb.erb
206
222
  - lib/chef-dk/skeletons/code_generator/templates/default/recipe.rb.erb
223
+ - lib/chef-dk/skeletons/code_generator/templates/default/repo/config/rake.rb.erb
224
+ - lib/chef-dk/skeletons/code_generator/templates/default/repo/gitignore.erb
207
225
  - lib/chef-dk/skeletons/code_generator/templates/default/resource.rb.erb
208
226
  - lib/chef-dk/skeletons/code_generator/templates/default/template.erb
209
227
  - lib/chef-dk/version.rb
228
+ - spec/shared/a_file_generator.rb
229
+ - spec/shared/a_generated_file.rb
230
+ - spec/shared/fixture_cookbook_checksums.rb
210
231
  - spec/shared/setup_git_cookbooks.rb
211
232
  - spec/spec_helper.rb
212
233
  - spec/test_helpers.rb
@@ -215,7 +236,14 @@ files:
215
236
  - spec/unit/command/base_spec.rb
216
237
  - spec/unit/command/exec_spec.rb
217
238
  - spec/unit/command/generate_spec.rb
218
- - spec/unit/command/generator_commands_spec.rb
239
+ - spec/unit/command/generator_commands/app_spec.rb
240
+ - spec/unit/command/generator_commands/attribute_spec.rb
241
+ - spec/unit/command/generator_commands/cookbook_file_spec.rb
242
+ - spec/unit/command/generator_commands/cookbook_spec.rb
243
+ - spec/unit/command/generator_commands/lwrp_spec.rb
244
+ - spec/unit/command/generator_commands/recipe_spec.rb
245
+ - spec/unit/command/generator_commands/repo_spec.rb
246
+ - spec/unit/command/generator_commands/template_spec.rb
219
247
  - spec/unit/command/shell_init_spec.rb
220
248
  - spec/unit/command/verify_spec.rb
221
249
  - spec/unit/commands_map_spec.rb
@@ -266,19 +294,6 @@ files:
266
294
  - spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/test-kitchen/verify_me
267
295
  - spec/unit/fixtures/eg_omnibus_dir/valid/embedded/bin/.keep
268
296
  - spec/unit/fixtures/example_app/Policyfile.rb
269
- - spec/unit/fixtures/example_cookbook/.git/HEAD
270
- - spec/unit/fixtures/example_cookbook/.git/config
271
- - spec/unit/fixtures/example_cookbook/.git/description
272
- - spec/unit/fixtures/example_cookbook/.git/hooks/applypatch-msg.sample
273
- - spec/unit/fixtures/example_cookbook/.git/hooks/commit-msg.sample
274
- - spec/unit/fixtures/example_cookbook/.git/hooks/post-update.sample
275
- - spec/unit/fixtures/example_cookbook/.git/hooks/pre-applypatch.sample
276
- - spec/unit/fixtures/example_cookbook/.git/hooks/pre-commit.sample
277
- - spec/unit/fixtures/example_cookbook/.git/hooks/pre-push.sample
278
- - spec/unit/fixtures/example_cookbook/.git/hooks/pre-rebase.sample
279
- - spec/unit/fixtures/example_cookbook/.git/hooks/prepare-commit-msg.sample
280
- - spec/unit/fixtures/example_cookbook/.git/hooks/update.sample
281
- - spec/unit/fixtures/example_cookbook/.git/info/exclude
282
297
  - spec/unit/fixtures/example_cookbook/.gitignore
283
298
  - spec/unit/fixtures/example_cookbook/.kitchen.yml
284
299
  - spec/unit/fixtures/example_cookbook/Berksfile
@@ -286,6 +301,10 @@ files:
286
301
  - spec/unit/fixtures/example_cookbook/chefignore
287
302
  - spec/unit/fixtures/example_cookbook/metadata.rb
288
303
  - spec/unit/fixtures/example_cookbook/recipes/default.rb
304
+ - spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/README.md
305
+ - spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/chefignore
306
+ - spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/metadata.rb
307
+ - spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/recipes/default.rb
289
308
  - spec/unit/fixtures/local_path_cookbooks/local-cookbook/.kitchen.yml
290
309
  - spec/unit/fixtures/local_path_cookbooks/local-cookbook/Berksfile
291
310
  - spec/unit/fixtures/local_path_cookbooks/local-cookbook/README.md
@@ -293,13 +312,25 @@ files:
293
312
  - spec/unit/fixtures/local_path_cookbooks/local-cookbook/metadata.rb
294
313
  - spec/unit/fixtures/local_path_cookbooks/local-cookbook/recipes/default.rb
295
314
  - spec/unit/fixtures/local_path_cookbooks/metadata-missing/README.md
315
+ - spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/.kitchen.yml
316
+ - spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/README.md
317
+ - spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb
318
+ - spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb
319
+ - spec/unit/generator_spec.rb
296
320
  - spec/unit/policyfile/chef_server_cookbook_source_spec.rb
297
321
  - spec/unit/policyfile/community_cookbook_source_spec.rb
298
- - spec/unit/policyfile/cookbook_spec_spec.rb
322
+ - spec/unit/policyfile/cookbook_location_specification_spec.rb
323
+ - spec/unit/policyfile/cookbook_locks_spec.rb
299
324
  - spec/unit/policyfile/null_cookbook_source_spec.rb
300
- - spec/unit/policyfile_builder_spec.rb
325
+ - spec/unit/policyfile/read_cookbook_for_compat_mode_upload_spec.rb
326
+ - spec/unit/policyfile/solution_dependencies_spec.rb
327
+ - spec/unit/policyfile/storage_config_spec.rb
328
+ - spec/unit/policyfile/uploader_spec.rb
301
329
  - spec/unit/policyfile_demands_spec.rb
302
330
  - spec/unit/policyfile_evaluation_spec.rb
331
+ - spec/unit/policyfile_lock_build_spec.rb
332
+ - spec/unit/policyfile_lock_install_spec.rb
333
+ - spec/unit/policyfile_lock_validation_spec.rb
303
334
  - spec/unit/shell_out_spec.rb
304
335
  homepage: http://www.getchef.com/
305
336
  licenses: []
@@ -325,6 +356,9 @@ signing_key:
325
356
  specification_version: 4
326
357
  summary: A streamlined development and deployment workflow for Chef platform.
327
358
  test_files:
359
+ - spec/shared/a_file_generator.rb
360
+ - spec/shared/a_generated_file.rb
361
+ - spec/shared/fixture_cookbook_checksums.rb
328
362
  - spec/shared/setup_git_cookbooks.rb
329
363
  - spec/spec_helper.rb
330
364
  - spec/test_helpers.rb
@@ -333,7 +367,14 @@ test_files:
333
367
  - spec/unit/command/base_spec.rb
334
368
  - spec/unit/command/exec_spec.rb
335
369
  - spec/unit/command/generate_spec.rb
336
- - spec/unit/command/generator_commands_spec.rb
370
+ - spec/unit/command/generator_commands/app_spec.rb
371
+ - spec/unit/command/generator_commands/attribute_spec.rb
372
+ - spec/unit/command/generator_commands/cookbook_file_spec.rb
373
+ - spec/unit/command/generator_commands/cookbook_spec.rb
374
+ - spec/unit/command/generator_commands/lwrp_spec.rb
375
+ - spec/unit/command/generator_commands/recipe_spec.rb
376
+ - spec/unit/command/generator_commands/repo_spec.rb
377
+ - spec/unit/command/generator_commands/template_spec.rb
337
378
  - spec/unit/command/shell_init_spec.rb
338
379
  - spec/unit/command/verify_spec.rb
339
380
  - spec/unit/commands_map_spec.rb
@@ -384,19 +425,6 @@ test_files:
384
425
  - spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/test-kitchen/verify_me
385
426
  - spec/unit/fixtures/eg_omnibus_dir/valid/embedded/bin/.keep
386
427
  - spec/unit/fixtures/example_app/Policyfile.rb
387
- - spec/unit/fixtures/example_cookbook/.git/HEAD
388
- - spec/unit/fixtures/example_cookbook/.git/config
389
- - spec/unit/fixtures/example_cookbook/.git/description
390
- - spec/unit/fixtures/example_cookbook/.git/hooks/applypatch-msg.sample
391
- - spec/unit/fixtures/example_cookbook/.git/hooks/commit-msg.sample
392
- - spec/unit/fixtures/example_cookbook/.git/hooks/post-update.sample
393
- - spec/unit/fixtures/example_cookbook/.git/hooks/pre-applypatch.sample
394
- - spec/unit/fixtures/example_cookbook/.git/hooks/pre-commit.sample
395
- - spec/unit/fixtures/example_cookbook/.git/hooks/pre-push.sample
396
- - spec/unit/fixtures/example_cookbook/.git/hooks/pre-rebase.sample
397
- - spec/unit/fixtures/example_cookbook/.git/hooks/prepare-commit-msg.sample
398
- - spec/unit/fixtures/example_cookbook/.git/hooks/update.sample
399
- - spec/unit/fixtures/example_cookbook/.git/info/exclude
400
428
  - spec/unit/fixtures/example_cookbook/.gitignore
401
429
  - spec/unit/fixtures/example_cookbook/.kitchen.yml
402
430
  - spec/unit/fixtures/example_cookbook/Berksfile
@@ -404,6 +432,10 @@ test_files:
404
432
  - spec/unit/fixtures/example_cookbook/chefignore
405
433
  - spec/unit/fixtures/example_cookbook/metadata.rb
406
434
  - spec/unit/fixtures/example_cookbook/recipes/default.rb
435
+ - spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/README.md
436
+ - spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/chefignore
437
+ - spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/metadata.rb
438
+ - spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/recipes/default.rb
407
439
  - spec/unit/fixtures/local_path_cookbooks/local-cookbook/.kitchen.yml
408
440
  - spec/unit/fixtures/local_path_cookbooks/local-cookbook/Berksfile
409
441
  - spec/unit/fixtures/local_path_cookbooks/local-cookbook/README.md
@@ -411,12 +443,24 @@ test_files:
411
443
  - spec/unit/fixtures/local_path_cookbooks/local-cookbook/metadata.rb
412
444
  - spec/unit/fixtures/local_path_cookbooks/local-cookbook/recipes/default.rb
413
445
  - spec/unit/fixtures/local_path_cookbooks/metadata-missing/README.md
446
+ - spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/.kitchen.yml
447
+ - spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/README.md
448
+ - spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb
449
+ - spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb
450
+ - spec/unit/generator_spec.rb
414
451
  - spec/unit/policyfile/chef_server_cookbook_source_spec.rb
415
452
  - spec/unit/policyfile/community_cookbook_source_spec.rb
416
- - spec/unit/policyfile/cookbook_spec_spec.rb
453
+ - spec/unit/policyfile/cookbook_location_specification_spec.rb
454
+ - spec/unit/policyfile/cookbook_locks_spec.rb
417
455
  - spec/unit/policyfile/null_cookbook_source_spec.rb
418
- - spec/unit/policyfile_builder_spec.rb
456
+ - spec/unit/policyfile/read_cookbook_for_compat_mode_upload_spec.rb
457
+ - spec/unit/policyfile/solution_dependencies_spec.rb
458
+ - spec/unit/policyfile/storage_config_spec.rb
459
+ - spec/unit/policyfile/uploader_spec.rb
419
460
  - spec/unit/policyfile_demands_spec.rb
420
461
  - spec/unit/policyfile_evaluation_spec.rb
462
+ - spec/unit/policyfile_lock_build_spec.rb
463
+ - spec/unit/policyfile_lock_install_spec.rb
464
+ - spec/unit/policyfile_lock_validation_spec.rb
421
465
  - spec/unit/shell_out_spec.rb
422
466
  has_rdoc:
@@ -1,504 +0,0 @@
1
- #
2
- # Copyright:: Copyright (c) 2014 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/command/generator_commands'
20
-
21
- describe ChefDK::Command::GeneratorCommands::App do
22
-
23
- let(:argv) { %w[new_app] }
24
-
25
- let(:stdout_io) { StringIO.new }
26
- let(:stderr_io) { StringIO.new }
27
-
28
- let(:expected_cookbook_file_relpaths) do
29
- %w[
30
- .gitignore
31
- .kitchen.yml
32
- README.md
33
- cookbooks/new_app/Berksfile
34
- cookbooks/new_app/chefignore
35
- cookbooks/new_app/metadata.rb
36
- cookbooks/new_app/recipes
37
- cookbooks/new_app/recipes/default.rb
38
- ]
39
- end
40
-
41
- let(:expected_cookbook_files) do
42
- expected_cookbook_file_relpaths.map do |relpath|
43
- File.join(tempdir, "new_app", relpath)
44
- end
45
- end
46
-
47
- subject(:cookbook_generator) { described_class.new(argv) }
48
-
49
- def generator_context
50
- ChefDK::Generator.context
51
- end
52
-
53
- before do
54
- ChefDK::Generator.reset
55
- end
56
-
57
- context "when given the name of the cookbook to generate" do
58
-
59
- before do
60
- reset_tempdir
61
- end
62
-
63
- it "configures the generator context" do
64
- cookbook_generator.read_and_validate_params
65
- cookbook_generator.setup_context
66
- expect(generator_context.app_root).to eq(Dir.pwd)
67
- expect(generator_context.app_name).to eq("new_app")
68
- expect(generator_context.cookbook_root).to eq(File.join(Dir.pwd, "new_app", "cookbooks"))
69
- expect(generator_context.cookbook_name).to eq("new_app")
70
- end
71
-
72
- describe "generated files" do
73
- it "creates a new cookbook" do
74
- Dir.chdir(tempdir) do
75
- cookbook_generator.chef_runner.stub(:stdout).and_return(stdout_io)
76
- cookbook_generator.run
77
- end
78
- generated_files = Dir.glob(File.join(tempdir, "new_app", "**", "*"), File::FNM_DOTMATCH)
79
- expected_cookbook_files.each do |expected_file|
80
- expect(generated_files).to include(expected_file)
81
- end
82
- end
83
-
84
- shared_examples_for "a generated file" do |context_var|
85
- before do
86
- Dir.chdir(tempdir) do
87
- cookbook_generator.chef_runner.stub(:stdout).and_return(stdout_io)
88
- cookbook_generator.run
89
- end
90
- end
91
-
92
- it "should contain #{context_var} from the generator context" do
93
- File.read(file).should match line
94
- end
95
- end
96
-
97
- describe "README.md" do
98
- let(:file) { File.join(tempdir, "new_app", "README.md") }
99
-
100
- include_examples "a generated file", :cookbook_name do
101
- let(:line) { "# new_app" }
102
- end
103
- end
104
-
105
- describe ".kitchen.yml" do
106
- let(:file) { File.join(tempdir, "new_app", ".kitchen.yml") }
107
-
108
- include_examples "a generated file", :cookbook_name do
109
- let(:line) { /\s*- recipe\[new_app::default\]/ }
110
- end
111
- end
112
-
113
- describe "cookbooks/new_app/metadata.rb" do
114
- let(:file) { File.join(tempdir, "new_app", "cookbooks", "new_app", "metadata.rb") }
115
-
116
- include_examples "a generated file", :cookbook_name do
117
- let(:line) { /name\s+'new_app'/ }
118
- end
119
- end
120
-
121
- describe "cookbooks/new_app/recipes/default.rb" do
122
- let(:file) { File.join(tempdir, "new_app", "cookbooks", "new_app", "recipes", "default.rb") }
123
-
124
- include_examples "a generated file", :cookbook_name do
125
- let(:line) { "# Cookbook Name:: new_app" }
126
- end
127
- end
128
- end
129
-
130
- end
131
-
132
- end
133
-
134
- describe ChefDK::Command::GeneratorCommands::Cookbook do
135
-
136
- let(:argv) { %w[new_cookbook] }
137
-
138
- let(:stdout_io) { StringIO.new }
139
- let(:stderr_io) { StringIO.new }
140
-
141
- let(:expected_cookbook_file_relpaths) do
142
- %w[
143
- .gitignore
144
- .kitchen.yml
145
- Berksfile
146
- chefignore
147
- metadata.rb
148
- README.md
149
- recipes
150
- recipes/default.rb
151
- ]
152
- end
153
-
154
- let(:expected_cookbook_files) do
155
- expected_cookbook_file_relpaths.map do |relpath|
156
- File.join(tempdir, "new_cookbook", relpath)
157
- end
158
- end
159
-
160
- subject(:cookbook_generator) do
161
- g = described_class.new(argv)
162
- g.stub(:cookbook_path_in_git_repo?).and_return(false)
163
- g
164
- end
165
-
166
- def generator_context
167
- ChefDK::Generator.context
168
- end
169
-
170
- before do
171
- ChefDK::Generator.reset
172
- end
173
-
174
- it "configures the chef runner" do
175
- expect(cookbook_generator.chef_runner).to be_a(ChefDK::ChefRunner)
176
- expect(cookbook_generator.chef_runner.cookbook_path).to eq(File.expand_path('lib/chef-dk/skeletons', project_root))
177
- end
178
-
179
- context "when given invalid/incomplete arguments" do
180
-
181
- let(:expected_help_message) do
182
- "Usage: chef generate cookbook NAME [options]\n"
183
- end
184
-
185
-
186
- def with_argv(argv)
187
- generator = described_class.new(argv)
188
- generator.stub(:stdout).and_return(stdout_io)
189
- generator.stub(:stderr).and_return(stderr_io)
190
- generator
191
- end
192
-
193
- it "prints usage when args are empty" do
194
- with_argv([]).run
195
- expect(stdout_io.string).to eq(expected_help_message)
196
- end
197
-
198
- end
199
-
200
- context "when given the name of the cookbook to generate" do
201
-
202
- let(:argv) { %w[new_cookbook] }
203
-
204
- before do
205
- reset_tempdir
206
- end
207
-
208
- it "configures the generator context" do
209
- cookbook_generator.read_and_validate_params
210
- cookbook_generator.setup_context
211
- expect(generator_context.cookbook_root).to eq(Dir.pwd)
212
- expect(generator_context.cookbook_name).to eq("new_cookbook")
213
- end
214
-
215
- it "creates a new cookbook" do
216
- Dir.chdir(tempdir) do
217
- cookbook_generator.chef_runner.stub(:stdout).and_return(stdout_io)
218
- cookbook_generator.run
219
- end
220
- generated_files = Dir.glob("#{tempdir}/new_cookbook/**/*", File::FNM_DOTMATCH)
221
- expected_cookbook_files.each do |expected_file|
222
- expect(generated_files).to include(expected_file)
223
- end
224
- end
225
-
226
- shared_examples_for "a generated file" do |context_var|
227
- before do
228
- Dir.chdir(tempdir) do
229
- cookbook_generator.chef_runner.stub(:stdout).and_return(stdout_io)
230
- cookbook_generator.run
231
- end
232
- end
233
-
234
- it "should contain #{context_var} from the generator context" do
235
- File.read(file).should match line
236
- end
237
- end
238
-
239
- describe "README.md" do
240
- let(:file) { File.join(tempdir, "new_cookbook", "README.md") }
241
-
242
- include_examples "a generated file", :cookbook_name do
243
- let(:line) { "# new_cookbook" }
244
- end
245
- end
246
-
247
- describe ".kitchen.yml" do
248
- let(:file) { File.join(tempdir, "new_cookbook", ".kitchen.yml") }
249
-
250
- include_examples "a generated file", :cookbook_name do
251
- let(:line) { /\s*- recipe\[new_cookbook::default\]/ }
252
- end
253
- end
254
-
255
- describe "metadata.rb" do
256
- let(:file) { File.join(tempdir, "new_cookbook", "metadata.rb") }
257
-
258
- include_examples "a generated file", :cookbook_name do
259
- let(:line) { /name\s+'new_cookbook'/ }
260
- end
261
- end
262
-
263
- describe "recipes/default.rb" do
264
- let(:file) { File.join(tempdir, "new_cookbook", "recipes", "default.rb") }
265
-
266
- include_examples "a generated file", :cookbook_name do
267
- let(:line) { "# Cookbook Name:: new_cookbook" }
268
- end
269
- end
270
-
271
- end
272
-
273
- context "when given the path to the cookbook to generate" do
274
- let(:argv) { [ File.join(tempdir, "a_new_cookbook") ] }
275
-
276
- before do
277
- reset_tempdir
278
- end
279
-
280
- it "configures the generator context" do
281
- cookbook_generator.read_and_validate_params
282
- cookbook_generator.setup_context
283
- expect(generator_context.cookbook_root).to eq(tempdir)
284
- expect(generator_context.cookbook_name).to eq("a_new_cookbook")
285
- end
286
-
287
- end
288
-
289
- context "when given a generator-cookbook path" do
290
- let(:generator_cookbook_path) { File.join(tempdir, 'a_generator_cookbook') }
291
- let(:argv) { ["new_cookbook", "--generator-cookbook", generator_cookbook_path] }
292
-
293
- before do
294
- reset_tempdir
295
- end
296
-
297
- it "configures the generator context" do
298
- cookbook_generator.read_and_validate_params
299
- cookbook_generator.setup_context
300
- expect(generator_context.cookbook_root).to eq(Dir.pwd)
301
- expect(generator_context.cookbook_name).to eq("new_cookbook")
302
- expect(cookbook_generator.chef_runner.cookbook_path).to eq(generator_cookbook_path)
303
- end
304
-
305
- it "creates a new cookbook" do
306
- Dir.chdir(tempdir) do
307
- cookbook_generator.chef_runner.stub(:stdout).and_return(stdout_io)
308
- cookbook_generator.run
309
- end
310
- generated_files = Dir.glob("#{tempdir}/new_cookbook/**/*", File::FNM_DOTMATCH)
311
- expected_cookbook_files.each do |expected_file|
312
- expect(generated_files).to include(expected_file)
313
- end
314
- end
315
- end
316
-
317
- end
318
-
319
- shared_examples_for "a file generator" do
320
-
321
- let(:stdout_io) { StringIO.new }
322
- let(:stderr_io) { StringIO.new }
323
-
324
- def stdout
325
- stdout_io.string
326
- end
327
-
328
- def stderr
329
- stderr_io.string
330
- end
331
-
332
- let(:expected_cookbook_root) { tempdir }
333
- let(:cookbook_name) { "example_cookbook" }
334
-
335
- let(:cookbook_path) { File.join(tempdir, cookbook_name) }
336
-
337
- subject(:recipe_generator) do
338
- generator = described_class.new(argv)
339
- generator.stub(:stdout).and_return(stdout_io)
340
- generator.stub(:stderr).and_return(stderr_io)
341
- generator
342
- end
343
-
344
- def generator_context
345
- ChefDK::Generator.context
346
- end
347
-
348
- before do
349
- ChefDK::Generator.reset
350
- reset_tempdir
351
- end
352
-
353
- context "when argv is empty" do
354
- let(:argv) { [] }
355
-
356
- it "emits an error message and exits" do
357
- expected_stdout = "Usage: chef generate #{generator_name} [path/to/cookbook] NAME [options]"
358
-
359
- expect(recipe_generator.run).to eq(1)
360
- expect(stdout).to include(expected_stdout)
361
- end
362
- end
363
-
364
- context "when CWD is a cookbook" do
365
-
366
- let(:argv) { [ new_file_name ] }
367
-
368
- before do
369
- FileUtils.cp_r(File.join(fixtures_path, "example_cookbook"), tempdir)
370
- end
371
-
372
- it "configures the generator context" do
373
- Dir.chdir(cookbook_path) do
374
- recipe_generator.read_and_validate_params
375
- recipe_generator.setup_context
376
-
377
- expect(generator_context.cookbook_root).to eq(expected_cookbook_root)
378
- expect(generator_context.cookbook_name).to eq(cookbook_name)
379
- expect(generator_context.new_file_basename).to eq(new_file_name)
380
- end
381
- end
382
-
383
- it "creates a new recipe" do
384
- Dir.chdir(cookbook_path) do
385
- recipe_generator.chef_runner.stub(:stdout).and_return(stdout_io)
386
- recipe_generator.run
387
- end
388
-
389
- generated_files.each do |expected_file|
390
- expect(File).to exist(File.join(cookbook_path, expected_file))
391
- end
392
- end
393
-
394
- end
395
-
396
- context "when CWD is not a cookbook" do
397
- context "and path to the cookbook is not given in the agv" do
398
- let(:argv) { [ new_file_name ] }
399
-
400
- it "emits an error message and exits" do
401
- expected_stdout = "Usage: chef generate #{generator_name} [path/to/cookbook] NAME [options]"
402
- expected_stderr = "Error: Directory #{Dir.pwd} is not a cookbook\n"
403
-
404
- expect(recipe_generator.run).to eq(1)
405
- expect(stdout).to include(expected_stdout)
406
- expect(stderr).to eq(expected_stderr)
407
- end
408
- end
409
-
410
- context "and path to the cookbook is given in the argv" do
411
- let(:argv) { [cookbook_path, new_file_name ] }
412
-
413
- before do
414
- FileUtils.cp_r(File.join(fixtures_path, "example_cookbook"), tempdir)
415
- end
416
-
417
- it "configures the generator context" do
418
- recipe_generator.read_and_validate_params
419
- recipe_generator.setup_context
420
-
421
- expect(generator_context.cookbook_root).to eq(File.dirname(cookbook_path))
422
- expect(generator_context.cookbook_name).to eq(cookbook_name)
423
- expect(generator_context.new_file_basename).to eq(new_file_name)
424
- end
425
-
426
- it "creates a new recipe" do
427
- recipe_generator.chef_runner.stub(:stdout).and_return(stdout_io)
428
- recipe_generator.run
429
-
430
- generated_files.each do |expected_file|
431
- expect(File).to exist(File.join(cookbook_path, expected_file))
432
- end
433
- end
434
-
435
- end
436
- end
437
-
438
- end
439
-
440
- describe ChefDK::Command::GeneratorCommands::Recipe do
441
-
442
- include_examples "a file generator" do
443
-
444
- let(:generator_name) { "recipe" }
445
- let(:generated_files) { [ "recipes/new_recipe.rb" ] }
446
- let(:new_file_name) { "new_recipe" }
447
-
448
- end
449
- end
450
-
451
- describe ChefDK::Command::GeneratorCommands::Attribute do
452
-
453
- include_examples "a file generator" do
454
-
455
- let(:generator_name) { "attribute" }
456
- let(:generated_files) { [ "attributes/new_attribute_file.rb" ] }
457
- let(:new_file_name) { "new_attribute_file" }
458
-
459
- end
460
- end
461
-
462
- describe ChefDK::Command::GeneratorCommands::LWRP do
463
-
464
- include_examples "a file generator" do
465
-
466
- let(:generator_name) { "lwrp" }
467
- let(:generated_files) { [ "resources/new_lwrp.rb", "providers/new_lwrp.rb" ] }
468
- let(:new_file_name) { "new_lwrp" }
469
-
470
- end
471
- end
472
-
473
- describe ChefDK::Command::GeneratorCommands::Template do
474
-
475
- include_examples "a file generator" do
476
-
477
- let(:generator_name) { "template" }
478
- let(:generated_files) { [ "templates/default/new_template.txt.erb" ] }
479
- let(:new_file_name) { "new_template.txt" }
480
-
481
- end
482
- end
483
-
484
- describe ChefDK::Command::GeneratorCommands::Template do
485
-
486
- include_examples "a file generator" do
487
-
488
- let(:generator_name) { "template" }
489
- let(:generated_files) { [ "templates/default/new_template.erb" ] }
490
- let(:new_file_name) { "new_template.erb" }
491
-
492
- end
493
- end
494
-
495
- describe ChefDK::Command::GeneratorCommands::CookbookFile do
496
-
497
- include_examples "a file generator" do
498
-
499
- let(:generator_name) { "file" }
500
- let(:generated_files) { [ "files/default/new_file.txt" ] }
501
- let(:new_file_name) { "new_file.txt" }
502
-
503
- end
504
- end