chef-dk 2.6.2 → 3.0.36
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 +126 -121
- data/Gemfile.lock +812 -807
- data/LICENSE +201 -201
- data/README.md +333 -333
- data/Rakefile +74 -74
- data/acceptance/.shared/kitchen_acceptance/.kitchen.digitalocean.yml +27 -27
- data/acceptance/.shared/kitchen_acceptance/.kitchen.ec2.yml +287 -287
- 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 +21 -21
- data/acceptance/Gemfile.lock +334 -334
- 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 +60 -60
- data/lib/chef-dk.rb +19 -19
- data/lib/chef-dk/authenticated_http.rb +22 -22
- data/lib/chef-dk/builtin_commands.rb +59 -59
- data/lib/chef-dk/chef_runner.rb +114 -114
- data/lib/chef-dk/chef_server_api_multi.rb +73 -73
- data/lib/chef-dk/cli.rb +201 -201
- data/lib/chef-dk/command/base.rb +79 -79
- data/lib/chef-dk/command/clean_policy_cookbooks.rb +114 -114
- data/lib/chef-dk/command/clean_policy_revisions.rb +111 -111
- data/lib/chef-dk/command/delete_policy.rb +120 -120
- data/lib/chef-dk/command/delete_policy_group.rb +120 -120
- data/lib/chef-dk/command/diff.rb +315 -315
- data/lib/chef-dk/command/env.rb +89 -89
- data/lib/chef-dk/command/exec.rb +44 -44
- data/lib/chef-dk/command/export.rb +155 -155
- data/lib/chef-dk/command/gem.rb +47 -47
- data/lib/chef-dk/command/generate.rb +125 -125
- data/lib/chef-dk/command/generator_commands.rb +83 -83
- data/lib/chef-dk/command/generator_commands/app.rb +106 -106
- data/lib/chef-dk/command/generator_commands/attribute.rb +36 -36
- data/lib/chef-dk/command/generator_commands/base.rb +157 -157
- data/lib/chef-dk/command/generator_commands/build_cookbook.rb +125 -125
- data/lib/chef-dk/command/generator_commands/chef_exts/generator_desc_resource.rb +85 -85
- data/lib/chef-dk/command/generator_commands/chef_exts/quieter_doc_formatter.rb +38 -38
- data/lib/chef-dk/command/generator_commands/chef_exts/recipe_dsl_ext.rb +39 -39
- data/lib/chef-dk/command/generator_commands/cookbook.rb +241 -241
- 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 +174 -174
- data/lib/chef-dk/command/generator_commands/helpers.rb +36 -36
- data/lib/chef-dk/command/generator_commands/policyfile.rb +124 -126
- data/lib/chef-dk/command/generator_commands/recipe.rb +36 -36
- data/lib/chef-dk/command/generator_commands/repo.rb +123 -123
- data/lib/chef-dk/command/generator_commands/resource.rb +36 -36
- data/lib/chef-dk/command/generator_commands/template.rb +46 -46
- data/lib/chef-dk/command/install.rb +120 -120
- data/lib/chef-dk/command/provision.rb +436 -436
- data/lib/chef-dk/command/push.rb +117 -117
- data/lib/chef-dk/command/push_archive.rb +125 -125
- data/lib/chef-dk/command/shell_init.rb +179 -179
- data/lib/chef-dk/command/show_policy.rb +163 -163
- data/lib/chef-dk/command/undelete.rb +154 -154
- data/lib/chef-dk/command/update.rb +133 -133
- data/lib/chef-dk/command/verify.rb +629 -629
- data/lib/chef-dk/commands_map.rb +113 -113
- 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/component_test.rb +227 -227
- data/lib/chef-dk/configurable.rb +88 -88
- 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 +152 -151
- data/lib/chef-dk/cookbook_profiler/identifiers.rb +72 -72
- data/lib/chef-dk/cookbook_profiler/null_scm.rb +31 -31
- data/lib/chef-dk/exceptions.rb +151 -150
- data/lib/chef-dk/generator.rb +165 -165
- data/lib/chef-dk/helpers.rb +176 -176
- data/lib/chef-dk/pager.rb +104 -105
- data/lib/chef-dk/policyfile/artifactory_cookbook_source.rb +102 -102
- data/lib/chef-dk/policyfile/attribute_merge_checker.rb +110 -110
- data/lib/chef-dk/policyfile/chef_repo_cookbook_source.rb +138 -138
- data/lib/chef-dk/policyfile/chef_server_cookbook_source.rb +99 -99
- data/lib/chef-dk/policyfile/chef_server_lock_fetcher.rb +167 -164
- data/lib/chef-dk/policyfile/community_cookbook_source.rb +95 -95
- data/lib/chef-dk/policyfile/comparison_base.rb +123 -123
- 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 +23 -23
- data/lib/chef-dk/policyfile/delivery_supermarket_source.rb +89 -89
- data/lib/chef-dk/policyfile/differ.rb +263 -263
- data/lib/chef-dk/policyfile/dsl.rb +288 -288
- data/lib/chef-dk/policyfile/git_lock_fetcher.rb +265 -0
- data/lib/chef-dk/policyfile/included_policies_cookbook_source.rb +156 -156
- data/lib/chef-dk/policyfile/lister.rb +229 -229
- data/lib/chef-dk/policyfile/local_lock_fetcher.rb +129 -123
- data/lib/chef-dk/policyfile/lock_applier.rb +80 -80
- data/lib/chef-dk/policyfile/null_cookbook_source.rb +49 -49
- data/lib/chef-dk/policyfile/policyfile_location_specification.rb +125 -122
- data/lib/chef-dk/policyfile/read_cookbook_for_compat_mode_upload.rb +124 -124
- data/lib/chef-dk/policyfile/reports/install.rb +69 -69
- data/lib/chef-dk/policyfile/reports/table_printer.rb +57 -57
- data/lib/chef-dk/policyfile/reports/upload.rb +70 -70
- data/lib/chef-dk/policyfile/solution_dependencies.rb +311 -312
- data/lib/chef-dk/policyfile/source_uri.rb +57 -57
- data/lib/chef-dk/policyfile/storage_config.rb +112 -102
- data/lib/chef-dk/policyfile/undo_record.rb +139 -139
- data/lib/chef-dk/policyfile/undo_stack.rb +128 -128
- data/lib/chef-dk/policyfile/uploader.rb +213 -213
- data/lib/chef-dk/policyfile_compiler.rb +528 -528
- data/lib/chef-dk/policyfile_lock.rb +581 -581
- data/lib/chef-dk/policyfile_services/clean_policies.rb +95 -95
- data/lib/chef-dk/policyfile_services/clean_policy_cookbooks.rb +123 -123
- data/lib/chef-dk/policyfile_services/export_repo.rb +419 -420
- data/lib/chef-dk/policyfile_services/install.rb +162 -162
- data/lib/chef-dk/policyfile_services/push.rb +112 -112
- data/lib/chef-dk/policyfile_services/push_archive.rb +164 -200
- data/lib/chef-dk/policyfile_services/rm_policy.rb +141 -141
- data/lib/chef-dk/policyfile_services/rm_policy_group.rb +85 -85
- data/lib/chef-dk/policyfile_services/show_policy.rb +234 -236
- data/lib/chef-dk/policyfile_services/undelete.rb +108 -108
- data/lib/chef-dk/policyfile_services/update_attributes.rb +110 -110
- data/lib/chef-dk/service_exception_inspectors.rb +24 -24
- data/lib/chef-dk/service_exception_inspectors/base.rb +39 -39
- data/lib/chef-dk/service_exception_inspectors/http.rb +119 -119
- data/lib/chef-dk/service_exceptions.rb +142 -142
- data/lib/chef-dk/shell_out.rb +36 -36
- data/lib/chef-dk/skeletons/code_generator/files/default/Berksfile +4 -4
- data/lib/chef-dk/skeletons/code_generator/files/default/build_cookbook/.kitchen.yml +21 -21
- data/lib/chef-dk/skeletons/code_generator/files/default/build_cookbook/README.md +146 -146
- data/lib/chef-dk/skeletons/code_generator/files/default/build_cookbook/test-fixture-recipe.rb +9 -9
- data/lib/chef-dk/skeletons/code_generator/files/default/chefignore +104 -107
- 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 +66 -54
- data/lib/chef-dk/skeletons/code_generator/files/default/delivery-config.json +17 -17
- data/lib/chef-dk/skeletons/code_generator/files/default/delivery-project.toml +36 -36
- data/lib/chef-dk/skeletons/code_generator/files/default/gitignore +22 -22
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/README.md +24 -24
- 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 +8 -8
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/metadata.rb +7 -7
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/recipes/default.rb +9 -9
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/README.md +56 -56
- 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/spec_helper.rb +3 -3
- data/lib/chef-dk/skeletons/code_generator/files/default/spec_helper_policyfile.rb +3 -3
- data/lib/chef-dk/skeletons/code_generator/metadata.rb +8 -8
- data/lib/chef-dk/skeletons/code_generator/recipes/app.rb +89 -89
- data/lib/chef-dk/skeletons/code_generator/recipes/attribute.rb +13 -13
- data/lib/chef-dk/skeletons/code_generator/recipes/build_cookbook.rb +177 -177
- data/lib/chef-dk/skeletons/code_generator/recipes/cookbook.rb +158 -152
- data/lib/chef-dk/skeletons/code_generator/recipes/cookbook_file.rb +25 -25
- data/lib/chef-dk/skeletons/code_generator/recipes/helpers.rb +21 -21
- data/lib/chef-dk/skeletons/code_generator/recipes/policyfile.rb +9 -9
- data/lib/chef-dk/skeletons/code_generator/recipes/recipe.rb +52 -52
- data/lib/chef-dk/skeletons/code_generator/recipes/repo.rb +68 -68
- data/lib/chef-dk/skeletons/code_generator/recipes/resource.rb +13 -13
- data/lib/chef-dk/skeletons/code_generator/recipes/template.rb +32 -32
- data/lib/chef-dk/skeletons/code_generator/templates/default/CHANGELOG.md.erb +11 -0
- 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.apachev2.erb +201 -201
- 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 +7 -7
- data/lib/chef-dk/skeletons/code_generator/templates/default/build_cookbook/metadata.rb.erb +10 -10
- data/lib/chef-dk/skeletons/code_generator/templates/default/build_cookbook/recipe.rb.erb +8 -8
- data/lib/chef-dk/skeletons/code_generator/templates/default/helpers.rb.erb +39 -39
- data/lib/chef-dk/skeletons/code_generator/templates/default/inspec_default_test.rb.erb +18 -18
- data/lib/chef-dk/skeletons/code_generator/templates/default/kitchen.yml.erb +26 -26
- data/lib/chef-dk/skeletons/code_generator/templates/default/kitchen_policyfile.yml.erb +33 -33
- data/lib/chef-dk/skeletons/code_generator/templates/default/metadata.rb.erb +20 -20
- 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 +35 -35
- data/lib/chef-dk/skeletons/code_generator/templates/default/repo/gitignore.erb +128 -128
- data/lib/chef-dk/skeletons/code_generator/templates/default/resource.rb.erb +1 -1
- data/lib/chef-dk/ui.rb +57 -57
- data/lib/chef-dk/version.rb +20 -20
- data/lib/kitchen/provisioner/policyfile_zero.rb +195 -195
- data/omnibus_overrides.rb +25 -25
- 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/custom_generator_cookbook.rb +136 -136
- data/spec/shared/fixture_cookbook_checksums.rb +46 -46
- data/spec/shared/setup_git_committer_config.rb +54 -54
- 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 +139 -139
- data/spec/unit/chef_server_api_multi_spec.rb +120 -120
- data/spec/unit/cli_spec.rb +377 -377
- data/spec/unit/command/base_spec.rb +172 -172
- data/spec/unit/command/clean_policy_cookbooks_spec.rb +180 -180
- data/spec/unit/command/clean_policy_revisions_spec.rb +180 -180
- data/spec/unit/command/delete_policy_group_spec.rb +206 -206
- data/spec/unit/command/delete_policy_spec.rb +206 -206
- data/spec/unit/command/diff_spec.rb +311 -311
- data/spec/unit/command/env_spec.rb +52 -52
- data/spec/unit/command/exec_spec.rb +178 -178
- data/spec/unit/command/export_spec.rb +199 -199
- data/spec/unit/command/generate_spec.rb +142 -142
- data/spec/unit/command/generator_commands/app_spec.rb +166 -166
- data/spec/unit/command/generator_commands/attribute_spec.rb +31 -31
- data/spec/unit/command/generator_commands/base_spec.rb +181 -181
- data/spec/unit/command/generator_commands/build_cookbook_spec.rb +377 -377
- data/spec/unit/command/generator_commands/chef_exts/generator_desc_resource_spec.rb +97 -97
- data/spec/unit/command/generator_commands/chef_exts/recipe_dsl_ext_spec.rb +111 -111
- data/spec/unit/command/generator_commands/cookbook_file_spec.rb +31 -31
- data/spec/unit/command/generator_commands/cookbook_spec.rb +765 -756
- data/spec/unit/command/generator_commands/generator_generator_spec.rb +227 -227
- data/spec/unit/command/generator_commands/helpers_spec.rb +31 -31
- data/spec/unit/command/generator_commands/policyfile_spec.rb +223 -223
- data/spec/unit/command/generator_commands/recipe_spec.rb +37 -37
- data/spec/unit/command/generator_commands/repo_spec.rb +374 -374
- data/spec/unit/command/generator_commands/resource_spec.rb +31 -31
- data/spec/unit/command/generator_commands/template_spec.rb +31 -31
- data/spec/unit/command/install_spec.rb +179 -179
- data/spec/unit/command/provision_spec.rb +589 -589
- data/spec/unit/command/push_archive_spec.rb +153 -153
- data/spec/unit/command/push_spec.rb +198 -198
- data/spec/unit/command/shell_init_spec.rb +339 -339
- data/spec/unit/command/show_policy_spec.rb +234 -234
- data/spec/unit/command/undelete_spec.rb +244 -244
- data/spec/unit/command/update_spec.rb +283 -283
- data/spec/unit/command/verify_spec.rb +341 -341
- data/spec/unit/commands_map_spec.rb +57 -57
- data/spec/unit/component_test_spec.rb +128 -128
- data/spec/unit/configurable_spec.rb +68 -68
- data/spec/unit/cookbook_metadata_spec.rb +96 -96
- data/spec/unit/cookbook_profiler/git_spec.rb +176 -176
- data/spec/unit/cookbook_profiler/identifiers_spec.rb +81 -81
- 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/chef_server_universe.json +56 -56
- data/spec/unit/fixtures/cookbooks_api/pruned_chef_server_universe.json +30 -30
- 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 +33 -33
- 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/generator_spec.rb +119 -119
- data/spec/unit/pager_spec.rb +117 -117
- data/spec/unit/policyfile/artifactory_cookbook_source_spec.rb +59 -59
- data/spec/unit/policyfile/attribute_merge_checker_spec.rb +80 -80
- data/spec/unit/policyfile/chef_repo_cookbook_source_spec.rb +93 -93
- data/spec/unit/policyfile/chef_server_cookbook_source_spec.rb +55 -55
- data/spec/unit/policyfile/chef_server_lock_fetcher_spec.rb +161 -161
- data/spec/unit/policyfile/community_cookbook_source_spec.rb +83 -83
- data/spec/unit/policyfile/comparison_base_spec.rb +340 -340
- data/spec/unit/policyfile/cookbook_location_specification_spec.rb +347 -347
- data/spec/unit/policyfile/cookbook_locks_spec.rb +527 -527
- data/spec/unit/policyfile/delivery_supermarket_source_spec.rb +129 -129
- data/spec/unit/policyfile/differ_spec.rb +686 -686
- data/spec/unit/policyfile/git_lock_fetcher_spec.rb +155 -0
- data/spec/unit/policyfile/included_policies_cookbook_source_spec.rb +242 -242
- data/spec/unit/policyfile/lister_spec.rb +268 -268
- data/spec/unit/policyfile/local_lock_fetcher_spec.rb +173 -173
- data/spec/unit/policyfile/lock_applier_spec.rb +100 -100
- data/spec/unit/policyfile/null_cookbook_source_spec.rb +34 -34
- data/spec/unit/policyfile/read_cookbook_for_compat_mode_upload_spec.rb +92 -92
- data/spec/unit/policyfile/reports/install_spec.rb +114 -114
- data/spec/unit/policyfile/reports/upload_spec.rb +94 -94
- data/spec/unit/policyfile/solution_dependencies_spec.rb +170 -170
- data/spec/unit/policyfile/source_uri_spec.rb +36 -36
- data/spec/unit/policyfile/storage_config_spec.rb +180 -180
- data/spec/unit/policyfile/undo_record_spec.rb +258 -258
- data/spec/unit/policyfile/undo_stack_spec.rb +265 -265
- data/spec/unit/policyfile/uploader_spec.rb +409 -409
- data/spec/unit/policyfile_demands_spec.rb +1197 -1197
- data/spec/unit/policyfile_evaluation_spec.rb +628 -638
- data/spec/unit/policyfile_includes_dsl_spec.rb +159 -159
- data/spec/unit/policyfile_includes_spec.rb +720 -720
- data/spec/unit/policyfile_install_with_includes_spec.rb +232 -232
- data/spec/unit/policyfile_lock_build_spec.rb +1065 -1065
- data/spec/unit/policyfile_lock_install_spec.rb +137 -137
- data/spec/unit/policyfile_lock_serialization_spec.rb +424 -424
- data/spec/unit/policyfile_lock_validation_spec.rb +608 -608
- data/spec/unit/policyfile_services/clean_policies_spec.rb +236 -236
- data/spec/unit/policyfile_services/clean_policy_cookbooks_spec.rb +272 -272
- data/spec/unit/policyfile_services/export_repo_spec.rb +473 -478
- data/spec/unit/policyfile_services/install_spec.rb +209 -209
- data/spec/unit/policyfile_services/push_archive_spec.rb +359 -374
- data/spec/unit/policyfile_services/push_spec.rb +249 -249
- data/spec/unit/policyfile_services/rm_policy_group_spec.rb +237 -237
- data/spec/unit/policyfile_services/rm_policy_spec.rb +263 -263
- data/spec/unit/policyfile_services/show_policy_spec.rb +887 -887
- data/spec/unit/policyfile_services/undelete_spec.rb +302 -302
- data/spec/unit/policyfile_services/update_attributes_spec.rb +229 -229
- data/spec/unit/policyfile_services/update_spec.rb +140 -140
- data/spec/unit/service_exception_inspectors/base_spec.rb +41 -41
- data/spec/unit/service_exception_inspectors/http_spec.rb +138 -138
- data/spec/unit/shell_out_spec.rb +34 -34
- data/tasks/announce.rb +57 -57
- data/tasks/bin/bundle-platform.bat +2 -2
- data/tasks/dependencies.rb +89 -89
- data/tasks/templates/prerelease.md.erb +35 -35
- data/tasks/templates/release.md.erb +34 -34
- data/warning.txt +9 -9
- metadata +9 -5
|
@@ -1,172 +1,172 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Copyright:: Copyright (c) 2014 Chef Software Inc.
|
|
3
|
-
# License:: Apache License, Version 2.0
|
|
4
|
-
#
|
|
5
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
# you may not use this file except in compliance with the License.
|
|
7
|
-
# You may obtain a copy of the License at
|
|
8
|
-
#
|
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
#
|
|
11
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
# See the License for the specific language governing permissions and
|
|
15
|
-
# limitations under the License.
|
|
16
|
-
#
|
|
17
|
-
|
|
18
|
-
require "spec_helper"
|
|
19
|
-
require "chef-dk/command/verify"
|
|
20
|
-
|
|
21
|
-
describe ChefDK::Command::Base do
|
|
22
|
-
class TestCommand < ChefDK::Command::Base
|
|
23
|
-
banner "use me please"
|
|
24
|
-
|
|
25
|
-
option :argue,
|
|
26
|
-
short: "-a ARG",
|
|
27
|
-
long: "--arg ARG",
|
|
28
|
-
description: "An option with a required argument"
|
|
29
|
-
|
|
30
|
-
option :user,
|
|
31
|
-
:short => "-u",
|
|
32
|
-
:long => "--user",
|
|
33
|
-
:description => "If the user exists",
|
|
34
|
-
:boolean => true
|
|
35
|
-
|
|
36
|
-
def run(params)
|
|
37
|
-
parse_options(params)
|
|
38
|
-
msg("thanks for passing me #{config[:user]}")
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
let(:stderr_io) { StringIO.new }
|
|
43
|
-
let(:stdout_io) { StringIO.new }
|
|
44
|
-
let(:command_instance) { TestCommand.new() }
|
|
45
|
-
|
|
46
|
-
def stdout
|
|
47
|
-
stdout_io.string
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def stderr
|
|
51
|
-
stderr_io.string
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
before do
|
|
55
|
-
allow(command_instance).to receive(:stdout).and_return(stdout_io)
|
|
56
|
-
allow(command_instance).to receive(:stderr).and_return(stderr_io)
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
def run_command(options)
|
|
60
|
-
command_instance.run_with_default_options(options)
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
it "should print the banner for -h" do
|
|
64
|
-
run_command(["-h"])
|
|
65
|
-
expect(stdout).to include("use me please\n")
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
it "should print the banner for --help" do
|
|
69
|
-
run_command(["--help"])
|
|
70
|
-
expect(stdout).to include("use me please\n")
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
it "prints the options along with the banner when displaying the help message" do
|
|
74
|
-
run_command(["--help"])
|
|
75
|
-
expect(stdout).to include("-u, --user If the user exists")
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
it "should print the version for -v" do
|
|
79
|
-
run_command(["-v"])
|
|
80
|
-
expect(stdout).to eq("Chef Development Kit Version: #{ChefDK::VERSION}\n")
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
it "should print the version for --version" do
|
|
84
|
-
run_command(["--version"])
|
|
85
|
-
expect(stdout).to eq("Chef Development Kit Version: #{ChefDK::VERSION}\n")
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
it "should run the command passing in the custom options for long custom options" do
|
|
89
|
-
run_command(["--user"])
|
|
90
|
-
expect(stdout).to eq("thanks for passing me true\n")
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
it "should run the command passing in the custom options for short custom options" do
|
|
94
|
-
run_command(["-u"])
|
|
95
|
-
expect(stdout).to eq("thanks for passing me true\n")
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
describe "when given invalid options" do
|
|
99
|
-
|
|
100
|
-
it "prints the help banner and exits gracefully" do
|
|
101
|
-
expect(run_command(%w{-foo})).to eq(1)
|
|
102
|
-
|
|
103
|
-
expect(stderr).to eq("ERROR: invalid option: -foo\n\n")
|
|
104
|
-
|
|
105
|
-
expected = <<-E
|
|
106
|
-
use me please
|
|
107
|
-
-a, --arg ARG An option with a required argument
|
|
108
|
-
-h, --help Show this message
|
|
109
|
-
-u, --user If the user exists
|
|
110
|
-
-v, --version Show chef version
|
|
111
|
-
|
|
112
|
-
E
|
|
113
|
-
expect(stdout).to eq(expected)
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
describe "when given an option that requires an argument with no argument" do
|
|
119
|
-
|
|
120
|
-
it "prints the help banner and exits gracefully" do
|
|
121
|
-
expect(run_command(%w{-a})).to eq(1)
|
|
122
|
-
|
|
123
|
-
expect(stderr).to eq("ERROR: missing argument: -a\n\n")
|
|
124
|
-
|
|
125
|
-
expected = <<-E
|
|
126
|
-
use me please
|
|
127
|
-
-a, --arg ARG An option with a required argument
|
|
128
|
-
-h, --help Show this message
|
|
129
|
-
-u, --user If the user exists
|
|
130
|
-
-v, --version Show chef version
|
|
131
|
-
|
|
132
|
-
E
|
|
133
|
-
expect(stdout).to eq(expected)
|
|
134
|
-
|
|
135
|
-
end
|
|
136
|
-
|
|
137
|
-
end
|
|
138
|
-
|
|
139
|
-
describe "when parsing Chef's configuration fails" do
|
|
140
|
-
|
|
141
|
-
let(:exception_message) do
|
|
142
|
-
<<-MESSAGE
|
|
143
|
-
You have an error in your config file /Users/ddeleo/.chef/config.rb (Chef::Exceptions::ConfigurationError)
|
|
144
|
-
|
|
145
|
-
Mixlib::Config::UnknownConfigOptionError: Cannot set unsupported config value foo.
|
|
146
|
-
/Users/person/.chef/config.rb:50:in `from_string'
|
|
147
|
-
Relevant file content:
|
|
148
|
-
49: chefdk.generator_cookbook "~/.chef/code_generator"
|
|
149
|
-
50: chefdk.foo "bar"
|
|
150
|
-
51:
|
|
151
|
-
|
|
152
|
-
MESSAGE
|
|
153
|
-
end
|
|
154
|
-
|
|
155
|
-
let(:exception) { Chef::Exceptions::ConfigurationError.new(exception_message) }
|
|
156
|
-
|
|
157
|
-
before do
|
|
158
|
-
allow(command_instance).to receive(:run).and_raise(exception)
|
|
159
|
-
end
|
|
160
|
-
|
|
161
|
-
it "exits non-zero" do
|
|
162
|
-
expect(run_command([])).to eq(1)
|
|
163
|
-
end
|
|
164
|
-
|
|
165
|
-
it "prints the exception message to stderr" do
|
|
166
|
-
run_command([])
|
|
167
|
-
expect(stderr).to include(exception_message)
|
|
168
|
-
end
|
|
169
|
-
|
|
170
|
-
end
|
|
171
|
-
|
|
172
|
-
end
|
|
1
|
+
#
|
|
2
|
+
# Copyright:: Copyright (c) 2014-2018 Chef Software Inc.
|
|
3
|
+
# License:: Apache License, Version 2.0
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
#
|
|
17
|
+
|
|
18
|
+
require "spec_helper"
|
|
19
|
+
require "chef-dk/command/verify"
|
|
20
|
+
|
|
21
|
+
describe ChefDK::Command::Base do
|
|
22
|
+
class TestCommand < ChefDK::Command::Base
|
|
23
|
+
banner "use me please"
|
|
24
|
+
|
|
25
|
+
option :argue,
|
|
26
|
+
short: "-a ARG",
|
|
27
|
+
long: "--arg ARG",
|
|
28
|
+
description: "An option with a required argument"
|
|
29
|
+
|
|
30
|
+
option :user,
|
|
31
|
+
:short => "-u",
|
|
32
|
+
:long => "--user",
|
|
33
|
+
:description => "If the user exists",
|
|
34
|
+
:boolean => true
|
|
35
|
+
|
|
36
|
+
def run(params)
|
|
37
|
+
parse_options(params)
|
|
38
|
+
msg("thanks for passing me #{config[:user]}")
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
let(:stderr_io) { StringIO.new }
|
|
43
|
+
let(:stdout_io) { StringIO.new }
|
|
44
|
+
let(:command_instance) { TestCommand.new() }
|
|
45
|
+
|
|
46
|
+
def stdout
|
|
47
|
+
stdout_io.string
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def stderr
|
|
51
|
+
stderr_io.string
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
before do
|
|
55
|
+
allow(command_instance).to receive(:stdout).and_return(stdout_io)
|
|
56
|
+
allow(command_instance).to receive(:stderr).and_return(stderr_io)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def run_command(options)
|
|
60
|
+
command_instance.run_with_default_options(options)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
it "should print the banner for -h" do
|
|
64
|
+
run_command(["-h"])
|
|
65
|
+
expect(stdout).to include("use me please\n")
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
it "should print the banner for --help" do
|
|
69
|
+
run_command(["--help"])
|
|
70
|
+
expect(stdout).to include("use me please\n")
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
it "prints the options along with the banner when displaying the help message" do
|
|
74
|
+
run_command(["--help"])
|
|
75
|
+
expect(stdout).to include("-u, --user If the user exists")
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it "should print the version for -v" do
|
|
79
|
+
run_command(["-v"])
|
|
80
|
+
expect(stdout).to eq("Chef Development Kit Version: #{ChefDK::VERSION}\n")
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
it "should print the version for --version" do
|
|
84
|
+
run_command(["--version"])
|
|
85
|
+
expect(stdout).to eq("Chef Development Kit Version: #{ChefDK::VERSION}\n")
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
it "should run the command passing in the custom options for long custom options" do
|
|
89
|
+
run_command(["--user"])
|
|
90
|
+
expect(stdout).to eq("thanks for passing me true\n")
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
it "should run the command passing in the custom options for short custom options" do
|
|
94
|
+
run_command(["-u"])
|
|
95
|
+
expect(stdout).to eq("thanks for passing me true\n")
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
describe "when given invalid options" do
|
|
99
|
+
|
|
100
|
+
it "prints the help banner and exits gracefully" do
|
|
101
|
+
expect(run_command(%w{-foo})).to eq(1)
|
|
102
|
+
|
|
103
|
+
expect(stderr).to eq("ERROR: invalid option: -foo\n\n")
|
|
104
|
+
|
|
105
|
+
expected = <<-E
|
|
106
|
+
use me please
|
|
107
|
+
-a, --arg ARG An option with a required argument
|
|
108
|
+
-h, --help Show this message
|
|
109
|
+
-u, --user If the user exists
|
|
110
|
+
-v, --version Show chef version
|
|
111
|
+
|
|
112
|
+
E
|
|
113
|
+
expect(stdout).to eq(expected)
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
describe "when given an option that requires an argument with no argument" do
|
|
119
|
+
|
|
120
|
+
it "prints the help banner and exits gracefully" do
|
|
121
|
+
expect(run_command(%w{-a})).to eq(1)
|
|
122
|
+
|
|
123
|
+
expect(stderr).to eq("ERROR: missing argument: -a\n\n")
|
|
124
|
+
|
|
125
|
+
expected = <<-E
|
|
126
|
+
use me please
|
|
127
|
+
-a, --arg ARG An option with a required argument
|
|
128
|
+
-h, --help Show this message
|
|
129
|
+
-u, --user If the user exists
|
|
130
|
+
-v, --version Show chef version
|
|
131
|
+
|
|
132
|
+
E
|
|
133
|
+
expect(stdout).to eq(expected)
|
|
134
|
+
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
describe "when parsing Chef's configuration fails" do
|
|
140
|
+
|
|
141
|
+
let(:exception_message) do
|
|
142
|
+
<<-MESSAGE
|
|
143
|
+
You have an error in your config file /Users/ddeleo/.chef/config.rb (Chef::Exceptions::ConfigurationError)
|
|
144
|
+
|
|
145
|
+
Mixlib::Config::UnknownConfigOptionError: Cannot set unsupported config value foo.
|
|
146
|
+
/Users/person/.chef/config.rb:50:in `from_string'
|
|
147
|
+
Relevant file content:
|
|
148
|
+
49: chefdk.generator_cookbook "~/.chef/code_generator"
|
|
149
|
+
50: chefdk.foo "bar"
|
|
150
|
+
51:
|
|
151
|
+
|
|
152
|
+
MESSAGE
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
let(:exception) { Chef::Exceptions::ConfigurationError.new(exception_message) }
|
|
156
|
+
|
|
157
|
+
before do
|
|
158
|
+
allow(command_instance).to receive(:run).and_raise(exception)
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
it "exits non-zero" do
|
|
162
|
+
expect(run_command([])).to eq(1)
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
it "prints the exception message to stderr" do
|
|
166
|
+
run_command([])
|
|
167
|
+
expect(stderr).to include(exception_message)
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
end
|
|
@@ -1,180 +1,180 @@
|
|
|
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
|
|
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
|