chef-dk 0.13.21 → 0.14.25

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