chef-dk 0.15.16 → 0.16.28

Sign up to get free protection for your applications and to get access to all the features.
Files changed (331) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +1 -26
  3. data/Gemfile +10 -4
  4. data/Gemfile.lock +73 -64
  5. data/LICENSE +201 -201
  6. data/README.md +2 -1
  7. data/acceptance/.shared/kitchen_acceptance/.kitchen.digitalocean.yml +27 -27
  8. data/acceptance/.shared/kitchen_acceptance/.kitchen.ec2.yml +288 -288
  9. data/acceptance/.shared/kitchen_acceptance/.kitchen.vagrant.yml +52 -52
  10. data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +51 -51
  11. data/acceptance/.shared/kitchen_acceptance/metadata.rb +1 -1
  12. data/acceptance/Gemfile +3 -0
  13. data/acceptance/Gemfile.lock +24 -24
  14. data/acceptance/README.md +132 -132
  15. data/acceptance/trivial/.acceptance/acceptance-cookbook/.gitignore +2 -2
  16. data/acceptance/trivial/.acceptance/acceptance-cookbook/metadata.rb +2 -2
  17. data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -1
  18. data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -1
  19. data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -1
  20. data/acceptance/trivial/.kitchen.yml +7 -7
  21. data/acceptance/trivial/test/integration/chefdk-current-install/inspec/chef_client_spec.rb +5 -5
  22. data/bin/chef +25 -25
  23. data/chef-dk.gemspec +1 -1
  24. data/lib/chef-dk.rb +19 -19
  25. data/lib/chef-dk/authenticated_http.rb +40 -40
  26. data/lib/chef-dk/chef_runner.rb +12 -4
  27. data/lib/chef-dk/command/base.rb +79 -79
  28. data/lib/chef-dk/command/clean_policy_cookbooks.rb +116 -116
  29. data/lib/chef-dk/command/clean_policy_revisions.rb +113 -113
  30. data/lib/chef-dk/command/delete_policy.rb +122 -122
  31. data/lib/chef-dk/command/delete_policy_group.rb +122 -122
  32. data/lib/chef-dk/command/diff.rb +316 -316
  33. data/lib/chef-dk/command/env.rb +90 -90
  34. data/lib/chef-dk/command/exec.rb +45 -45
  35. data/lib/chef-dk/command/gem.rb +47 -47
  36. data/lib/chef-dk/command/generator_commands/app.rb +107 -107
  37. data/lib/chef-dk/command/generator_commands/attribute.rb +37 -37
  38. data/lib/chef-dk/command/generator_commands/base.rb +3 -0
  39. data/lib/chef-dk/command/generator_commands/build_cookbook.rb +4 -4
  40. data/lib/chef-dk/command/generator_commands/chef_exts/generator_desc_resource.rb +85 -0
  41. data/lib/chef-dk/command/generator_commands/chef_exts/quieter_doc_formatter.rb +39 -0
  42. data/lib/chef-dk/command/generator_commands/chef_exts/recipe_dsl_ext.rb +40 -0
  43. data/lib/chef-dk/command/generator_commands/cookbook.rb +63 -8
  44. data/lib/chef-dk/command/generator_commands/cookbook_code_file.rb +100 -100
  45. data/lib/chef-dk/command/generator_commands/cookbook_file.rb +45 -45
  46. data/lib/chef-dk/command/generator_commands/generator_generator.rb +177 -177
  47. data/lib/chef-dk/command/generator_commands/lwrp.rb +36 -36
  48. data/lib/chef-dk/command/generator_commands/policyfile.rb +127 -127
  49. data/lib/chef-dk/command/generator_commands/recipe.rb +36 -36
  50. data/lib/chef-dk/command/generator_commands/repo.rb +125 -125
  51. data/lib/chef-dk/command/generator_commands/template.rb +46 -46
  52. data/lib/chef-dk/command/install.rb +121 -121
  53. data/lib/chef-dk/command/provision.rb +438 -438
  54. data/lib/chef-dk/command/push.rb +118 -118
  55. data/lib/chef-dk/command/push_archive.rb +126 -126
  56. data/lib/chef-dk/command/shell_init.rb +180 -180
  57. data/lib/chef-dk/command/show_policy.rb +165 -165
  58. data/lib/chef-dk/command/undelete.rb +155 -155
  59. data/lib/chef-dk/command/update.rb +148 -148
  60. data/lib/chef-dk/command/verify.rb +31 -26
  61. data/lib/chef-dk/completions/bash.sh.erb +5 -5
  62. data/lib/chef-dk/completions/chef.fish.erb +10 -10
  63. data/lib/chef-dk/completions/zsh.zsh.erb +21 -21
  64. data/lib/chef-dk/configurable.rb +69 -69
  65. data/lib/chef-dk/cookbook_metadata.rb +45 -45
  66. data/lib/chef-dk/cookbook_omnifetch.rb +32 -32
  67. data/lib/chef-dk/cookbook_profiler/git.rb +151 -151
  68. data/lib/chef-dk/cookbook_profiler/identifiers.rb +72 -72
  69. data/lib/chef-dk/cookbook_profiler/null_scm.rb +32 -32
  70. data/lib/chef-dk/exceptions.rb +129 -129
  71. data/lib/chef-dk/helpers.rb +10 -0
  72. data/lib/chef-dk/pager.rb +106 -106
  73. data/lib/chef-dk/policyfile/chef_repo_cookbook_source.rb +138 -138
  74. data/lib/chef-dk/policyfile/chef_server_cookbook_source.rb +54 -54
  75. data/lib/chef-dk/policyfile/community_cookbook_source.rb +97 -97
  76. data/lib/chef-dk/policyfile/comparison_base.rb +124 -124
  77. data/lib/chef-dk/policyfile/cookbook_location_specification.rb +154 -154
  78. data/lib/chef-dk/policyfile/cookbook_locks.rb +466 -466
  79. data/lib/chef-dk/policyfile/cookbook_sources.rb +22 -22
  80. data/lib/chef-dk/policyfile/delivery_supermarket_source.rb +90 -90
  81. data/lib/chef-dk/policyfile/differ.rb +266 -266
  82. data/lib/chef-dk/policyfile/dsl.rb +261 -261
  83. data/lib/chef-dk/policyfile/lister.rb +232 -232
  84. data/lib/chef-dk/policyfile/null_cookbook_source.rb +45 -45
  85. data/lib/chef-dk/policyfile/read_cookbook_for_compat_mode_upload.rb +124 -124
  86. data/lib/chef-dk/policyfile/reports/install.rb +70 -70
  87. data/lib/chef-dk/policyfile/reports/table_printer.rb +58 -58
  88. data/lib/chef-dk/policyfile/reports/upload.rb +70 -70
  89. data/lib/chef-dk/policyfile/solution_dependencies.rb +298 -298
  90. data/lib/chef-dk/policyfile/storage_config.rb +100 -100
  91. data/lib/chef-dk/policyfile/undo_record.rb +142 -142
  92. data/lib/chef-dk/policyfile/undo_stack.rb +130 -130
  93. data/lib/chef-dk/policyfile/uploader.rb +213 -213
  94. data/lib/chef-dk/policyfile_compiler.rb +419 -419
  95. data/lib/chef-dk/policyfile_lock.rb +552 -552
  96. data/lib/chef-dk/policyfile_services/clean_policies.rb +95 -95
  97. data/lib/chef-dk/policyfile_services/clean_policy_cookbooks.rb +125 -125
  98. data/lib/chef-dk/policyfile_services/export_repo.rb +421 -421
  99. data/lib/chef-dk/policyfile_services/install.rb +126 -126
  100. data/lib/chef-dk/policyfile_services/push_archive.rb +204 -204
  101. data/lib/chef-dk/policyfile_services/rm_policy.rb +142 -142
  102. data/lib/chef-dk/policyfile_services/rm_policy_group.rb +86 -86
  103. data/lib/chef-dk/policyfile_services/show_policy.rb +237 -237
  104. data/lib/chef-dk/policyfile_services/undelete.rb +108 -108
  105. data/lib/chef-dk/policyfile_services/update_attributes.rb +104 -104
  106. data/lib/chef-dk/service_exception_inspectors.rb +25 -25
  107. data/lib/chef-dk/service_exception_inspectors/base.rb +40 -40
  108. data/lib/chef-dk/service_exception_inspectors/http.rb +121 -121
  109. data/lib/chef-dk/service_exceptions.rb +143 -143
  110. data/lib/chef-dk/shell_out.rb +36 -36
  111. data/lib/chef-dk/skeletons/code_generator/files/default/Berksfile +3 -3
  112. data/lib/chef-dk/skeletons/code_generator/files/default/{build-cookbook → build_cookbook}/.kitchen.yml +2 -2
  113. data/lib/chef-dk/skeletons/code_generator/files/default/{build-cookbook → build_cookbook}/README.md +11 -11
  114. data/lib/chef-dk/skeletons/code_generator/files/default/{build-cookbook → build_cookbook}/test-fixture-recipe.rb +0 -0
  115. data/lib/chef-dk/skeletons/code_generator/files/default/chefignore +102 -102
  116. data/lib/chef-dk/skeletons/code_generator/files/default/cookbook_readmes/README-policy.md +9 -9
  117. data/lib/chef-dk/skeletons/code_generator/files/default/cookbook_readmes/README.md +54 -54
  118. data/lib/chef-dk/skeletons/code_generator/files/default/delivery-config.json +2 -2
  119. data/lib/chef-dk/skeletons/code_generator/files/default/delivery-project.toml +21 -0
  120. data/lib/chef-dk/skeletons/code_generator/files/default/gitignore +16 -16
  121. data/lib/chef-dk/skeletons/code_generator/files/default/repo/README.md +9 -13
  122. data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/README.md +5 -5
  123. data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/attributes/default.rb +7 -7
  124. data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/metadata.rb +3 -3
  125. data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/recipes/default.rb +8 -8
  126. data/lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/README.md +3 -5
  127. data/lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/example/example_item.json +3 -3
  128. data/lib/chef-dk/skeletons/code_generator/files/default/repo/dot-chef-repo.txt +6 -6
  129. data/lib/chef-dk/skeletons/code_generator/files/default/repo/environments/README.md +9 -9
  130. data/lib/chef-dk/skeletons/code_generator/files/default/repo/environments/example.json +12 -12
  131. data/lib/chef-dk/skeletons/code_generator/files/default/repo/policies/README.md +24 -24
  132. data/lib/chef-dk/skeletons/code_generator/files/default/repo/roles/README.md +9 -9
  133. data/lib/chef-dk/skeletons/code_generator/files/default/repo/roles/example.json +12 -12
  134. data/lib/chef-dk/skeletons/code_generator/files/default/spec_helper.rb +2 -2
  135. data/lib/chef-dk/skeletons/code_generator/files/default/spec_helper_policyfile.rb +2 -2
  136. data/lib/chef-dk/skeletons/code_generator/metadata.rb +8 -8
  137. data/lib/chef-dk/skeletons/code_generator/recipes/app.rb +5 -13
  138. data/lib/chef-dk/skeletons/code_generator/recipes/attribute.rb +12 -12
  139. data/lib/chef-dk/skeletons/code_generator/recipes/build_cookbook.rb +30 -7
  140. data/lib/chef-dk/skeletons/code_generator/recipes/cookbook.rb +12 -14
  141. data/lib/chef-dk/skeletons/code_generator/recipes/cookbook_file.rb +24 -24
  142. data/lib/chef-dk/skeletons/code_generator/recipes/lwrp.rb +23 -23
  143. data/lib/chef-dk/skeletons/code_generator/recipes/policyfile.rb +8 -8
  144. data/lib/chef-dk/skeletons/code_generator/recipes/recipe.rb +40 -27
  145. data/lib/chef-dk/skeletons/code_generator/recipes/repo.rb +67 -67
  146. data/lib/chef-dk/skeletons/code_generator/recipes/template.rb +1 -1
  147. data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.all_rights.erb +3 -3
  148. data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.gplv2.erb +339 -339
  149. data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.gplv3.erb +674 -674
  150. data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.mit.erb +21 -21
  151. data/lib/chef-dk/skeletons/code_generator/templates/default/Policyfile.rb.erb +25 -25
  152. data/lib/chef-dk/skeletons/code_generator/templates/default/README.md.erb +4 -4
  153. data/lib/chef-dk/skeletons/code_generator/templates/default/{build-cookbook → build_cookbook}/Berksfile.erb +0 -0
  154. data/lib/chef-dk/skeletons/code_generator/templates/default/{build-cookbook → build_cookbook}/metadata.rb.erb +1 -1
  155. data/lib/chef-dk/skeletons/code_generator/templates/default/{build-cookbook → build_cookbook}/recipe.rb.erb +1 -1
  156. data/lib/chef-dk/skeletons/code_generator/templates/default/inspec_default_test.rb.erb +18 -0
  157. data/lib/chef-dk/skeletons/code_generator/templates/default/kitchen.yml.erb +2 -5
  158. data/lib/chef-dk/skeletons/code_generator/templates/default/kitchen_policyfile.yml.erb +2 -5
  159. data/lib/chef-dk/skeletons/code_generator/templates/default/metadata.rb.erb +7 -7
  160. data/lib/chef-dk/skeletons/code_generator/templates/default/recipe.rb.erb +5 -5
  161. data/lib/chef-dk/skeletons/code_generator/templates/default/recipe_spec.rb.erb +20 -20
  162. data/lib/chef-dk/skeletons/code_generator/templates/default/repo/gitignore.erb +11 -11
  163. data/lib/chef-dk/ui.rb +58 -58
  164. data/lib/chef-dk/version.rb +1 -1
  165. data/lib/kitchen/provisioner/policyfile_zero.rb +195 -195
  166. data/omnibus_overrides.rb +3 -3
  167. data/spec/shared/a_file_generator.rb +125 -125
  168. data/spec/shared/a_generated_file.rb +12 -12
  169. data/spec/shared/command_with_ui_object.rb +11 -11
  170. data/spec/shared/fixture_cookbook_checksums.rb +47 -47
  171. data/spec/shared/setup_git_cookbooks.rb +53 -53
  172. data/spec/spec_helper.rb +51 -51
  173. data/spec/test_helpers.rb +84 -84
  174. data/spec/unit/chef_runner_spec.rb +7 -5
  175. data/spec/unit/command/clean_policy_cookbooks_spec.rb +181 -181
  176. data/spec/unit/command/clean_policy_revisions_spec.rb +181 -181
  177. data/spec/unit/command/delete_policy_group_spec.rb +207 -207
  178. data/spec/unit/command/delete_policy_spec.rb +207 -207
  179. data/spec/unit/command/diff_spec.rb +312 -312
  180. data/spec/unit/command/env_spec.rb +52 -52
  181. data/spec/unit/command/exec_spec.rb +179 -179
  182. data/spec/unit/command/export_spec.rb +200 -200
  183. data/spec/unit/command/generate_spec.rb +142 -142
  184. data/spec/unit/command/generator_commands/app_spec.rb +5 -8
  185. data/spec/unit/command/generator_commands/attribute_spec.rb +32 -32
  186. data/spec/unit/command/generator_commands/base_spec.rb +136 -136
  187. data/spec/unit/command/generator_commands/build_cookbook_spec.rb +9 -9
  188. data/spec/unit/command/generator_commands/chef_exts/generator_desc_resource_spec.rb +97 -0
  189. data/spec/unit/command/generator_commands/chef_exts/recipe_dsl_ext_spec.rb +111 -0
  190. data/spec/unit/command/generator_commands/cookbook_file_spec.rb +32 -32
  191. data/spec/unit/command/generator_commands/cookbook_spec.rb +291 -111
  192. data/spec/unit/command/generator_commands/generator_generator_spec.rb +229 -229
  193. data/spec/unit/command/generator_commands/lwrp_spec.rb +32 -32
  194. data/spec/unit/command/generator_commands/policyfile_spec.rb +225 -225
  195. data/spec/unit/command/generator_commands/recipe_spec.rb +36 -34
  196. data/spec/unit/command/generator_commands/template_spec.rb +1 -1
  197. data/spec/unit/command/install_spec.rb +179 -179
  198. data/spec/unit/command/provision_spec.rb +592 -592
  199. data/spec/unit/command/push_archive_spec.rb +153 -153
  200. data/spec/unit/command/push_spec.rb +199 -199
  201. data/spec/unit/command/shell_init_spec.rb +329 -329
  202. data/spec/unit/command/show_policy_spec.rb +235 -235
  203. data/spec/unit/command/undelete_spec.rb +246 -246
  204. data/spec/unit/command/update_spec.rb +275 -275
  205. data/spec/unit/command/verify_spec.rb +0 -1
  206. data/spec/unit/commands_map_spec.rb +57 -57
  207. data/spec/unit/configurable_spec.rb +41 -41
  208. data/spec/unit/cookbook_metadata_spec.rb +98 -98
  209. data/spec/unit/cookbook_profiler/git_spec.rb +176 -176
  210. data/spec/unit/cookbook_profiler/identifiers_spec.rb +83 -83
  211. data/spec/unit/fixtures/chef-runner-cookbooks/test_cookbook/recipes/recipe_one.rb +9 -9
  212. data/spec/unit/fixtures/chef-runner-cookbooks/test_cookbook/recipes/recipe_two.rb +9 -9
  213. data/spec/unit/fixtures/command/cli_test_command.rb +26 -26
  214. data/spec/unit/fixtures/command/explicit_path_example.rb +7 -7
  215. data/spec/unit/fixtures/configurable/test_config_loader.rb +5 -5
  216. data/spec/unit/fixtures/configurable/test_configurable.rb +10 -10
  217. data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/.kitchen.yml +16 -16
  218. data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/Berksfile +3 -3
  219. data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/README.md +4 -4
  220. data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/chefignore +96 -96
  221. data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb +8 -8
  222. data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb +8 -8
  223. data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/.kitchen.yml +16 -16
  224. data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/Berksfile +3 -3
  225. data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/README.md +4 -4
  226. data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/chefignore +96 -96
  227. data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/metadata.rb +8 -8
  228. data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/recipes/default.rb +8 -8
  229. data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/.kitchen.yml +16 -16
  230. data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/Berksfile +3 -3
  231. data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/README.md +4 -4
  232. data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/chefignore +96 -96
  233. data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/metadata.rb +8 -8
  234. data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/recipes/default.rb +8 -8
  235. data/spec/unit/fixtures/cookbooks_api/pruned_small_universe.json +1321 -1321
  236. data/spec/unit/fixtures/cookbooks_api/small_universe.json +2987 -2987
  237. data/spec/unit/fixtures/cookbooks_api/universe.json +1 -1
  238. data/spec/unit/fixtures/cookbooks_api/update_fixtures.rb +36 -36
  239. data/spec/unit/fixtures/dev_cookbooks/README.md +16 -16
  240. data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/berkshelf/integration_test +2 -2
  241. data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/berkshelf/verify_me +5 -5
  242. data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/chef/verify_me +3 -3
  243. data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/test-kitchen/verify_me +2 -2
  244. data/spec/unit/fixtures/example_cookbook/.gitignore +17 -17
  245. data/spec/unit/fixtures/example_cookbook/.kitchen.yml +16 -16
  246. data/spec/unit/fixtures/example_cookbook/Berksfile +3 -3
  247. data/spec/unit/fixtures/example_cookbook/README.md +4 -4
  248. data/spec/unit/fixtures/example_cookbook/chefignore +96 -96
  249. data/spec/unit/fixtures/example_cookbook/metadata.rb +8 -8
  250. data/spec/unit/fixtures/example_cookbook/recipes/default.rb +8 -8
  251. data/spec/unit/fixtures/example_cookbook_metadata_json_only/.gitignore +17 -17
  252. data/spec/unit/fixtures/example_cookbook_metadata_json_only/.kitchen.yml +16 -16
  253. data/spec/unit/fixtures/example_cookbook_metadata_json_only/Berksfile +3 -3
  254. data/spec/unit/fixtures/example_cookbook_metadata_json_only/README.md +4 -4
  255. data/spec/unit/fixtures/example_cookbook_metadata_json_only/chefignore +96 -96
  256. data/spec/unit/fixtures/example_cookbook_metadata_json_only/metadata.json +5 -5
  257. data/spec/unit/fixtures/example_cookbook_metadata_json_only/recipes/default.rb +8 -8
  258. data/spec/unit/fixtures/example_cookbook_no_metadata/.gitignore +17 -17
  259. data/spec/unit/fixtures/example_cookbook_no_metadata/.kitchen.yml +16 -16
  260. data/spec/unit/fixtures/example_cookbook_no_metadata/Berksfile +3 -3
  261. data/spec/unit/fixtures/example_cookbook_no_metadata/README.md +4 -4
  262. data/spec/unit/fixtures/example_cookbook_no_metadata/chefignore +96 -96
  263. data/spec/unit/fixtures/example_cookbook_no_metadata/recipes/default.rb +8 -8
  264. data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/README.md +4 -4
  265. data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/chefignore +96 -96
  266. data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/metadata.rb +8 -8
  267. data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/recipes/default.rb +8 -8
  268. data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/Berksfile +3 -3
  269. data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/README.md +4 -4
  270. data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/chefignore +96 -96
  271. data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/metadata.rb +9 -9
  272. data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/recipes/default.rb +8 -8
  273. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/.kitchen.yml +16 -16
  274. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/Berksfile +3 -3
  275. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/README.md +4 -4
  276. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/chefignore +96 -96
  277. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/metadata.rb +8 -8
  278. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/recipes/default.rb +8 -8
  279. data/spec/unit/fixtures/local_path_cookbooks/metadata-missing/README.md +2 -2
  280. data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/.kitchen.yml +16 -16
  281. data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/README.md +4 -4
  282. data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb +8 -8
  283. data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb +8 -8
  284. data/spec/unit/helpers_spec.rb +14 -5
  285. data/spec/unit/pager_spec.rb +119 -119
  286. data/spec/unit/policyfile/chef_repo_cookbook_source_spec.rb +93 -93
  287. data/spec/unit/policyfile/chef_server_cookbook_source_spec.rb +34 -34
  288. data/spec/unit/policyfile/community_cookbook_source_spec.rb +84 -84
  289. data/spec/unit/policyfile/comparison_base_spec.rb +343 -343
  290. data/spec/unit/policyfile/cookbook_location_specification_spec.rb +277 -277
  291. data/spec/unit/policyfile/cookbook_locks_spec.rb +529 -529
  292. data/spec/unit/policyfile/delivery_supermarket_source_spec.rb +130 -130
  293. data/spec/unit/policyfile/differ_spec.rb +687 -687
  294. data/spec/unit/policyfile/lister_spec.rb +272 -272
  295. data/spec/unit/policyfile/null_cookbook_source_spec.rb +35 -35
  296. data/spec/unit/policyfile/read_cookbook_for_compat_mode_upload_spec.rb +92 -92
  297. data/spec/unit/policyfile/reports/install_spec.rb +115 -115
  298. data/spec/unit/policyfile/reports/upload_spec.rb +96 -96
  299. data/spec/unit/policyfile/solution_dependencies_spec.rb +145 -145
  300. data/spec/unit/policyfile/storage_config_spec.rb +172 -172
  301. data/spec/unit/policyfile/undo_record_spec.rb +260 -260
  302. data/spec/unit/policyfile/undo_stack_spec.rb +266 -266
  303. data/spec/unit/policyfile/uploader_spec.rb +410 -410
  304. data/spec/unit/policyfile_demands_spec.rb +1203 -1203
  305. data/spec/unit/policyfile_evaluation_spec.rb +642 -642
  306. data/spec/unit/policyfile_lock_build_spec.rb +1056 -1056
  307. data/spec/unit/policyfile_lock_install_spec.rb +138 -138
  308. data/spec/unit/policyfile_lock_serialization_spec.rb +425 -425
  309. data/spec/unit/policyfile_lock_validation_spec.rb +611 -611
  310. data/spec/unit/policyfile_services/clean_policies_spec.rb +236 -236
  311. data/spec/unit/policyfile_services/clean_policy_cookbooks_spec.rb +275 -275
  312. data/spec/unit/policyfile_services/export_repo_spec.rb +481 -481
  313. data/spec/unit/policyfile_services/install_spec.rb +211 -211
  314. data/spec/unit/policyfile_services/push_archive_spec.rb +378 -378
  315. data/spec/unit/policyfile_services/push_spec.rb +233 -233
  316. data/spec/unit/policyfile_services/rm_policy_group_spec.rb +241 -241
  317. data/spec/unit/policyfile_services/rm_policy_spec.rb +266 -266
  318. data/spec/unit/policyfile_services/show_policy_spec.rb +889 -889
  319. data/spec/unit/policyfile_services/undelete_spec.rb +304 -304
  320. data/spec/unit/policyfile_services/update_attributes_spec.rb +217 -217
  321. data/spec/unit/service_exception_inspectors/base_spec.rb +43 -43
  322. data/spec/unit/service_exception_inspectors/http_spec.rb +140 -140
  323. data/spec/unit/shell_out_spec.rb +34 -34
  324. data/tasks/bin/bundle-platform +0 -0
  325. data/tasks/bin/bundle-platform.bat +0 -0
  326. data/tasks/bin/create-override-gemfile +0 -0
  327. data/version_policy.rb +4 -3
  328. data/warning.txt +9 -9
  329. metadata +23 -10
  330. data/lib/chef-dk/skeletons/code_generator/files/default/serverspec_spec_helper.rb +0 -8
  331. data/lib/chef-dk/skeletons/code_generator/templates/default/serverspec_default_spec.rb.erb +0 -9
@@ -1,52 +1,52 @@
1
- driver:
2
- name: vagrant
3
- forward_agent: yes
4
- customize:
5
- cpus: 2
6
- memory: 1024
7
-
8
- provisioner:
9
- name: chef_zero
10
- product_name: <%= ENV["KITCHEN_CHEF_PRODUCT"] %>
11
- product_version: <%= ENV["KITCHEN_CHEF_VERSION"] %>
12
- channel: <%= ENV["KITCHEN_CHEF_CHANNEL"] %>
13
- client_rb:
14
- audit_mode: :enabled
15
- attributes:
16
- chef_acceptance: "true"
17
- use_system_chef: "true"
18
-
19
- platforms:
20
- <% %w(
21
- debian-8
22
- debian-7
23
- debian-6
24
- ubuntu-15.10
25
- ubuntu-14.04
26
- el-7
27
- el-6
28
- el-5
29
- freebsd-10
30
- freebsd-9
31
- fedora-21
32
- ).each do |platform| %>
33
- - name: <%= platform %>
34
- driver:
35
- box: opscode-<%= platform %>
36
- box_url: http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_<%= platform %>_chef-provisionerless.box
37
- <% end %>
38
- # freebsd-8
39
- # ubuntu-12.04
40
- # centos-7
41
- # centos-6
42
-
43
- <% %w(
44
- 2012r2
45
- 2012
46
- 2008r2
47
- ).each do |version| %>
48
- - name: windows-<%= version %>
49
- driver:
50
- box: chef/windows-server-<%= version %>-standard
51
- # URL is atlas
52
- <% end %>
1
+ driver:
2
+ name: vagrant
3
+ forward_agent: yes
4
+ customize:
5
+ cpus: 2
6
+ memory: 1024
7
+
8
+ provisioner:
9
+ name: chef_zero
10
+ product_name: <%= ENV["KITCHEN_CHEF_PRODUCT"] %>
11
+ product_version: <%= ENV["KITCHEN_CHEF_VERSION"] %>
12
+ channel: <%= ENV["KITCHEN_CHEF_CHANNEL"] %>
13
+ client_rb:
14
+ audit_mode: :enabled
15
+ attributes:
16
+ chef_acceptance: "true"
17
+ use_system_chef: "true"
18
+
19
+ platforms:
20
+ <% %w(
21
+ debian-8
22
+ debian-7
23
+ debian-6
24
+ ubuntu-15.10
25
+ ubuntu-14.04
26
+ el-7
27
+ el-6
28
+ el-5
29
+ freebsd-10
30
+ freebsd-9
31
+ fedora-21
32
+ ).each do |platform| %>
33
+ - name: <%= platform %>
34
+ driver:
35
+ box: opscode-<%= platform %>
36
+ box_url: http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_<%= platform %>_chef-provisionerless.box
37
+ <% end %>
38
+ # freebsd-8
39
+ # ubuntu-12.04
40
+ # centos-7
41
+ # centos-6
42
+
43
+ <% %w(
44
+ 2012r2
45
+ 2012
46
+ 2008r2
47
+ ).each do |version| %>
48
+ - name: windows-<%= version %>
49
+ driver:
50
+ box: chef/windows-server-<%= version %>-standard
51
+ # URL is atlas
52
+ <% end %>
@@ -1,51 +1,51 @@
1
- module KitchenAcceptance
2
- class Kitchen < Chef::Resource
3
- resource_name :kitchen
4
-
5
- property :command, String, name_property: true
6
- property :driver, %w(ec2 vagrant), coerce: proc { |v| v.to_s }, default: lazy { ENV["KITCHEN_DRIVER"] || :ec2 }
7
- property :instances, String, default: lazy { ENV["KITCHEN_INSTANCES"] ? ENV["KITCHEN_INSTANCES"] : "" }
8
- property :kitchen_dir, String, default: Chef.node['chef-acceptance']['suite-dir']
9
- property :chef_product, String, default: lazy {
10
- ENV["KITCHEN_CHEF_PRODUCT"] || begin
11
- # Figure out if we're in chefdk or chef
12
- if ::File.exist?(::File.expand_path("../../chef-dk.gemspec", node['chef-acceptance']['suite-dir']))
13
- "chefdk"
14
- else
15
- "chef"
16
- end
17
- end
18
- }
19
- property :chef_channel, String, default: lazy {
20
- ENV["KITCHEN_CHEF_CHANNEL"] ||
21
- # Pick up current if we can't connect to artifactory
22
- (ENV["ARTIFACTORY_USERNAME"] ? "unstable" : "current")
23
- }
24
- property :chef_version, String, default: lazy {
25
- ENV["KITCHEN_CHEF_VERSION"] ||
26
- # If we're running the chef or chefdk projects in jenkins, pick up the project name.
27
- (ENV["PROJECT_NAME"] == chef_product ? ENV["OMNIBUS_BUILD_VERSION"] : nil) ||
28
- "latest"
29
- }
30
- property :artifactory_username, String, default: lazy { ENV["ARTIFACTORY_USERNAME"] ? ENV["ARTIFACTORY_USERNAME"] : "" }
31
- property :artifactory_password, String, default: lazy { ENV["ARTIFACTORY_PASSWORD"] ? ENV["ARTIFACTORY_PASSWORD"] : "" }
32
- property :env, Hash, default: {}
33
- property :kitchen_options, String, default: lazy { ENV["PROJECT_NAME"] ? "-c -l debug" : "-c" }
34
-
35
- action :run do
36
- execute "bundle exec kitchen #{command}#{instances ? " #{instances}" : ""}#{kitchen_options ? " #{kitchen_options}" : ""}" do
37
- cwd kitchen_dir
38
- env({
39
- "KITCHEN_DRIVER" => driver,
40
- "KITCHEN_INSTANCES" => instances,
41
- "KITCHEN_LOCAL_YAML" => ::File.expand_path("../../.kitchen.#{driver}.yml", __FILE__),
42
- "KITCHEN_CHEF_PRODUCT" => chef_product,
43
- "KITCHEN_CHEF_CHANNEL" => chef_channel,
44
- "KITCHEN_CHEF_VERSION" => chef_version,
45
- "ARTIFACTORY_USERNAME" => artifactory_username,
46
- "ARTIFACTORY_PASSWORD" => artifactory_password
47
- }.merge(new_resource.env))
48
- end
49
- end
50
- end
51
- end
1
+ module KitchenAcceptance
2
+ class Kitchen < Chef::Resource
3
+ resource_name :kitchen
4
+
5
+ property :command, String, name_property: true
6
+ property :driver, %w(ec2 vagrant), coerce: proc { |v| v.to_s }, default: lazy { ENV["KITCHEN_DRIVER"] || :ec2 }
7
+ property :instances, String, default: lazy { ENV["KITCHEN_INSTANCES"] ? ENV["KITCHEN_INSTANCES"] : "" }
8
+ property :kitchen_dir, String, default: Chef.node['chef-acceptance']['suite-dir']
9
+ property :chef_product, String, default: lazy {
10
+ ENV["KITCHEN_CHEF_PRODUCT"] || begin
11
+ # Figure out if we're in chefdk or chef
12
+ if ::File.exist?(::File.expand_path("../../chef-dk.gemspec", node['chef-acceptance']['suite-dir']))
13
+ "chefdk"
14
+ else
15
+ "chef"
16
+ end
17
+ end
18
+ }
19
+ property :chef_channel, String, default: lazy {
20
+ ENV["KITCHEN_CHEF_CHANNEL"] ||
21
+ # Pick up current if we can't connect to artifactory
22
+ (ENV["ARTIFACTORY_USERNAME"] ? "unstable" : "current")
23
+ }
24
+ property :chef_version, String, default: lazy {
25
+ ENV["KITCHEN_CHEF_VERSION"] ||
26
+ # If we're running the chef or chefdk projects in jenkins, pick up the project name.
27
+ (ENV["PROJECT_NAME"] == chef_product ? ENV["OMNIBUS_BUILD_VERSION"] : nil) ||
28
+ "latest"
29
+ }
30
+ property :artifactory_username, String, default: lazy { ENV["ARTIFACTORY_USERNAME"] ? ENV["ARTIFACTORY_USERNAME"] : "" }
31
+ property :artifactory_password, String, default: lazy { ENV["ARTIFACTORY_PASSWORD"] ? ENV["ARTIFACTORY_PASSWORD"] : "" }
32
+ property :env, Hash, default: {}
33
+ property :kitchen_options, String, default: lazy { ENV["PROJECT_NAME"] ? "-c -l debug" : "-c" }
34
+
35
+ action :run do
36
+ execute "bundle exec kitchen #{command}#{instances ? " #{instances}" : ""}#{kitchen_options ? " #{kitchen_options}" : ""}" do
37
+ cwd kitchen_dir
38
+ env({
39
+ "KITCHEN_DRIVER" => driver,
40
+ "KITCHEN_INSTANCES" => instances,
41
+ "KITCHEN_LOCAL_YAML" => ::File.expand_path("../../.kitchen.#{driver}.yml", __FILE__),
42
+ "KITCHEN_CHEF_PRODUCT" => chef_product,
43
+ "KITCHEN_CHEF_CHANNEL" => chef_channel,
44
+ "KITCHEN_CHEF_VERSION" => chef_version,
45
+ "ARTIFACTORY_USERNAME" => artifactory_username,
46
+ "ARTIFACTORY_PASSWORD" => artifactory_password
47
+ }.merge(new_resource.env))
48
+ end
49
+ end
50
+ end
51
+ end
@@ -1 +1 @@
1
- name "kitchen_acceptance"
1
+ name "kitchen_acceptance"
@@ -9,3 +9,6 @@ gem "windows_chef_zero"
9
9
  gem "winrm-fs"
10
10
  gem "winrm-elevated"
11
11
  gem "berkshelf"
12
+
13
+ # TODO remove this when we update Chef to use the new api exposed in 3.5.1
14
+ gem "rspec-core", "= 3.4.4"
@@ -10,13 +10,13 @@ GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
12
  addressable (2.4.0)
13
- artifactory (2.3.2)
14
- aws-sdk (2.3.14)
15
- aws-sdk-resources (= 2.3.14)
16
- aws-sdk-core (2.3.14)
13
+ artifactory (2.3.3)
14
+ aws-sdk (2.3.22)
15
+ aws-sdk-resources (= 2.3.22)
16
+ aws-sdk-core (2.3.22)
17
17
  jmespath (~> 1.0)
18
- aws-sdk-resources (2.3.14)
19
- aws-sdk-core (= 2.3.14)
18
+ aws-sdk-resources (2.3.22)
19
+ aws-sdk-core (= 2.3.22)
20
20
  berkshelf (4.3.5)
21
21
  addressable (~> 2.3, >= 2.3.4)
22
22
  berkshelf-api-client (~> 2.0, >= 2.0.2)
@@ -53,21 +53,21 @@ GEM
53
53
  celluloid-io (0.16.2)
54
54
  celluloid (>= 0.16.0)
55
55
  nio4r (>= 1.1.0)
56
- chef-config (12.11.18)
56
+ chef-config (12.12.15)
57
57
  fuzzyurl (~> 0.8.0)
58
58
  mixlib-config (~> 2.0)
59
59
  mixlib-shellout (~> 2.0)
60
60
  cleanroom (1.0.0)
61
61
  coderay (1.1.1)
62
62
  diff-lcs (1.2.5)
63
- docker-api (1.28.0)
63
+ docker-api (1.29.0)
64
64
  excon (>= 0.38.0)
65
65
  json
66
66
  erubis (2.7.0)
67
- excon (0.49.0)
67
+ excon (0.51.0)
68
68
  faraday (0.9.2)
69
69
  multipart-post (>= 1.2, < 3)
70
- ffi (1.9.10)
70
+ ffi (1.9.14)
71
71
  fuzzyurl (0.8.0)
72
72
  gssapi (1.2.0)
73
73
  ffi (>= 1.0.1)
@@ -76,7 +76,7 @@ GEM
76
76
  hashie (3.4.4)
77
77
  hitimes (1.2.4)
78
78
  httpclient (2.7.2)
79
- inspec (0.26.0)
79
+ inspec (0.27.1)
80
80
  hashie (~> 3.4)
81
81
  json (~> 1.8)
82
82
  method_source (~> 0.8)
@@ -86,18 +86,16 @@ GEM
86
86
  rspec-its (~> 1.2)
87
87
  rubyzip (~> 1.1)
88
88
  thor (~> 0.19)
89
- train (~> 0.13)
90
- jmespath (1.2.4)
91
- json_pure (>= 1.8.1)
89
+ train (>= 0.15.1, < 1.0)
90
+ jmespath (1.3.0)
92
91
  json (1.8.3)
93
- json_pure (1.8.3)
94
92
  kitchen-ec2 (1.0.0)
95
93
  aws-sdk (~> 2)
96
94
  excon
97
95
  multi_json
98
96
  retryable (~> 2.0)
99
97
  test-kitchen (~> 1.4, >= 1.4.1)
100
- kitchen-inspec (0.14.0)
98
+ kitchen-inspec (0.15.0)
101
99
  inspec (>= 0.22.0, < 1.0.0)
102
100
  test-kitchen (~> 1.6)
103
101
  kitchen-vagrant (0.20.0)
@@ -108,11 +106,12 @@ GEM
108
106
  multi_json (~> 1.10)
109
107
  method_source (0.8.2)
110
108
  minitar (0.5.4)
111
- mixlib-archive (0.1.0)
109
+ mixlib-archive (0.2.0)
110
+ mixlib-log
112
111
  mixlib-authentication (1.4.1)
113
112
  mixlib-log
114
113
  mixlib-config (2.2.1)
115
- mixlib-install (1.0.13)
114
+ mixlib-install (1.1.0)
116
115
  artifactory
117
116
  mixlib-shellout
118
117
  mixlib-versioning
@@ -124,17 +123,17 @@ GEM
124
123
  multipart-post (2.0.0)
125
124
  net-scp (1.2.1)
126
125
  net-ssh (>= 2.6.5)
127
- net-ssh (3.1.1)
126
+ net-ssh (3.2.0)
128
127
  nio4r (1.2.1)
129
128
  nori (2.6.0)
130
129
  octokit (4.3.0)
131
130
  sawyer (~> 0.7.0, >= 0.5.3)
132
- pry (0.10.3)
131
+ pry (0.10.4)
133
132
  coderay (~> 1.1.0)
134
133
  method_source (~> 0.8.1)
135
134
  slop (~> 3.4)
136
135
  rainbow (2.1.0)
137
- retryable (2.0.3)
136
+ retryable (2.0.4)
138
137
  ridley (4.5.1)
139
138
  addressable
140
139
  buff-config (~> 1.0)
@@ -180,7 +179,7 @@ GEM
180
179
  solve (2.0.3)
181
180
  molinillo (~> 0.4.2)
182
181
  semverse (~> 1.1)
183
- test-kitchen (1.10.0)
182
+ test-kitchen (1.10.2)
184
183
  mixlib-install (~> 1.0, >= 1.0.4)
185
184
  mixlib-shellout (>= 1.2, < 3.0)
186
185
  net-scp (~> 1.1)
@@ -190,7 +189,7 @@ GEM
190
189
  thor (0.19.1)
191
190
  timers (4.0.4)
192
191
  hitimes
193
- train (0.13.1)
192
+ train (0.15.1)
194
193
  docker-api (~> 1.26)
195
194
  json (~> 1.8)
196
195
  mixlib-shellout (~> 2.0)
@@ -214,7 +213,7 @@ GEM
214
213
  winrm-elevated (0.4.0)
215
214
  winrm (~> 1.5)
216
215
  winrm-fs (~> 0.4.2)
217
- winrm-fs (0.4.2)
216
+ winrm-fs (0.4.3)
218
217
  erubis (~> 2.7)
219
218
  logging (>= 1.6.1, < 3.0)
220
219
  rubyzip (~> 1.1)
@@ -229,6 +228,7 @@ DEPENDENCIES
229
228
  kitchen-ec2
230
229
  kitchen-inspec
231
230
  kitchen-vagrant
231
+ rspec-core (= 3.4.4)
232
232
  test-kitchen
233
233
  windows_chef_zero
234
234
  winrm-elevated
@@ -1,132 +1,132 @@
1
- # Acceptance Testing for Chef DK
2
- This folder contains acceptance tests that are required for ChefDK
3
- release readiness.
4
-
5
- ## Getting started
6
- The tests use the _chef-acceptance_ gem as the high level framework.
7
- All the gems needed to run these tests can be installed with Bundler.
8
-
9
- ### Important Note!
10
- Before running chef-acceptance, you *MUST* do the following on your current session:
11
-
12
- ```
13
- export APPBUNDLER_ALLOW_RVM=true
14
- ```
15
-
16
- ## Pre-requisites / One time set up
17
-
18
- ### Set up for local VM (Vagrant)
19
-
20
- If you intend to run the acceptance tests on a local VM, the supported solution is to use Vagrant.
21
- Ensure that Vagrant is installed on the machine that tests will run from, along with a
22
- virtualization driver (E.g.: VirtualBox).
23
-
24
- Set up the KITCHEN_DRIVER environment variable appropriately (value should be "vagrant"). E.g.:
25
- ```
26
- export KITCHEN_DRIVER=vagrant
27
- ```
28
- Add this to your shell profile or startup script as needed.
29
-
30
- ### Set up for cloud VM (EC2)
31
-
32
- If you intend to run the acceptance tests on a cloud VM, the supported solution is to use EC2.
33
-
34
- The steps you will need to do are:
35
-
36
- 1. Add your AWS credentials to the machine - e.g., to the ~/.aws/credentials directory.
37
- - The easiest way to do this is to download the aws command line (`brew install awscli` on OS/X) and run `aws configure`.
38
- 2. Create or import a SSH key to AWS. (If you already have one, you can skip the import/create)
39
- - In the AWS console, click Key Pairs, then Create Key Pair or Import Key Pair.
40
- 3. Copy or move the private key file (USERNAME.pem) to the SSH folder (e.g. `~/.ssh/USERNAME.pem`).
41
- - If you Created a key pair in step 2, download the private key and move it to `~/.ssh`.
42
- - If you Importd a key pair in step 2, just ensure your private key is in `~/.ssh` and has the same name as the key pair (`~/.ssh/USERNAME` or `~/.ssh/USERNAME.pem`).
43
- 4. Set AWS_SSH_KEY_ID to the SSH key name.
44
- - This is **optional** if your AWS SSH key name is your local username.
45
- - You may want to set this in your shell `.profile`.
46
-
47
- ```shell
48
- export AWS_SSH_KEY_ID=name-of-private-key
49
- ```
50
- 5. Set the private key to only be readable by root
51
-
52
- ```shell
53
- chmod 0400 ~/.ssh/USERNAME.pem
54
- ```
55
- 6. Set up the KITCHEN_DRIVER environment variable appropriately (value should be "ec2"). (This is optional, as ec2 is the default.) E.g.:
56
-
57
- ```shell
58
- export KITCHEN_DRIVER=ec2
59
- ```
60
- Add this to your shell profile or startup script as needed.
61
- 7. **Connect to Chef VPN**. The instances you create will not have public IPs!
62
-
63
- ## Setting up and running a test suite
64
- To get started, do a bundle install from the acceptance directory:
65
- ```shell
66
- chef/acceptance$ bundle install --binstubs
67
- ```
68
-
69
- To get some basic info and ensure chef-acceptance can be run, do:
70
- ```shell
71
- chef/acceptance$ bin/chef-acceptance info
72
- ```
73
-
74
- To run a particular test suite, do the following:
75
- ```shell
76
- chef/acceptance$ bin/chef-acceptance test TEST_SUITE
77
- ```
78
-
79
- To restrict which OS's will run, use the KITCHEN_INSTANCES environment variable:
80
-
81
- ```shell
82
- chef/acceptance$ export KITCHEN_INSTANCES=*-ubuntu-1404
83
- chef/acceptance$ bin/chef-acceptance test cookbook-git
84
- ```
85
-
86
- If KITCHEN_INSTANCES is not specified, the default instances are default-ubuntu-1404 and default-windows-windows-2012r2. All selected instances will be run in *parallel* if the driver supports it (ec2 does, vagrant doesn't).
87
-
88
- ## Optional Settings
89
-
90
- In addition to the environment settings above, there are a number of
91
- key values that are available to set for changing the way the acceptance
92
- tests are run.
93
-
94
- ### KITCHEN_CHEF_CHANNEL
95
-
96
- Use this setting to specify which channel we will pull the chef build from.
97
- The default is to use the "current" channel, unless the ARTIFACTORY_USERNAME is set
98
- (which normally happens when running under Jenkins), in which case the default is
99
- changed to "unstable".
100
-
101
- ```shell
102
- export KITCHEN_CHEF_CHANNEL=name-of-channel
103
- ```
104
-
105
-
106
- ### KITCHEN_CHEF_VERSION
107
-
108
- Use this setting to override the version of the Chef client that is installed. The default is to get the latest version in the desired channel.
109
-
110
- ```shell
111
- export KITCHEN_CHEF_VERSION=version-of-chef-client
112
- ```
113
-
114
- ### ARTIFACTORY_USERNAME / ARTIFACTORY_PASSWORD
115
-
116
- If the desired channel to get the Chef client from is "unstable", the following settings need to be exported:
117
-
118
- ```shell
119
- export ARTIFACTORY_USERNAME=username
120
- export ARTIFACTORY_PASSWORD=password
121
- ```
122
-
123
- ## Future Work
124
-
125
- Currently, there is no simple mechanism for chef-acceptance
126
- to build an Omnibus package of the developers local chef
127
- instance and run acceptance tests on it - the only packages
128
- that can be exercised are ones that come from one of the
129
- pipeline channels (unstable, current or stable).
130
-
131
- This is not an issue when adding acceptance tests for pre-existing functionality (as that functionality is presumed
132
- to already be in a build in one of the pipeline channels).
1
+ # Acceptance Testing for Chef DK
2
+ This folder contains acceptance tests that are required for ChefDK
3
+ release readiness.
4
+
5
+ ## Getting started
6
+ The tests use the _chef-acceptance_ gem as the high level framework.
7
+ All the gems needed to run these tests can be installed with Bundler.
8
+
9
+ ### Important Note!
10
+ Before running chef-acceptance, you *MUST* do the following on your current session:
11
+
12
+ ```
13
+ export APPBUNDLER_ALLOW_RVM=true
14
+ ```
15
+
16
+ ## Pre-requisites / One time set up
17
+
18
+ ### Set up for local VM (Vagrant)
19
+
20
+ If you intend to run the acceptance tests on a local VM, the supported solution is to use Vagrant.
21
+ Ensure that Vagrant is installed on the machine that tests will run from, along with a
22
+ virtualization driver (E.g.: VirtualBox).
23
+
24
+ Set up the KITCHEN_DRIVER environment variable appropriately (value should be "vagrant"). E.g.:
25
+ ```
26
+ export KITCHEN_DRIVER=vagrant
27
+ ```
28
+ Add this to your shell profile or startup script as needed.
29
+
30
+ ### Set up for cloud VM (EC2)
31
+
32
+ If you intend to run the acceptance tests on a cloud VM, the supported solution is to use EC2.
33
+
34
+ The steps you will need to do are:
35
+
36
+ 1. Add your AWS credentials to the machine - e.g., to the ~/.aws/credentials directory.
37
+ - The easiest way to do this is to download the aws command line (`brew install awscli` on OS/X) and run `aws configure`.
38
+ 2. Create or import a SSH key to AWS. (If you already have one, you can skip the import/create)
39
+ - In the AWS console, click Key Pairs, then Create Key Pair or Import Key Pair.
40
+ 3. Copy or move the private key file (USERNAME.pem) to the SSH folder (e.g. `~/.ssh/USERNAME.pem`).
41
+ - If you Created a key pair in step 2, download the private key and move it to `~/.ssh`.
42
+ - If you Importd a key pair in step 2, just ensure your private key is in `~/.ssh` and has the same name as the key pair (`~/.ssh/USERNAME` or `~/.ssh/USERNAME.pem`).
43
+ 4. Set AWS_SSH_KEY_ID to the SSH key name.
44
+ - This is **optional** if your AWS SSH key name is your local username.
45
+ - You may want to set this in your shell `.profile`.
46
+
47
+ ```shell
48
+ export AWS_SSH_KEY_ID=name-of-private-key
49
+ ```
50
+ 5. Set the private key to only be readable by root
51
+
52
+ ```shell
53
+ chmod 0400 ~/.ssh/USERNAME.pem
54
+ ```
55
+ 6. Set up the KITCHEN_DRIVER environment variable appropriately (value should be "ec2"). (This is optional, as ec2 is the default.) E.g.:
56
+
57
+ ```shell
58
+ export KITCHEN_DRIVER=ec2
59
+ ```
60
+ Add this to your shell profile or startup script as needed.
61
+ 7. **Connect to Chef VPN**. The instances you create will not have public IPs!
62
+
63
+ ## Setting up and running a test suite
64
+ To get started, do a bundle install from the acceptance directory:
65
+ ```shell
66
+ chef/acceptance$ bundle install --binstubs
67
+ ```
68
+
69
+ To get some basic info and ensure chef-acceptance can be run, do:
70
+ ```shell
71
+ chef/acceptance$ bin/chef-acceptance info
72
+ ```
73
+
74
+ To run a particular test suite, do the following:
75
+ ```shell
76
+ chef/acceptance$ bin/chef-acceptance test TEST_SUITE
77
+ ```
78
+
79
+ To restrict which OS's will run, use the KITCHEN_INSTANCES environment variable:
80
+
81
+ ```shell
82
+ chef/acceptance$ export KITCHEN_INSTANCES=*-ubuntu-1404
83
+ chef/acceptance$ bin/chef-acceptance test cookbook-git
84
+ ```
85
+
86
+ If KITCHEN_INSTANCES is not specified, the default instances are default-ubuntu-1404 and default-windows-windows-2012r2. All selected instances will be run in *parallel* if the driver supports it (ec2 does, vagrant doesn't).
87
+
88
+ ## Optional Settings
89
+
90
+ In addition to the environment settings above, there are a number of
91
+ key values that are available to set for changing the way the acceptance
92
+ tests are run.
93
+
94
+ ### KITCHEN_CHEF_CHANNEL
95
+
96
+ Use this setting to specify which channel we will pull the chef build from.
97
+ The default is to use the "current" channel, unless the ARTIFACTORY_USERNAME is set
98
+ (which normally happens when running under Jenkins), in which case the default is
99
+ changed to "unstable".
100
+
101
+ ```shell
102
+ export KITCHEN_CHEF_CHANNEL=name-of-channel
103
+ ```
104
+
105
+
106
+ ### KITCHEN_CHEF_VERSION
107
+
108
+ Use this setting to override the version of the Chef client that is installed. The default is to get the latest version in the desired channel.
109
+
110
+ ```shell
111
+ export KITCHEN_CHEF_VERSION=version-of-chef-client
112
+ ```
113
+
114
+ ### ARTIFACTORY_USERNAME / ARTIFACTORY_PASSWORD
115
+
116
+ If the desired channel to get the Chef client from is "unstable", the following settings need to be exported:
117
+
118
+ ```shell
119
+ export ARTIFACTORY_USERNAME=username
120
+ export ARTIFACTORY_PASSWORD=password
121
+ ```
122
+
123
+ ## Future Work
124
+
125
+ Currently, there is no simple mechanism for chef-acceptance
126
+ to build an Omnibus package of the developers local chef
127
+ instance and run acceptance tests on it - the only packages
128
+ that can be exercised are ones that come from one of the
129
+ pipeline channels (unstable, current or stable).
130
+
131
+ This is not an issue when adding acceptance tests for pre-existing functionality (as that functionality is presumed
132
+ to already be in a build in one of the pipeline channels).