chef-dk 0.13.21 → 0.14.25

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 (336) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +186 -186
  3. data/Gemfile +37 -14
  4. data/Gemfile.lock +178 -72
  5. data/LICENSE +201 -201
  6. data/README.md +11 -148
  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 +2 -1
  13. data/acceptance/Gemfile.lock +39 -42
  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/lib/chef-dk.rb +19 -19
  24. data/lib/chef-dk/authenticated_http.rb +40 -40
  25. data/lib/chef-dk/chef_runner.rb +107 -107
  26. data/lib/chef-dk/cli.rb +200 -200
  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/export.rb +157 -157
  36. data/lib/chef-dk/command/gem.rb +47 -47
  37. data/lib/chef-dk/command/generate.rb +120 -120
  38. data/lib/chef-dk/command/generator_commands.rb +83 -80
  39. data/lib/chef-dk/command/generator_commands/app.rb +107 -107
  40. data/lib/chef-dk/command/generator_commands/attribute.rb +37 -37
  41. data/lib/chef-dk/command/generator_commands/base.rb +148 -148
  42. data/lib/chef-dk/command/generator_commands/cookbook.rb +153 -153
  43. data/lib/chef-dk/command/generator_commands/cookbook_code_file.rb +100 -100
  44. data/lib/chef-dk/command/generator_commands/cookbook_file.rb +45 -45
  45. data/lib/chef-dk/command/generator_commands/generator_generator.rb +177 -177
  46. data/lib/chef-dk/command/generator_commands/lwrp.rb +36 -36
  47. data/lib/chef-dk/command/generator_commands/policyfile.rb +127 -127
  48. data/lib/chef-dk/command/generator_commands/recipe.rb +36 -36
  49. data/lib/chef-dk/command/generator_commands/repo.rb +125 -125
  50. data/lib/chef-dk/command/generator_commands/template.rb +46 -46
  51. data/lib/chef-dk/command/install.rb +121 -121
  52. data/lib/chef-dk/command/provision.rb +438 -438
  53. data/lib/chef-dk/command/push.rb +118 -118
  54. data/lib/chef-dk/command/push_archive.rb +126 -126
  55. data/lib/chef-dk/command/shell_init.rb +180 -180
  56. data/lib/chef-dk/command/show_policy.rb +165 -165
  57. data/lib/chef-dk/command/undelete.rb +155 -155
  58. data/lib/chef-dk/command/update.rb +148 -148
  59. data/lib/chef-dk/command/verify.rb +106 -29
  60. data/lib/chef-dk/completions/bash.sh.erb +5 -5
  61. data/lib/chef-dk/completions/chef.fish.erb +10 -10
  62. data/lib/chef-dk/completions/zsh.zsh.erb +21 -21
  63. data/lib/chef-dk/component_test.rb +30 -1
  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/generator.rb +163 -163
  72. data/lib/chef-dk/helpers.rb +159 -159
  73. data/lib/chef-dk/pager.rb +106 -106
  74. data/lib/chef-dk/policyfile/chef_repo_cookbook_source.rb +138 -138
  75. data/lib/chef-dk/policyfile/chef_server_cookbook_source.rb +54 -54
  76. data/lib/chef-dk/policyfile/community_cookbook_source.rb +97 -97
  77. data/lib/chef-dk/policyfile/comparison_base.rb +124 -124
  78. data/lib/chef-dk/policyfile/cookbook_location_specification.rb +154 -154
  79. data/lib/chef-dk/policyfile/cookbook_locks.rb +466 -466
  80. data/lib/chef-dk/policyfile/cookbook_sources.rb +22 -22
  81. data/lib/chef-dk/policyfile/delivery_supermarket_source.rb +90 -90
  82. data/lib/chef-dk/policyfile/differ.rb +266 -266
  83. data/lib/chef-dk/policyfile/dsl.rb +261 -261
  84. data/lib/chef-dk/policyfile/lister.rb +232 -232
  85. data/lib/chef-dk/policyfile/null_cookbook_source.rb +45 -45
  86. data/lib/chef-dk/policyfile/read_cookbook_for_compat_mode_upload.rb +124 -124
  87. data/lib/chef-dk/policyfile/reports/install.rb +70 -70
  88. data/lib/chef-dk/policyfile/reports/table_printer.rb +58 -58
  89. data/lib/chef-dk/policyfile/reports/upload.rb +70 -70
  90. data/lib/chef-dk/policyfile/solution_dependencies.rb +298 -298
  91. data/lib/chef-dk/policyfile/storage_config.rb +100 -100
  92. data/lib/chef-dk/policyfile/undo_record.rb +142 -142
  93. data/lib/chef-dk/policyfile/undo_stack.rb +130 -130
  94. data/lib/chef-dk/policyfile/uploader.rb +213 -213
  95. data/lib/chef-dk/policyfile_compiler.rb +419 -419
  96. data/lib/chef-dk/policyfile_lock.rb +552 -552
  97. data/lib/chef-dk/policyfile_services/clean_policies.rb +95 -95
  98. data/lib/chef-dk/policyfile_services/clean_policy_cookbooks.rb +125 -125
  99. data/lib/chef-dk/policyfile_services/export_repo.rb +421 -421
  100. data/lib/chef-dk/policyfile_services/install.rb +126 -126
  101. data/lib/chef-dk/policyfile_services/push.rb +114 -114
  102. data/lib/chef-dk/policyfile_services/push_archive.rb +204 -204
  103. data/lib/chef-dk/policyfile_services/rm_policy.rb +142 -142
  104. data/lib/chef-dk/policyfile_services/rm_policy_group.rb +86 -86
  105. data/lib/chef-dk/policyfile_services/show_policy.rb +237 -237
  106. data/lib/chef-dk/policyfile_services/undelete.rb +108 -108
  107. data/lib/chef-dk/policyfile_services/update_attributes.rb +104 -104
  108. data/lib/chef-dk/service_exception_inspectors.rb +25 -25
  109. data/lib/chef-dk/service_exception_inspectors/base.rb +40 -40
  110. data/lib/chef-dk/service_exception_inspectors/http.rb +121 -121
  111. data/lib/chef-dk/service_exceptions.rb +143 -143
  112. data/lib/chef-dk/shell_out.rb +36 -36
  113. data/lib/chef-dk/skeletons/code_generator/files/default/Berksfile +3 -3
  114. data/lib/chef-dk/skeletons/code_generator/files/default/chefignore +102 -102
  115. data/lib/chef-dk/skeletons/code_generator/files/default/cookbook_readmes/README-policy.md +9 -9
  116. data/lib/chef-dk/skeletons/code_generator/files/default/cookbook_readmes/README.md +54 -54
  117. data/lib/chef-dk/skeletons/code_generator/files/default/gitignore +16 -16
  118. data/lib/chef-dk/skeletons/code_generator/files/default/repo/README.md +28 -28
  119. data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/README.md +27 -27
  120. data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/attributes/default.rb +7 -7
  121. data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/metadata.rb +3 -3
  122. data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/recipes/default.rb +8 -8
  123. data/lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/README.md +58 -58
  124. data/lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/example/example_item.json +3 -3
  125. data/lib/chef-dk/skeletons/code_generator/files/default/repo/dot-chef-repo.txt +6 -6
  126. data/lib/chef-dk/skeletons/code_generator/files/default/repo/environments/README.md +9 -9
  127. data/lib/chef-dk/skeletons/code_generator/files/default/repo/environments/example.json +12 -12
  128. data/lib/chef-dk/skeletons/code_generator/files/default/repo/policies/README.md +24 -24
  129. data/lib/chef-dk/skeletons/code_generator/files/default/repo/roles/README.md +9 -9
  130. data/lib/chef-dk/skeletons/code_generator/files/default/repo/roles/example.json +12 -12
  131. data/lib/chef-dk/skeletons/code_generator/files/default/serverspec_spec_helper.rb +8 -8
  132. data/lib/chef-dk/skeletons/code_generator/files/default/spec_helper.rb +2 -2
  133. data/lib/chef-dk/skeletons/code_generator/files/default/spec_helper_policyfile.rb +2 -2
  134. data/lib/chef-dk/skeletons/code_generator/metadata.rb +8 -8
  135. data/lib/chef-dk/skeletons/code_generator/recipes/app.rb +97 -97
  136. data/lib/chef-dk/skeletons/code_generator/recipes/attribute.rb +12 -12
  137. data/lib/chef-dk/skeletons/code_generator/recipes/cookbook.rb +117 -117
  138. data/lib/chef-dk/skeletons/code_generator/recipes/cookbook_file.rb +24 -24
  139. data/lib/chef-dk/skeletons/code_generator/recipes/lwrp.rb +23 -23
  140. data/lib/chef-dk/skeletons/code_generator/recipes/policyfile.rb +8 -8
  141. data/lib/chef-dk/skeletons/code_generator/recipes/recipe.rb +27 -27
  142. data/lib/chef-dk/skeletons/code_generator/recipes/repo.rb +67 -67
  143. data/lib/chef-dk/skeletons/code_generator/recipes/template.rb +32 -32
  144. data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.all_rights.erb +3 -3
  145. data/lib/chef-dk/skeletons/code_generator/templates/default/{LICENSE.apache2.erb → LICENSE.apachev2.erb} +201 -201
  146. data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.gplv2.erb +339 -339
  147. data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.gplv3.erb +674 -674
  148. data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.mit.erb +21 -21
  149. data/lib/chef-dk/skeletons/code_generator/templates/default/Policyfile.rb.erb +25 -25
  150. data/lib/chef-dk/skeletons/code_generator/templates/default/README.md.erb +4 -4
  151. data/lib/chef-dk/skeletons/code_generator/templates/default/kitchen.yml.erb +21 -21
  152. data/lib/chef-dk/skeletons/code_generator/templates/default/kitchen_policyfile.yml.erb +32 -32
  153. data/lib/chef-dk/skeletons/code_generator/templates/default/metadata.rb.erb +7 -7
  154. data/lib/chef-dk/skeletons/code_generator/templates/default/recipe.rb.erb +5 -5
  155. data/lib/chef-dk/skeletons/code_generator/templates/default/recipe_spec.rb.erb +20 -20
  156. data/lib/chef-dk/skeletons/code_generator/templates/default/repo/gitignore.erb +11 -11
  157. data/lib/chef-dk/skeletons/code_generator/templates/default/serverspec_default_spec.rb.erb +9 -9
  158. data/lib/chef-dk/ui.rb +58 -58
  159. data/lib/chef-dk/version.rb +1 -1
  160. data/lib/kitchen/provisioner/policyfile_zero.rb +195 -195
  161. data/omnibus_overrides.rb +19 -11
  162. data/spec/shared/a_file_generator.rb +125 -125
  163. data/spec/shared/a_generated_file.rb +12 -12
  164. data/spec/shared/command_with_ui_object.rb +11 -11
  165. data/spec/shared/custom_generator_cookbook.rb +130 -130
  166. data/spec/shared/fixture_cookbook_checksums.rb +47 -47
  167. data/spec/shared/setup_git_cookbooks.rb +53 -53
  168. data/spec/spec_helper.rb +51 -51
  169. data/spec/test_helpers.rb +84 -84
  170. data/spec/unit/chef_runner_spec.rb +139 -139
  171. data/spec/unit/cli_spec.rb +357 -357
  172. data/spec/unit/command/base_spec.rb +173 -169
  173. data/spec/unit/command/clean_policy_cookbooks_spec.rb +181 -181
  174. data/spec/unit/command/clean_policy_revisions_spec.rb +181 -181
  175. data/spec/unit/command/delete_policy_group_spec.rb +207 -207
  176. data/spec/unit/command/delete_policy_spec.rb +207 -207
  177. data/spec/unit/command/diff_spec.rb +312 -312
  178. data/spec/unit/command/env_spec.rb +52 -52
  179. data/spec/unit/command/exec_spec.rb +179 -179
  180. data/spec/unit/command/export_spec.rb +200 -200
  181. data/spec/unit/command/generate_spec.rb +142 -142
  182. data/spec/unit/command/generator_commands/app_spec.rb +169 -169
  183. data/spec/unit/command/generator_commands/attribute_spec.rb +32 -32
  184. data/spec/unit/command/generator_commands/base_spec.rb +136 -136
  185. data/spec/unit/command/generator_commands/cookbook_file_spec.rb +32 -32
  186. data/spec/unit/command/generator_commands/cookbook_spec.rb +450 -450
  187. data/spec/unit/command/generator_commands/generator_generator_spec.rb +229 -229
  188. data/spec/unit/command/generator_commands/lwrp_spec.rb +32 -32
  189. data/spec/unit/command/generator_commands/policyfile_spec.rb +225 -225
  190. data/spec/unit/command/generator_commands/recipe_spec.rb +34 -34
  191. data/spec/unit/command/generator_commands/repo_spec.rb +374 -367
  192. data/spec/unit/command/generator_commands/template_spec.rb +32 -32
  193. data/spec/unit/command/install_spec.rb +179 -179
  194. data/spec/unit/command/provision_spec.rb +592 -592
  195. data/spec/unit/command/push_archive_spec.rb +153 -153
  196. data/spec/unit/command/push_spec.rb +199 -199
  197. data/spec/unit/command/shell_init_spec.rb +329 -329
  198. data/spec/unit/command/show_policy_spec.rb +235 -235
  199. data/spec/unit/command/undelete_spec.rb +246 -246
  200. data/spec/unit/command/update_spec.rb +275 -275
  201. data/spec/unit/command/verify_spec.rb +15 -6
  202. data/spec/unit/commands_map_spec.rb +57 -57
  203. data/spec/unit/component_test_spec.rb +128 -126
  204. data/spec/unit/configurable_spec.rb +41 -41
  205. data/spec/unit/cookbook_metadata_spec.rb +98 -98
  206. data/spec/unit/cookbook_profiler/git_spec.rb +176 -176
  207. data/spec/unit/cookbook_profiler/identifiers_spec.rb +83 -83
  208. data/spec/unit/fixtures/chef-runner-cookbooks/test_cookbook/recipes/recipe_one.rb +9 -9
  209. data/spec/unit/fixtures/chef-runner-cookbooks/test_cookbook/recipes/recipe_two.rb +9 -9
  210. data/spec/unit/fixtures/command/cli_test_command.rb +26 -26
  211. data/spec/unit/fixtures/command/explicit_path_example.rb +7 -7
  212. data/spec/unit/fixtures/configurable/test_config_loader.rb +5 -5
  213. data/spec/unit/fixtures/configurable/test_configurable.rb +10 -10
  214. data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/.kitchen.yml +16 -16
  215. data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/Berksfile +3 -3
  216. data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/README.md +4 -4
  217. data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/chefignore +96 -96
  218. data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb +8 -8
  219. data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb +8 -8
  220. data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/.kitchen.yml +16 -16
  221. data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/Berksfile +3 -3
  222. data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/README.md +4 -4
  223. data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/chefignore +96 -96
  224. data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/metadata.rb +8 -8
  225. data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/recipes/default.rb +8 -8
  226. data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/.kitchen.yml +16 -16
  227. data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/Berksfile +3 -3
  228. data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/README.md +4 -4
  229. data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/chefignore +96 -96
  230. data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/metadata.rb +8 -8
  231. data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/recipes/default.rb +8 -8
  232. data/spec/unit/fixtures/cookbooks_api/pruned_small_universe.json +1321 -1321
  233. data/spec/unit/fixtures/cookbooks_api/small_universe.json +2987 -2987
  234. data/spec/unit/fixtures/cookbooks_api/universe.json +1 -1
  235. data/spec/unit/fixtures/cookbooks_api/update_fixtures.rb +36 -36
  236. data/spec/unit/fixtures/dev_cookbooks/README.md +16 -16
  237. data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/berkshelf/integration_test +2 -2
  238. data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/berkshelf/verify_me +5 -5
  239. data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/chef/verify_me +3 -3
  240. data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/test-kitchen/verify_me +2 -2
  241. data/spec/unit/fixtures/example_cookbook/.gitignore +17 -17
  242. data/spec/unit/fixtures/example_cookbook/.kitchen.yml +16 -16
  243. data/spec/unit/fixtures/example_cookbook/Berksfile +3 -3
  244. data/spec/unit/fixtures/example_cookbook/README.md +4 -4
  245. data/spec/unit/fixtures/example_cookbook/chefignore +96 -96
  246. data/spec/unit/fixtures/example_cookbook/metadata.rb +8 -8
  247. data/spec/unit/fixtures/example_cookbook/recipes/default.rb +8 -8
  248. data/spec/unit/fixtures/example_cookbook_metadata_json_only/.gitignore +17 -17
  249. data/spec/unit/fixtures/example_cookbook_metadata_json_only/.kitchen.yml +16 -16
  250. data/spec/unit/fixtures/example_cookbook_metadata_json_only/Berksfile +3 -3
  251. data/spec/unit/fixtures/example_cookbook_metadata_json_only/README.md +4 -4
  252. data/spec/unit/fixtures/example_cookbook_metadata_json_only/chefignore +96 -96
  253. data/spec/unit/fixtures/example_cookbook_metadata_json_only/metadata.json +5 -5
  254. data/spec/unit/fixtures/example_cookbook_metadata_json_only/recipes/default.rb +8 -8
  255. data/spec/unit/fixtures/example_cookbook_no_metadata/.gitignore +17 -17
  256. data/spec/unit/fixtures/example_cookbook_no_metadata/.kitchen.yml +16 -16
  257. data/spec/unit/fixtures/example_cookbook_no_metadata/Berksfile +3 -3
  258. data/spec/unit/fixtures/example_cookbook_no_metadata/README.md +4 -4
  259. data/spec/unit/fixtures/example_cookbook_no_metadata/chefignore +96 -96
  260. data/spec/unit/fixtures/example_cookbook_no_metadata/recipes/default.rb +8 -8
  261. data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/README.md +4 -4
  262. data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/chefignore +96 -96
  263. data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/metadata.rb +8 -8
  264. data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/recipes/default.rb +8 -8
  265. data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/Berksfile +3 -3
  266. data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/README.md +4 -4
  267. data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/chefignore +96 -96
  268. data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/metadata.rb +9 -9
  269. data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/recipes/default.rb +8 -8
  270. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/.kitchen.yml +16 -16
  271. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/Berksfile +3 -3
  272. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/README.md +4 -4
  273. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/chefignore +96 -96
  274. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/metadata.rb +8 -8
  275. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/recipes/default.rb +8 -8
  276. data/spec/unit/fixtures/local_path_cookbooks/metadata-missing/README.md +2 -2
  277. data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/.kitchen.yml +16 -16
  278. data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/README.md +4 -4
  279. data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb +8 -8
  280. data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb +8 -8
  281. data/spec/unit/generator_spec.rb +119 -120
  282. data/spec/unit/helpers_spec.rb +92 -92
  283. data/spec/unit/pager_spec.rb +119 -119
  284. data/spec/unit/policyfile/chef_repo_cookbook_source_spec.rb +93 -93
  285. data/spec/unit/policyfile/chef_server_cookbook_source_spec.rb +34 -34
  286. data/spec/unit/policyfile/community_cookbook_source_spec.rb +84 -84
  287. data/spec/unit/policyfile/comparison_base_spec.rb +343 -343
  288. data/spec/unit/policyfile/cookbook_location_specification_spec.rb +277 -277
  289. data/spec/unit/policyfile/cookbook_locks_spec.rb +529 -529
  290. data/spec/unit/policyfile/delivery_supermarket_source_spec.rb +130 -130
  291. data/spec/unit/policyfile/differ_spec.rb +687 -687
  292. data/spec/unit/policyfile/lister_spec.rb +272 -272
  293. data/spec/unit/policyfile/null_cookbook_source_spec.rb +35 -35
  294. data/spec/unit/policyfile/read_cookbook_for_compat_mode_upload_spec.rb +92 -92
  295. data/spec/unit/policyfile/reports/install_spec.rb +115 -115
  296. data/spec/unit/policyfile/reports/upload_spec.rb +96 -96
  297. data/spec/unit/policyfile/solution_dependencies_spec.rb +145 -145
  298. data/spec/unit/policyfile/storage_config_spec.rb +172 -172
  299. data/spec/unit/policyfile/undo_record_spec.rb +260 -260
  300. data/spec/unit/policyfile/undo_stack_spec.rb +266 -266
  301. data/spec/unit/policyfile/uploader_spec.rb +410 -410
  302. data/spec/unit/policyfile_demands_spec.rb +1203 -1203
  303. data/spec/unit/policyfile_evaluation_spec.rb +642 -642
  304. data/spec/unit/policyfile_lock_build_spec.rb +1056 -1056
  305. data/spec/unit/policyfile_lock_install_spec.rb +138 -138
  306. data/spec/unit/policyfile_lock_serialization_spec.rb +425 -425
  307. data/spec/unit/policyfile_lock_validation_spec.rb +611 -611
  308. data/spec/unit/policyfile_services/clean_policies_spec.rb +236 -236
  309. data/spec/unit/policyfile_services/clean_policy_cookbooks_spec.rb +275 -275
  310. data/spec/unit/policyfile_services/export_repo_spec.rb +481 -481
  311. data/spec/unit/policyfile_services/install_spec.rb +211 -211
  312. data/spec/unit/policyfile_services/push_archive_spec.rb +378 -378
  313. data/spec/unit/policyfile_services/push_spec.rb +233 -233
  314. data/spec/unit/policyfile_services/rm_policy_group_spec.rb +241 -241
  315. data/spec/unit/policyfile_services/rm_policy_spec.rb +266 -266
  316. data/spec/unit/policyfile_services/show_policy_spec.rb +889 -889
  317. data/spec/unit/policyfile_services/undelete_spec.rb +304 -304
  318. data/spec/unit/policyfile_services/update_attributes_spec.rb +217 -217
  319. data/spec/unit/service_exception_inspectors/base_spec.rb +43 -43
  320. data/spec/unit/service_exception_inspectors/http_spec.rb +140 -140
  321. data/spec/unit/shell_out_spec.rb +34 -34
  322. data/spec/unit/tasks/helpers_spec.rb +75 -0
  323. data/tasks/bin/bundle-platform +0 -0
  324. data/tasks/bin/bundle-platform.bat +0 -0
  325. data/tasks/bin/create-override-gemfile +110 -0
  326. data/tasks/bundle.rb +27 -11
  327. data/tasks/bundle_util.rb +6 -5
  328. data/tasks/dependencies.rb +97 -122
  329. data/tasks/gemfile_util.rb +357 -66
  330. data/tasks/helpers.rb +47 -0
  331. data/tasks/version.rb +1 -5
  332. data/version_policy.rb +66 -41
  333. data/warning.txt +9 -9
  334. metadata +7 -5
  335. data/Gemfile.windows +0 -34
  336. data/Gemfile.windows.lock +0 -936
@@ -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"
data/acceptance/Gemfile CHANGED
@@ -2,9 +2,10 @@ source "https://rubygems.org"
2
2
 
3
3
  gem "chef-acceptance", github: "chef/chef-acceptance"
4
4
  gem "test-kitchen"
5
- gem "kitchen-ec2", github: "test-kitchen/kitchen-ec2", branch: "jk/image-search-only"
5
+ gem "kitchen-ec2"
6
6
  gem "kitchen-inspec"
7
7
  gem "kitchen-vagrant"
8
8
  gem "windows_chef_zero"
9
9
  gem "winrm-fs"
10
+ gem "winrm-elevated"
10
11
  gem "berkshelf"
@@ -1,36 +1,23 @@
1
1
  GIT
2
2
  remote: git://github.com/chef/chef-acceptance.git
3
- revision: 49458ec493dbd12588680eea9f2f9beb76463d09
3
+ revision: 4abda84e2fadd0452b77a8a88d4fd534843ced55
4
4
  specs:
5
5
  chef-acceptance (0.2.0)
6
6
  mixlib-shellout (~> 2.0)
7
7
  thor (~> 0.19)
8
8
 
9
- GIT
10
- remote: git://github.com/test-kitchen/kitchen-ec2.git
11
- revision: 61458c354d71a4156263e7f8b33e51c6edcb5aa6
12
- branch: jk/image-search-only
13
- specs:
14
- kitchen-ec2 (1.0.0.dev.0)
15
- aws-sdk (~> 2)
16
- excon
17
- multi_json
18
- retryable (~> 2.0)
19
- test-kitchen (~> 1.4, >= 1.4.1)
20
- ubuntu_ami (~> 0.4.1)
21
-
22
9
  GEM
23
10
  remote: https://rubygems.org/
24
11
  specs:
25
12
  addressable (2.4.0)
26
13
  artifactory (2.3.2)
27
- aws-sdk (2.2.34)
28
- aws-sdk-resources (= 2.2.34)
29
- aws-sdk-core (2.2.34)
14
+ aws-sdk (2.3.4)
15
+ aws-sdk-resources (= 2.3.4)
16
+ aws-sdk-core (2.3.4)
30
17
  jmespath (~> 1.0)
31
- aws-sdk-resources (2.2.34)
32
- aws-sdk-core (= 2.2.34)
33
- berkshelf (4.3.2)
18
+ aws-sdk-resources (2.3.4)
19
+ aws-sdk-core (= 2.3.4)
20
+ berkshelf (4.3.3)
34
21
  addressable (~> 2.3, >= 2.3.4)
35
22
  berkshelf-api-client (~> 2.0, >= 2.0.2)
36
23
  buff-config (~> 1.0)
@@ -65,7 +52,7 @@ GEM
65
52
  celluloid-io (0.16.2)
66
53
  celluloid (>= 0.16.0)
67
54
  nio4r (>= 1.1.0)
68
- chef-config (12.9.38)
55
+ chef-config (12.10.24)
69
56
  fuzzyurl (~> 0.8.0)
70
57
  mixlib-config (~> 2.0)
71
58
  mixlib-shellout (~> 2.0)
@@ -85,16 +72,17 @@ GEM
85
72
  ffi (>= 1.0.1)
86
73
  gyoku (1.3.1)
87
74
  builder (>= 2.1.2)
88
- hashie (3.4.3)
89
- hitimes (1.2.3)
90
- httpclient (2.7.1)
91
- inspec (0.18.0)
75
+ hashie (3.4.4)
76
+ hitimes (1.2.4)
77
+ httpclient (2.7.2)
78
+ inspec (0.22.0)
79
+ hashie (~> 3.4)
92
80
  json (~> 1.8)
93
81
  method_source (~> 0.8)
94
82
  pry (~> 0)
95
- r-train (~> 0.10.4)
83
+ r-train (~> 0.12)
96
84
  rainbow (~> 2)
97
- rspec (~> 3.3)
85
+ rspec (~> 3)
98
86
  rspec-its (~> 1.2)
99
87
  rubyzip (~> 1.1)
100
88
  thor (~> 0.19)
@@ -102,8 +90,14 @@ GEM
102
90
  json_pure (>= 1.8.1)
103
91
  json (1.8.3)
104
92
  json_pure (1.8.3)
105
- kitchen-inspec (0.12.5)
106
- inspec (>= 0.14.1, < 1.0.0)
93
+ kitchen-ec2 (1.0.0)
94
+ aws-sdk (~> 2)
95
+ excon
96
+ multi_json
97
+ retryable (~> 2.0)
98
+ test-kitchen (~> 1.4, >= 1.4.1)
99
+ kitchen-inspec (0.13.0)
100
+ inspec (>= 0.20.0, < 1.0.0)
107
101
  test-kitchen (~> 1.6)
108
102
  kitchen-vagrant (0.20.0)
109
103
  test-kitchen (~> 1.4)
@@ -119,15 +113,15 @@ GEM
119
113
  rspec-expectations (~> 3.2)
120
114
  rspec-mocks (~> 3.2)
121
115
  mixlib-config (2.2.1)
122
- mixlib-install (1.0.6)
123
- artifactory (>= 2.3.0)
124
- mixlib-shellout (>= 2.2.6)
125
- mixlib-versioning (>= 1.1.0)
116
+ mixlib-install (1.0.11)
117
+ artifactory
118
+ mixlib-shellout
119
+ mixlib-versioning
126
120
  mixlib-log (1.6.0)
127
121
  mixlib-shellout (2.2.6)
128
122
  mixlib-versioning (1.1.0)
129
- molinillo (0.4.4)
130
- multi_json (1.11.2)
123
+ molinillo (0.4.5)
124
+ multi_json (1.12.0)
131
125
  multipart-post (2.0.0)
132
126
  net-scp (1.2.1)
133
127
  net-ssh (>= 2.6.5)
@@ -140,17 +134,17 @@ GEM
140
134
  coderay (~> 1.1.0)
141
135
  method_source (~> 0.8.1)
142
136
  slop (~> 3.4)
143
- r-train (0.10.4)
137
+ r-train (0.12.0)
144
138
  docker-api (~> 1.26.2)
145
139
  json (~> 1.8)
146
- mixlib-shellout (~> 2.1)
140
+ mixlib-shellout (~> 2.0)
147
141
  net-scp (~> 1.2)
148
142
  net-ssh (>= 2.9, < 4.0)
149
143
  winrm (~> 1.6)
150
144
  winrm-fs (~> 0.3)
151
145
  rainbow (2.1.0)
152
146
  retryable (2.0.3)
153
- ridley (4.5.0)
147
+ ridley (4.5.1)
154
148
  addressable
155
149
  buff-config (~> 1.0)
156
150
  buff-extensions (~> 1.0)
@@ -195,7 +189,7 @@ GEM
195
189
  solve (2.0.3)
196
190
  molinillo (~> 0.4.2)
197
191
  semverse (~> 1.1)
198
- test-kitchen (1.7.3)
192
+ test-kitchen (1.8.0)
199
193
  mixlib-install (~> 1.0, >= 1.0.4)
200
194
  mixlib-shellout (>= 1.2, < 3.0)
201
195
  net-scp (~> 1.1)
@@ -205,13 +199,12 @@ GEM
205
199
  thor (0.19.1)
206
200
  timers (4.0.4)
207
201
  hitimes
208
- ubuntu_ami (0.4.1)
209
202
  varia_model (0.4.1)
210
203
  buff-extensions (~> 1.0)
211
204
  hashie (>= 2.0.2, < 4.0.0)
212
205
  windows_chef_zero (2.0.0)
213
206
  test-kitchen (>= 1.2.1)
214
- winrm (1.7.3)
207
+ winrm (1.8.1)
215
208
  builder (>= 2.1.2)
216
209
  gssapi (~> 1.2)
217
210
  gyoku (~> 1.0)
@@ -219,6 +212,9 @@ GEM
219
212
  logging (>= 1.6.1, < 3.0)
220
213
  nori (~> 2.0)
221
214
  rubyntlm (~> 0.6.0)
215
+ winrm-elevated (0.4.0)
216
+ winrm (~> 1.5)
217
+ winrm-fs (~> 0.4.2)
222
218
  winrm-fs (0.4.2)
223
219
  erubis (~> 2.7)
224
220
  logging (>= 1.6.1, < 3.0)
@@ -231,11 +227,12 @@ PLATFORMS
231
227
  DEPENDENCIES
232
228
  berkshelf
233
229
  chef-acceptance!
234
- kitchen-ec2!
230
+ kitchen-ec2
235
231
  kitchen-inspec
236
232
  kitchen-vagrant
237
233
  test-kitchen
238
234
  windows_chef_zero
235
+ winrm-elevated
239
236
  winrm-fs
240
237
 
241
238
  BUNDLED WITH
data/acceptance/README.md CHANGED
@@ -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).