chef-dk 0.14.25 → 0.15.9
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.
- checksums.yaml +4 -4
- data/Gemfile +15 -12
- data/Gemfile.lock +56 -82
- data/LICENSE +201 -201
- data/acceptance/.shared/kitchen_acceptance/.kitchen.digitalocean.yml +27 -27
- data/acceptance/.shared/kitchen_acceptance/.kitchen.ec2.yml +288 -288
- data/acceptance/.shared/kitchen_acceptance/.kitchen.vagrant.yml +52 -52
- data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +51 -51
- data/acceptance/.shared/kitchen_acceptance/metadata.rb +1 -1
- data/acceptance/Gemfile.lock +18 -21
- data/acceptance/README.md +132 -132
- data/acceptance/trivial/.acceptance/acceptance-cookbook/.gitignore +2 -2
- data/acceptance/trivial/.acceptance/acceptance-cookbook/metadata.rb +2 -2
- data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -1
- data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -1
- data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -1
- data/acceptance/trivial/.kitchen.yml +7 -7
- data/acceptance/trivial/test/integration/chefdk-current-install/inspec/chef_client_spec.rb +5 -5
- data/bin/chef +25 -25
- data/chef-dk.gemspec +1 -0
- data/lib/chef-dk.rb +19 -19
- data/lib/chef-dk/authenticated_http.rb +40 -40
- data/lib/chef-dk/chef_runner.rb +1 -1
- data/lib/chef-dk/cli.rb +2 -2
- data/lib/chef-dk/command/base.rb +79 -79
- data/lib/chef-dk/command/clean_policy_cookbooks.rb +116 -116
- data/lib/chef-dk/command/clean_policy_revisions.rb +113 -113
- data/lib/chef-dk/command/delete_policy.rb +122 -122
- data/lib/chef-dk/command/delete_policy_group.rb +122 -122
- data/lib/chef-dk/command/diff.rb +316 -316
- data/lib/chef-dk/command/env.rb +90 -90
- data/lib/chef-dk/command/exec.rb +45 -45
- data/lib/chef-dk/command/export.rb +2 -2
- data/lib/chef-dk/command/gem.rb +47 -47
- data/lib/chef-dk/command/generate.rb +2 -0
- data/lib/chef-dk/command/generator_commands/app.rb +107 -107
- data/lib/chef-dk/command/generator_commands/attribute.rb +37 -37
- data/lib/chef-dk/command/generator_commands/base.rb +148 -148
- data/lib/chef-dk/command/generator_commands/build_cookbook.rb +110 -0
- data/lib/chef-dk/command/generator_commands/cookbook.rb +21 -0
- data/lib/chef-dk/command/generator_commands/cookbook_code_file.rb +100 -100
- data/lib/chef-dk/command/generator_commands/cookbook_file.rb +45 -45
- data/lib/chef-dk/command/generator_commands/generator_generator.rb +177 -177
- data/lib/chef-dk/command/generator_commands/lwrp.rb +36 -36
- data/lib/chef-dk/command/generator_commands/policyfile.rb +127 -127
- data/lib/chef-dk/command/generator_commands/recipe.rb +36 -36
- data/lib/chef-dk/command/generator_commands/repo.rb +125 -125
- data/lib/chef-dk/command/generator_commands/template.rb +46 -46
- data/lib/chef-dk/command/install.rb +121 -121
- data/lib/chef-dk/command/provision.rb +438 -438
- data/lib/chef-dk/command/push.rb +118 -118
- data/lib/chef-dk/command/push_archive.rb +126 -126
- data/lib/chef-dk/command/shell_init.rb +180 -180
- data/lib/chef-dk/command/show_policy.rb +165 -165
- data/lib/chef-dk/command/undelete.rb +155 -155
- data/lib/chef-dk/command/update.rb +148 -148
- data/lib/chef-dk/command/verify.rb +9 -11
- data/lib/chef-dk/completions/bash.sh.erb +5 -5
- data/lib/chef-dk/completions/chef.fish.erb +10 -10
- data/lib/chef-dk/completions/zsh.zsh.erb +21 -21
- data/lib/chef-dk/configurable.rb +69 -69
- data/lib/chef-dk/cookbook_metadata.rb +45 -45
- data/lib/chef-dk/cookbook_omnifetch.rb +32 -32
- data/lib/chef-dk/cookbook_profiler/git.rb +151 -151
- data/lib/chef-dk/cookbook_profiler/identifiers.rb +72 -72
- data/lib/chef-dk/cookbook_profiler/null_scm.rb +32 -32
- data/lib/chef-dk/exceptions.rb +129 -129
- data/lib/chef-dk/helpers.rb +24 -17
- data/lib/chef-dk/pager.rb +106 -106
- data/lib/chef-dk/policyfile/chef_repo_cookbook_source.rb +138 -138
- data/lib/chef-dk/policyfile/chef_server_cookbook_source.rb +54 -54
- data/lib/chef-dk/policyfile/community_cookbook_source.rb +97 -97
- data/lib/chef-dk/policyfile/comparison_base.rb +124 -124
- data/lib/chef-dk/policyfile/cookbook_location_specification.rb +154 -154
- data/lib/chef-dk/policyfile/cookbook_locks.rb +466 -466
- data/lib/chef-dk/policyfile/cookbook_sources.rb +22 -22
- data/lib/chef-dk/policyfile/delivery_supermarket_source.rb +90 -90
- data/lib/chef-dk/policyfile/differ.rb +266 -266
- data/lib/chef-dk/policyfile/dsl.rb +261 -261
- data/lib/chef-dk/policyfile/lister.rb +232 -232
- data/lib/chef-dk/policyfile/null_cookbook_source.rb +45 -45
- data/lib/chef-dk/policyfile/read_cookbook_for_compat_mode_upload.rb +124 -124
- data/lib/chef-dk/policyfile/reports/install.rb +70 -70
- data/lib/chef-dk/policyfile/reports/table_printer.rb +58 -58
- data/lib/chef-dk/policyfile/reports/upload.rb +70 -70
- data/lib/chef-dk/policyfile/solution_dependencies.rb +298 -298
- data/lib/chef-dk/policyfile/storage_config.rb +100 -100
- data/lib/chef-dk/policyfile/undo_record.rb +142 -142
- data/lib/chef-dk/policyfile/undo_stack.rb +130 -130
- data/lib/chef-dk/policyfile/uploader.rb +213 -213
- data/lib/chef-dk/policyfile_compiler.rb +419 -419
- data/lib/chef-dk/policyfile_lock.rb +552 -552
- data/lib/chef-dk/policyfile_services/clean_policies.rb +95 -95
- data/lib/chef-dk/policyfile_services/clean_policy_cookbooks.rb +125 -125
- data/lib/chef-dk/policyfile_services/export_repo.rb +421 -421
- data/lib/chef-dk/policyfile_services/install.rb +126 -126
- data/lib/chef-dk/policyfile_services/push_archive.rb +204 -204
- data/lib/chef-dk/policyfile_services/rm_policy.rb +142 -142
- data/lib/chef-dk/policyfile_services/rm_policy_group.rb +86 -86
- data/lib/chef-dk/policyfile_services/show_policy.rb +237 -237
- data/lib/chef-dk/policyfile_services/undelete.rb +108 -108
- data/lib/chef-dk/policyfile_services/update_attributes.rb +104 -104
- data/lib/chef-dk/service_exception_inspectors.rb +25 -25
- data/lib/chef-dk/service_exception_inspectors/base.rb +40 -40
- data/lib/chef-dk/service_exception_inspectors/http.rb +121 -121
- data/lib/chef-dk/service_exceptions.rb +143 -143
- data/lib/chef-dk/shell_out.rb +36 -36
- data/lib/chef-dk/skeletons/code_generator/files/default/Berksfile +3 -3
- data/lib/chef-dk/skeletons/code_generator/files/default/build-cookbook/.kitchen.yml +21 -0
- data/lib/chef-dk/skeletons/code_generator/files/default/build-cookbook/README.md +146 -0
- data/lib/chef-dk/skeletons/code_generator/files/default/build-cookbook/test-fixture-recipe.rb +7 -0
- data/lib/chef-dk/skeletons/code_generator/files/default/chefignore +102 -102
- data/lib/chef-dk/skeletons/code_generator/files/default/cookbook_readmes/README-policy.md +9 -9
- data/lib/chef-dk/skeletons/code_generator/files/default/cookbook_readmes/README.md +54 -54
- data/lib/chef-dk/skeletons/code_generator/files/default/delivery-config.json +10 -0
- data/lib/chef-dk/skeletons/code_generator/files/default/gitignore +16 -16
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/README.md +28 -28
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/README.md +27 -27
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/attributes/default.rb +7 -7
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/metadata.rb +3 -3
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/recipes/default.rb +8 -8
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/README.md +58 -58
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/example/example_item.json +3 -3
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/dot-chef-repo.txt +6 -6
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/environments/README.md +9 -9
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/environments/example.json +12 -12
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/policies/README.md +24 -24
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/roles/README.md +9 -9
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/roles/example.json +12 -12
- data/lib/chef-dk/skeletons/code_generator/files/default/serverspec_spec_helper.rb +8 -8
- data/lib/chef-dk/skeletons/code_generator/files/default/spec_helper.rb +2 -2
- data/lib/chef-dk/skeletons/code_generator/files/default/spec_helper_policyfile.rb +2 -2
- data/lib/chef-dk/skeletons/code_generator/metadata.rb +8 -8
- data/lib/chef-dk/skeletons/code_generator/recipes/app.rb +97 -97
- data/lib/chef-dk/skeletons/code_generator/recipes/attribute.rb +12 -12
- data/lib/chef-dk/skeletons/code_generator/recipes/build_cookbook.rb +88 -0
- data/lib/chef-dk/skeletons/code_generator/recipes/cookbook.rb +6 -0
- data/lib/chef-dk/skeletons/code_generator/recipes/cookbook_file.rb +24 -24
- data/lib/chef-dk/skeletons/code_generator/recipes/lwrp.rb +23 -23
- data/lib/chef-dk/skeletons/code_generator/recipes/policyfile.rb +8 -8
- data/lib/chef-dk/skeletons/code_generator/recipes/recipe.rb +27 -27
- data/lib/chef-dk/skeletons/code_generator/recipes/repo.rb +67 -67
- data/lib/chef-dk/skeletons/code_generator/recipes/template.rb +32 -32
- data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.all_rights.erb +3 -3
- data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.gplv2.erb +339 -339
- data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.gplv3.erb +674 -674
- data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.mit.erb +21 -21
- data/lib/chef-dk/skeletons/code_generator/templates/default/Policyfile.rb.erb +25 -25
- data/lib/chef-dk/skeletons/code_generator/templates/default/README.md.erb +4 -4
- data/lib/chef-dk/skeletons/code_generator/templates/default/build-cookbook/Berksfile.erb +20 -0
- data/lib/chef-dk/skeletons/code_generator/templates/default/build-cookbook/metadata.rb.erb +9 -0
- data/lib/chef-dk/skeletons/code_generator/templates/default/build-cookbook/recipe.rb.erb +8 -0
- data/lib/chef-dk/skeletons/code_generator/templates/default/kitchen.yml.erb +3 -2
- data/lib/chef-dk/skeletons/code_generator/templates/default/kitchen_policyfile.yml.erb +3 -2
- data/lib/chef-dk/skeletons/code_generator/templates/default/metadata.rb.erb +7 -7
- data/lib/chef-dk/skeletons/code_generator/templates/default/recipe.rb.erb +5 -5
- data/lib/chef-dk/skeletons/code_generator/templates/default/recipe_spec.rb.erb +20 -20
- data/lib/chef-dk/skeletons/code_generator/templates/default/repo/gitignore.erb +11 -11
- data/lib/chef-dk/skeletons/code_generator/templates/default/serverspec_default_spec.rb.erb +9 -9
- data/lib/chef-dk/ui.rb +58 -58
- data/lib/chef-dk/version.rb +1 -1
- data/lib/kitchen/provisioner/policyfile_zero.rb +195 -195
- data/omnibus_overrides.rb +2 -1
- data/spec/shared/a_file_generator.rb +125 -125
- data/spec/shared/a_generated_file.rb +12 -12
- data/spec/shared/command_with_ui_object.rb +11 -11
- data/spec/shared/fixture_cookbook_checksums.rb +47 -47
- data/spec/shared/setup_git_cookbooks.rb +53 -53
- data/spec/spec_helper.rb +51 -51
- data/spec/test_helpers.rb +84 -84
- data/spec/unit/chef_runner_spec.rb +1 -1
- data/spec/unit/cli_spec.rb +23 -6
- data/spec/unit/command/clean_policy_cookbooks_spec.rb +181 -181
- data/spec/unit/command/clean_policy_revisions_spec.rb +181 -181
- data/spec/unit/command/delete_policy_group_spec.rb +207 -207
- data/spec/unit/command/delete_policy_spec.rb +207 -207
- data/spec/unit/command/diff_spec.rb +312 -312
- data/spec/unit/command/env_spec.rb +52 -52
- data/spec/unit/command/exec_spec.rb +179 -179
- data/spec/unit/command/export_spec.rb +200 -200
- data/spec/unit/command/generate_spec.rb +142 -142
- data/spec/unit/command/generator_commands/app_spec.rb +169 -169
- data/spec/unit/command/generator_commands/attribute_spec.rb +32 -32
- data/spec/unit/command/generator_commands/base_spec.rb +136 -136
- data/spec/unit/command/generator_commands/build_cookbook_spec.rb +309 -0
- data/spec/unit/command/generator_commands/cookbook_file_spec.rb +32 -32
- data/spec/unit/command/generator_commands/cookbook_spec.rb +98 -4
- data/spec/unit/command/generator_commands/generator_generator_spec.rb +229 -229
- data/spec/unit/command/generator_commands/lwrp_spec.rb +32 -32
- data/spec/unit/command/generator_commands/policyfile_spec.rb +225 -225
- data/spec/unit/command/generator_commands/recipe_spec.rb +34 -34
- data/spec/unit/command/generator_commands/template_spec.rb +32 -32
- data/spec/unit/command/install_spec.rb +179 -179
- data/spec/unit/command/provision_spec.rb +592 -592
- data/spec/unit/command/push_archive_spec.rb +153 -153
- data/spec/unit/command/push_spec.rb +199 -199
- data/spec/unit/command/shell_init_spec.rb +329 -329
- data/spec/unit/command/show_policy_spec.rb +235 -235
- data/spec/unit/command/undelete_spec.rb +246 -246
- data/spec/unit/command/update_spec.rb +275 -275
- data/spec/unit/command/verify_spec.rb +1 -3
- data/spec/unit/commands_map_spec.rb +57 -57
- data/spec/unit/configurable_spec.rb +41 -41
- data/spec/unit/cookbook_metadata_spec.rb +98 -98
- data/spec/unit/cookbook_profiler/git_spec.rb +176 -176
- data/spec/unit/cookbook_profiler/identifiers_spec.rb +83 -83
- data/spec/unit/fixtures/chef-runner-cookbooks/test_cookbook/recipes/recipe_one.rb +9 -9
- data/spec/unit/fixtures/chef-runner-cookbooks/test_cookbook/recipes/recipe_two.rb +9 -9
- data/spec/unit/fixtures/command/cli_test_command.rb +26 -26
- data/spec/unit/fixtures/command/explicit_path_example.rb +7 -7
- data/spec/unit/fixtures/configurable/test_config_loader.rb +5 -5
- data/spec/unit/fixtures/configurable/test_configurable.rb +10 -10
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/.kitchen.yml +16 -16
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/Berksfile +3 -3
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/README.md +4 -4
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/chefignore +96 -96
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/.kitchen.yml +16 -16
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/Berksfile +3 -3
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/README.md +4 -4
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/chefignore +96 -96
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/metadata.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/recipes/default.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/.kitchen.yml +16 -16
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/Berksfile +3 -3
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/README.md +4 -4
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/chefignore +96 -96
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/metadata.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/recipes/default.rb +8 -8
- data/spec/unit/fixtures/cookbooks_api/pruned_small_universe.json +1321 -1321
- data/spec/unit/fixtures/cookbooks_api/small_universe.json +2987 -2987
- data/spec/unit/fixtures/cookbooks_api/universe.json +1 -1
- data/spec/unit/fixtures/cookbooks_api/update_fixtures.rb +36 -36
- data/spec/unit/fixtures/dev_cookbooks/README.md +16 -16
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/berkshelf/integration_test +2 -2
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/berkshelf/verify_me +5 -5
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/chef/verify_me +3 -3
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/test-kitchen/verify_me +2 -2
- data/spec/unit/fixtures/example_cookbook/.gitignore +17 -17
- data/spec/unit/fixtures/example_cookbook/.kitchen.yml +16 -16
- data/spec/unit/fixtures/example_cookbook/Berksfile +3 -3
- data/spec/unit/fixtures/example_cookbook/README.md +4 -4
- data/spec/unit/fixtures/example_cookbook/chefignore +96 -96
- data/spec/unit/fixtures/example_cookbook/metadata.rb +8 -8
- data/spec/unit/fixtures/example_cookbook/recipes/default.rb +8 -8
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/.gitignore +17 -17
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/.kitchen.yml +16 -16
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/Berksfile +3 -3
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/README.md +4 -4
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/chefignore +96 -96
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/metadata.json +5 -5
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/recipes/default.rb +8 -8
- data/spec/unit/fixtures/example_cookbook_no_metadata/.gitignore +17 -17
- data/spec/unit/fixtures/example_cookbook_no_metadata/.kitchen.yml +16 -16
- data/spec/unit/fixtures/example_cookbook_no_metadata/Berksfile +3 -3
- data/spec/unit/fixtures/example_cookbook_no_metadata/README.md +4 -4
- data/spec/unit/fixtures/example_cookbook_no_metadata/chefignore +96 -96
- data/spec/unit/fixtures/example_cookbook_no_metadata/recipes/default.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/README.md +4 -4
- data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/chefignore +96 -96
- data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/metadata.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/recipes/default.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/Berksfile +3 -3
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/README.md +4 -4
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/chefignore +96 -96
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/metadata.rb +9 -9
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/recipes/default.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/.kitchen.yml +16 -16
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/Berksfile +3 -3
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/README.md +4 -4
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/chefignore +96 -96
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/metadata.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/recipes/default.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/metadata-missing/README.md +2 -2
- data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/.kitchen.yml +16 -16
- data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/README.md +4 -4
- data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb +8 -8
- data/spec/unit/gemfile_util_spec.rb +41 -0
- data/spec/unit/helpers_spec.rb +19 -0
- data/spec/unit/pager_spec.rb +119 -119
- data/spec/unit/policyfile/chef_repo_cookbook_source_spec.rb +93 -93
- data/spec/unit/policyfile/chef_server_cookbook_source_spec.rb +34 -34
- data/spec/unit/policyfile/community_cookbook_source_spec.rb +84 -84
- data/spec/unit/policyfile/comparison_base_spec.rb +343 -343
- data/spec/unit/policyfile/cookbook_location_specification_spec.rb +277 -277
- data/spec/unit/policyfile/cookbook_locks_spec.rb +529 -529
- data/spec/unit/policyfile/delivery_supermarket_source_spec.rb +130 -130
- data/spec/unit/policyfile/differ_spec.rb +687 -687
- data/spec/unit/policyfile/lister_spec.rb +272 -272
- data/spec/unit/policyfile/null_cookbook_source_spec.rb +35 -35
- data/spec/unit/policyfile/read_cookbook_for_compat_mode_upload_spec.rb +92 -92
- data/spec/unit/policyfile/reports/install_spec.rb +115 -115
- data/spec/unit/policyfile/reports/upload_spec.rb +96 -96
- data/spec/unit/policyfile/solution_dependencies_spec.rb +145 -145
- data/spec/unit/policyfile/storage_config_spec.rb +172 -172
- data/spec/unit/policyfile/undo_record_spec.rb +260 -260
- data/spec/unit/policyfile/undo_stack_spec.rb +266 -266
- data/spec/unit/policyfile/uploader_spec.rb +410 -410
- data/spec/unit/policyfile_demands_spec.rb +1203 -1203
- data/spec/unit/policyfile_evaluation_spec.rb +642 -642
- data/spec/unit/policyfile_lock_build_spec.rb +1056 -1056
- data/spec/unit/policyfile_lock_install_spec.rb +138 -138
- data/spec/unit/policyfile_lock_serialization_spec.rb +425 -425
- data/spec/unit/policyfile_lock_validation_spec.rb +611 -611
- data/spec/unit/policyfile_services/clean_policies_spec.rb +236 -236
- data/spec/unit/policyfile_services/clean_policy_cookbooks_spec.rb +275 -275
- data/spec/unit/policyfile_services/export_repo_spec.rb +481 -481
- data/spec/unit/policyfile_services/install_spec.rb +211 -211
- data/spec/unit/policyfile_services/push_archive_spec.rb +378 -378
- data/spec/unit/policyfile_services/push_spec.rb +233 -233
- data/spec/unit/policyfile_services/rm_policy_group_spec.rb +241 -241
- data/spec/unit/policyfile_services/rm_policy_spec.rb +266 -266
- data/spec/unit/policyfile_services/show_policy_spec.rb +889 -889
- data/spec/unit/policyfile_services/undelete_spec.rb +304 -304
- data/spec/unit/policyfile_services/update_attributes_spec.rb +217 -217
- data/spec/unit/service_exception_inspectors/base_spec.rb +43 -43
- data/spec/unit/service_exception_inspectors/http_spec.rb +140 -140
- data/spec/unit/shell_out_spec.rb +34 -34
- data/tasks/bin/bundle-platform +6 -2
- data/tasks/bin/bundle-platform.bat +0 -0
- data/tasks/bin/create-override-gemfile +0 -0
- data/tasks/bundle_util.rb +18 -2
- data/tasks/gemfile_util.rb +53 -8
- data/version_policy.rb +9 -1
- data/warning.txt +9 -9
- metadata +30 -3
data/spec/spec_helper.rb
CHANGED
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Copyright:: Copyright (c) 2014 Chef Software Inc.
|
|
3
|
-
# License:: Apache License, Version 2.0
|
|
4
|
-
#
|
|
5
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
# you may not use this file except in compliance with the License.
|
|
7
|
-
# You may obtain a copy of the License at
|
|
8
|
-
#
|
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
#
|
|
11
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
# See the License for the specific language governing permissions and
|
|
15
|
-
# limitations under the License.
|
|
16
|
-
#
|
|
17
|
-
|
|
18
|
-
require 'rubygems'
|
|
19
|
-
require 'rspec/mocks'
|
|
20
|
-
require 'test_helpers'
|
|
21
|
-
|
|
22
|
-
# needed since we stub it for every test
|
|
23
|
-
require 'chef/workstation_config_loader'
|
|
24
|
-
require 'chef/config'
|
|
25
|
-
|
|
26
|
-
RSpec.configure do |c|
|
|
27
|
-
running_on_windows = (RUBY_PLATFORM =~ /mswin|mingw|windows/)
|
|
28
|
-
|
|
29
|
-
c.include ChefDK
|
|
30
|
-
c.include TestHelpers
|
|
31
|
-
|
|
32
|
-
# Avoid loading config.rb/knife.rb unintentionally
|
|
33
|
-
c.before(:each) do
|
|
34
|
-
Chef::Config.reset
|
|
35
|
-
Chef::Config.treat_deprecation_warnings_as_errors(true)
|
|
36
|
-
allow_any_instance_of(Chef::WorkstationConfigLoader).to receive(:load)
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
c.after(:all) { clear_tempdir }
|
|
40
|
-
|
|
41
|
-
c.filter_run :focus => true
|
|
42
|
-
c.run_all_when_everything_filtered = true
|
|
43
|
-
# Tests that randomly fail, but may have value.
|
|
44
|
-
c.filter_run_excluding :volatile => true
|
|
45
|
-
c.filter_run_excluding :skip_on_windows => true if running_on_windows
|
|
46
|
-
|
|
47
|
-
c.mock_with(:rspec) do |mocks|
|
|
48
|
-
mocks.verify_partial_doubles = true
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
end
|
|
1
|
+
#
|
|
2
|
+
# Copyright:: Copyright (c) 2014 Chef Software Inc.
|
|
3
|
+
# License:: Apache License, Version 2.0
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
#
|
|
17
|
+
|
|
18
|
+
require 'rubygems'
|
|
19
|
+
require 'rspec/mocks'
|
|
20
|
+
require 'test_helpers'
|
|
21
|
+
|
|
22
|
+
# needed since we stub it for every test
|
|
23
|
+
require 'chef/workstation_config_loader'
|
|
24
|
+
require 'chef/config'
|
|
25
|
+
|
|
26
|
+
RSpec.configure do |c|
|
|
27
|
+
running_on_windows = (RUBY_PLATFORM =~ /mswin|mingw|windows/)
|
|
28
|
+
|
|
29
|
+
c.include ChefDK
|
|
30
|
+
c.include TestHelpers
|
|
31
|
+
|
|
32
|
+
# Avoid loading config.rb/knife.rb unintentionally
|
|
33
|
+
c.before(:each) do
|
|
34
|
+
Chef::Config.reset
|
|
35
|
+
Chef::Config.treat_deprecation_warnings_as_errors(true)
|
|
36
|
+
allow_any_instance_of(Chef::WorkstationConfigLoader).to receive(:load)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
c.after(:all) { clear_tempdir }
|
|
40
|
+
|
|
41
|
+
c.filter_run :focus => true
|
|
42
|
+
c.run_all_when_everything_filtered = true
|
|
43
|
+
# Tests that randomly fail, but may have value.
|
|
44
|
+
c.filter_run_excluding :volatile => true
|
|
45
|
+
c.filter_run_excluding :skip_on_windows => true if running_on_windows
|
|
46
|
+
|
|
47
|
+
c.mock_with(:rspec) do |mocks|
|
|
48
|
+
mocks.verify_partial_doubles = true
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
end
|
data/spec/test_helpers.rb
CHANGED
|
@@ -1,84 +1,84 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Copyright:: Copyright (c) 2014 Chef Software Inc.
|
|
3
|
-
# License:: Apache License, Version 2.0
|
|
4
|
-
#
|
|
5
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
# you may not use this file except in compliance with the License.
|
|
7
|
-
# You may obtain a copy of the License at
|
|
8
|
-
#
|
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
#
|
|
11
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
# See the License for the specific language governing permissions and
|
|
15
|
-
# limitations under the License.
|
|
16
|
-
#
|
|
17
|
-
|
|
18
|
-
require 'fileutils'
|
|
19
|
-
require 'tmpdir'
|
|
20
|
-
|
|
21
|
-
module TestHelpers
|
|
22
|
-
|
|
23
|
-
# A globally accessible place where we can put some state to verify that a
|
|
24
|
-
# test performed a certain operation.
|
|
25
|
-
def self.test_state
|
|
26
|
-
@test_state ||= {}
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def self.reset!
|
|
30
|
-
@test_state = nil
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def test_state
|
|
34
|
-
TestHelpers.test_state
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def fixtures_path
|
|
38
|
-
File.expand_path(File.dirname(__FILE__) + "/unit/fixtures/")
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def project_root
|
|
42
|
-
File.expand_path("../..", __FILE__)
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def reset_tempdir
|
|
46
|
-
clear_tempdir
|
|
47
|
-
FileUtils.mkdir_p(tempdir)
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def clear_tempdir
|
|
51
|
-
FileUtils.rm_rf(tempdir)
|
|
52
|
-
@tmpdir = nil
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def tempdir
|
|
56
|
-
@tmpdir ||= Dir.mktmpdir("chef-dk")
|
|
57
|
-
File.realpath(@tmpdir)
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
class TestUI
|
|
61
|
-
|
|
62
|
-
attr_reader :output_stream
|
|
63
|
-
|
|
64
|
-
def initialize
|
|
65
|
-
@output_stream = StringIO.new
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
def err(message)
|
|
69
|
-
@output_stream.puts(message)
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
def msg(message)
|
|
73
|
-
@output_stream.puts(message)
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
def print(message)
|
|
77
|
-
@output_stream.print(message)
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
def output
|
|
81
|
-
@output_stream.string
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
end
|
|
1
|
+
#
|
|
2
|
+
# Copyright:: Copyright (c) 2014 Chef Software Inc.
|
|
3
|
+
# License:: Apache License, Version 2.0
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
#
|
|
17
|
+
|
|
18
|
+
require 'fileutils'
|
|
19
|
+
require 'tmpdir'
|
|
20
|
+
|
|
21
|
+
module TestHelpers
|
|
22
|
+
|
|
23
|
+
# A globally accessible place where we can put some state to verify that a
|
|
24
|
+
# test performed a certain operation.
|
|
25
|
+
def self.test_state
|
|
26
|
+
@test_state ||= {}
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def self.reset!
|
|
30
|
+
@test_state = nil
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_state
|
|
34
|
+
TestHelpers.test_state
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def fixtures_path
|
|
38
|
+
File.expand_path(File.dirname(__FILE__) + "/unit/fixtures/")
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def project_root
|
|
42
|
+
File.expand_path("../..", __FILE__)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def reset_tempdir
|
|
46
|
+
clear_tempdir
|
|
47
|
+
FileUtils.mkdir_p(tempdir)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def clear_tempdir
|
|
51
|
+
FileUtils.rm_rf(tempdir)
|
|
52
|
+
@tmpdir = nil
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def tempdir
|
|
56
|
+
@tmpdir ||= Dir.mktmpdir("chef-dk")
|
|
57
|
+
File.realpath(@tmpdir)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
class TestUI
|
|
61
|
+
|
|
62
|
+
attr_reader :output_stream
|
|
63
|
+
|
|
64
|
+
def initialize
|
|
65
|
+
@output_stream = StringIO.new
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def err(message)
|
|
69
|
+
@output_stream.puts(message)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def msg(message)
|
|
73
|
+
@output_stream.puts(message)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def print(message)
|
|
77
|
+
@output_stream.print(message)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def output
|
|
81
|
+
@output_stream.string
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
@@ -40,7 +40,7 @@ describe ChefDK::ChefRunner do
|
|
|
40
40
|
|
|
41
41
|
it "sets up Chef::Config" do
|
|
42
42
|
chef_runner.configure
|
|
43
|
-
expect(Chef::Config.
|
|
43
|
+
expect(Chef::Config.solo_legacy_mode).to be true
|
|
44
44
|
expect(Chef::Config.cookbook_path).to eq(default_cookbook_path)
|
|
45
45
|
expect(Chef::Config.color).to be true
|
|
46
46
|
expect(Chef::Config.diff_disabled).to be true
|
data/spec/unit/cli_spec.rb
CHANGED
|
@@ -67,6 +67,16 @@ E
|
|
|
67
67
|
cli.run
|
|
68
68
|
end
|
|
69
69
|
|
|
70
|
+
def run_cli_and_validate_tool_versions
|
|
71
|
+
full_version_message = version_message
|
|
72
|
+
tools.each do |name, version|
|
|
73
|
+
expect(cli).to receive(:shell_out).with("#{name} --version").and_return(mock_shell_out(0, "#{version["version_output"]}", ''))
|
|
74
|
+
full_version_message += "#{name} version: #{version["expected_version"]}\n"
|
|
75
|
+
end
|
|
76
|
+
run_cli(0)
|
|
77
|
+
expect(stdout).to eq(full_version_message)
|
|
78
|
+
end
|
|
79
|
+
|
|
70
80
|
def mock_shell_out(exitstatus, stdout, stderr)
|
|
71
81
|
shell_out = double("mixlib_shell_out")
|
|
72
82
|
allow(shell_out).to receive(:exitstatus).and_return(exitstatus)
|
|
@@ -113,6 +123,7 @@ E
|
|
|
113
123
|
|
|
114
124
|
context "given -v" do
|
|
115
125
|
let(:argv) { %w[-v] }
|
|
126
|
+
let(:delivery_version) { "master (454c3f37819ed508a49c971f38e42267ce8a47de)" }
|
|
116
127
|
|
|
117
128
|
let(:tools) {
|
|
118
129
|
{
|
|
@@ -120,6 +131,10 @@ E
|
|
|
120
131
|
"version_output" => "Chef: 12.0.3",
|
|
121
132
|
"expected_version" => "12.0.3"
|
|
122
133
|
},
|
|
134
|
+
"delivery" => {
|
|
135
|
+
"version_output" => "delivery #{delivery_version}",
|
|
136
|
+
"expected_version" => delivery_version
|
|
137
|
+
},
|
|
123
138
|
"berks" => {
|
|
124
139
|
"version_output" => "3.2.3",
|
|
125
140
|
"expected_version" => "3.2.3"
|
|
@@ -147,13 +162,15 @@ E
|
|
|
147
162
|
end
|
|
148
163
|
|
|
149
164
|
it "prints the version and versions of chef-dk tools" do
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
165
|
+
run_cli_and_validate_tool_versions
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
context "alternate Delivery CLI version format" do
|
|
169
|
+
let(:delivery_version) { "0.0.15 (454c3f37819ed508a49c971f38e42267ce8a47de)" }
|
|
170
|
+
|
|
171
|
+
it "prints the expected version of Delivery CLI" do
|
|
172
|
+
run_cli_and_validate_tool_versions
|
|
154
173
|
end
|
|
155
|
-
run_cli(0)
|
|
156
|
-
expect(stdout).to eq(full_version_message)
|
|
157
174
|
end
|
|
158
175
|
end
|
|
159
176
|
|
|
@@ -1,181 +1,181 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Copyright:: Copyright (c) 2015 Chef Software Inc.
|
|
3
|
-
# License:: Apache License, Version 2.0
|
|
4
|
-
#
|
|
5
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
# you may not use this file except in compliance with the License.
|
|
7
|
-
# You may obtain a copy of the License at
|
|
8
|
-
#
|
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
#
|
|
11
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
# See the License for the specific language governing permissions and
|
|
15
|
-
# limitations under the License.
|
|
16
|
-
#
|
|
17
|
-
|
|
18
|
-
require 'spec_helper'
|
|
19
|
-
require 'shared/command_with_ui_object'
|
|
20
|
-
require 'chef-dk/command/clean_policy_cookbooks'
|
|
21
|
-
|
|
22
|
-
describe ChefDK::Command::CleanPolicyCookbooks do
|
|
23
|
-
|
|
24
|
-
it_behaves_like "a command with a UI object"
|
|
25
|
-
|
|
26
|
-
subject(:command) do
|
|
27
|
-
described_class.new
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
let(:clean_policy_cookbooks_service) { command.clean_policy_cookbooks_service }
|
|
31
|
-
|
|
32
|
-
let(:chef_config_loader) { instance_double("Chef::WorkstationConfigLoader") }
|
|
33
|
-
|
|
34
|
-
let(:chef_config) { double("Chef::Config") }
|
|
35
|
-
|
|
36
|
-
# nil means the config loader will do the default path lookup
|
|
37
|
-
let(:config_arg) { nil }
|
|
38
|
-
|
|
39
|
-
before do
|
|
40
|
-
stub_const("Chef::Config", chef_config)
|
|
41
|
-
allow(Chef::WorkstationConfigLoader).to receive(:new).with(config_arg).and_return(chef_config_loader)
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
describe "parsing args and options" do
|
|
45
|
-
let(:params) { [] }
|
|
46
|
-
|
|
47
|
-
before do
|
|
48
|
-
command.apply_params!(params)
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
context "when given a path to the config" do
|
|
52
|
-
|
|
53
|
-
let(:params) { %w[ -c ~/otherstuff/config.rb ] }
|
|
54
|
-
|
|
55
|
-
let(:config_arg) { "~/otherstuff/config.rb" }
|
|
56
|
-
|
|
57
|
-
before do
|
|
58
|
-
expect(chef_config_loader).to receive(:load)
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
it "reads the chef/knife config" do
|
|
62
|
-
expect(Chef::WorkstationConfigLoader).to receive(:new).with(config_arg).and_return(chef_config_loader)
|
|
63
|
-
expect(command.chef_config).to eq(chef_config)
|
|
64
|
-
expect(clean_policy_cookbooks_service.chef_config).to eq(chef_config)
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
describe "settings that require loading chef config" do
|
|
70
|
-
|
|
71
|
-
before do
|
|
72
|
-
allow(chef_config_loader).to receive(:load)
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
context "with no params" do
|
|
76
|
-
|
|
77
|
-
it "disables debug by default" do
|
|
78
|
-
expect(command.debug?).to be(false)
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
context "when debug mode is set" do
|
|
84
|
-
|
|
85
|
-
let(:params) { [ "-D" ] }
|
|
86
|
-
|
|
87
|
-
it "enables debug" do
|
|
88
|
-
expect(command.debug?).to be(true)
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
describe "running the command" do
|
|
98
|
-
|
|
99
|
-
let(:ui) { TestHelpers::TestUI.new }
|
|
100
|
-
|
|
101
|
-
before do
|
|
102
|
-
allow(chef_config_loader).to receive(:load)
|
|
103
|
-
command.ui = ui
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
context "when given too many arguments" do
|
|
107
|
-
|
|
108
|
-
let(:params) { %w[ wut-is-this ] }
|
|
109
|
-
|
|
110
|
-
it "shows usage and exits" do
|
|
111
|
-
expect(command.run(params)).to eq(1)
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
context "when the clean policies service raises an exception" do
|
|
117
|
-
|
|
118
|
-
let(:backtrace) { caller[0...3] }
|
|
119
|
-
|
|
120
|
-
let(:cause) do
|
|
121
|
-
e = StandardError.new("some operation failed")
|
|
122
|
-
e.set_backtrace(backtrace)
|
|
123
|
-
e
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
let(:exception) do
|
|
127
|
-
ChefDK::PolicyfileCleanError.new("Failed to delete some policy revisions.", cause)
|
|
128
|
-
end
|
|
129
|
-
|
|
130
|
-
before do
|
|
131
|
-
allow(clean_policy_cookbooks_service).to receive(:run).and_raise(exception)
|
|
132
|
-
end
|
|
133
|
-
|
|
134
|
-
it "prints a debugging message and exits non-zero" do
|
|
135
|
-
expect(command.run([])).to eq(1)
|
|
136
|
-
|
|
137
|
-
expected_output=<<-E
|
|
138
|
-
Error: Failed to delete some policy revisions.
|
|
139
|
-
Reason: (StandardError) some operation failed
|
|
140
|
-
|
|
141
|
-
E
|
|
142
|
-
|
|
143
|
-
expect(ui.output).to eq(expected_output)
|
|
144
|
-
end
|
|
145
|
-
|
|
146
|
-
context "when debug is enabled" do
|
|
147
|
-
|
|
148
|
-
it "includes the backtrace in the error" do
|
|
149
|
-
|
|
150
|
-
command.run(%w[ -D ])
|
|
151
|
-
|
|
152
|
-
expected_output=<<-E
|
|
153
|
-
Error: Failed to delete some policy revisions.
|
|
154
|
-
Reason: (StandardError) some operation failed
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
E
|
|
158
|
-
expected_output << backtrace.join("\n") << "\n"
|
|
159
|
-
|
|
160
|
-
expect(ui.output).to eq(expected_output)
|
|
161
|
-
end
|
|
162
|
-
|
|
163
|
-
end
|
|
164
|
-
|
|
165
|
-
end
|
|
166
|
-
|
|
167
|
-
context "when the clean policies service executes successfully" do
|
|
168
|
-
|
|
169
|
-
before do
|
|
170
|
-
expect(clean_policy_cookbooks_service).to receive(:run)
|
|
171
|
-
end
|
|
172
|
-
|
|
173
|
-
it "exits 0" do
|
|
174
|
-
expect(command.run([])).to eq(0)
|
|
175
|
-
end
|
|
176
|
-
|
|
177
|
-
end
|
|
178
|
-
|
|
179
|
-
end
|
|
180
|
-
end
|
|
181
|
-
|
|
1
|
+
#
|
|
2
|
+
# Copyright:: Copyright (c) 2015 Chef Software Inc.
|
|
3
|
+
# License:: Apache License, Version 2.0
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
#
|
|
17
|
+
|
|
18
|
+
require 'spec_helper'
|
|
19
|
+
require 'shared/command_with_ui_object'
|
|
20
|
+
require 'chef-dk/command/clean_policy_cookbooks'
|
|
21
|
+
|
|
22
|
+
describe ChefDK::Command::CleanPolicyCookbooks do
|
|
23
|
+
|
|
24
|
+
it_behaves_like "a command with a UI object"
|
|
25
|
+
|
|
26
|
+
subject(:command) do
|
|
27
|
+
described_class.new
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
let(:clean_policy_cookbooks_service) { command.clean_policy_cookbooks_service }
|
|
31
|
+
|
|
32
|
+
let(:chef_config_loader) { instance_double("Chef::WorkstationConfigLoader") }
|
|
33
|
+
|
|
34
|
+
let(:chef_config) { double("Chef::Config") }
|
|
35
|
+
|
|
36
|
+
# nil means the config loader will do the default path lookup
|
|
37
|
+
let(:config_arg) { nil }
|
|
38
|
+
|
|
39
|
+
before do
|
|
40
|
+
stub_const("Chef::Config", chef_config)
|
|
41
|
+
allow(Chef::WorkstationConfigLoader).to receive(:new).with(config_arg).and_return(chef_config_loader)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
describe "parsing args and options" do
|
|
45
|
+
let(:params) { [] }
|
|
46
|
+
|
|
47
|
+
before do
|
|
48
|
+
command.apply_params!(params)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
context "when given a path to the config" do
|
|
52
|
+
|
|
53
|
+
let(:params) { %w[ -c ~/otherstuff/config.rb ] }
|
|
54
|
+
|
|
55
|
+
let(:config_arg) { "~/otherstuff/config.rb" }
|
|
56
|
+
|
|
57
|
+
before do
|
|
58
|
+
expect(chef_config_loader).to receive(:load)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it "reads the chef/knife config" do
|
|
62
|
+
expect(Chef::WorkstationConfigLoader).to receive(:new).with(config_arg).and_return(chef_config_loader)
|
|
63
|
+
expect(command.chef_config).to eq(chef_config)
|
|
64
|
+
expect(clean_policy_cookbooks_service.chef_config).to eq(chef_config)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
describe "settings that require loading chef config" do
|
|
70
|
+
|
|
71
|
+
before do
|
|
72
|
+
allow(chef_config_loader).to receive(:load)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
context "with no params" do
|
|
76
|
+
|
|
77
|
+
it "disables debug by default" do
|
|
78
|
+
expect(command.debug?).to be(false)
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
context "when debug mode is set" do
|
|
84
|
+
|
|
85
|
+
let(:params) { [ "-D" ] }
|
|
86
|
+
|
|
87
|
+
it "enables debug" do
|
|
88
|
+
expect(command.debug?).to be(true)
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
describe "running the command" do
|
|
98
|
+
|
|
99
|
+
let(:ui) { TestHelpers::TestUI.new }
|
|
100
|
+
|
|
101
|
+
before do
|
|
102
|
+
allow(chef_config_loader).to receive(:load)
|
|
103
|
+
command.ui = ui
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
context "when given too many arguments" do
|
|
107
|
+
|
|
108
|
+
let(:params) { %w[ wut-is-this ] }
|
|
109
|
+
|
|
110
|
+
it "shows usage and exits" do
|
|
111
|
+
expect(command.run(params)).to eq(1)
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
context "when the clean policies service raises an exception" do
|
|
117
|
+
|
|
118
|
+
let(:backtrace) { caller[0...3] }
|
|
119
|
+
|
|
120
|
+
let(:cause) do
|
|
121
|
+
e = StandardError.new("some operation failed")
|
|
122
|
+
e.set_backtrace(backtrace)
|
|
123
|
+
e
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
let(:exception) do
|
|
127
|
+
ChefDK::PolicyfileCleanError.new("Failed to delete some policy revisions.", cause)
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
before do
|
|
131
|
+
allow(clean_policy_cookbooks_service).to receive(:run).and_raise(exception)
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
it "prints a debugging message and exits non-zero" do
|
|
135
|
+
expect(command.run([])).to eq(1)
|
|
136
|
+
|
|
137
|
+
expected_output=<<-E
|
|
138
|
+
Error: Failed to delete some policy revisions.
|
|
139
|
+
Reason: (StandardError) some operation failed
|
|
140
|
+
|
|
141
|
+
E
|
|
142
|
+
|
|
143
|
+
expect(ui.output).to eq(expected_output)
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
context "when debug is enabled" do
|
|
147
|
+
|
|
148
|
+
it "includes the backtrace in the error" do
|
|
149
|
+
|
|
150
|
+
command.run(%w[ -D ])
|
|
151
|
+
|
|
152
|
+
expected_output=<<-E
|
|
153
|
+
Error: Failed to delete some policy revisions.
|
|
154
|
+
Reason: (StandardError) some operation failed
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
E
|
|
158
|
+
expected_output << backtrace.join("\n") << "\n"
|
|
159
|
+
|
|
160
|
+
expect(ui.output).to eq(expected_output)
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
context "when the clean policies service executes successfully" do
|
|
168
|
+
|
|
169
|
+
before do
|
|
170
|
+
expect(clean_policy_cookbooks_service).to receive(:run)
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
it "exits 0" do
|
|
174
|
+
expect(command.run([])).to eq(0)
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
end
|
|
180
|
+
end
|
|
181
|
+
|