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,153 +1,153 @@
|
|
|
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/push_archive"
|
|
21
|
-
|
|
22
|
-
describe ChefDK::Command::PushArchive do
|
|
23
|
-
|
|
24
|
-
subject(:command) { described_class.new }
|
|
25
|
-
|
|
26
|
-
let(:policy_group) { "staging" }
|
|
27
|
-
|
|
28
|
-
let(:archive_path) { "mypolicy-abc123.tgz" }
|
|
29
|
-
|
|
30
|
-
it_behaves_like "a command with a UI object"
|
|
31
|
-
|
|
32
|
-
let(:ui) { TestHelpers::TestUI.new }
|
|
33
|
-
|
|
34
|
-
let(:chef_config_loader) { instance_double("Chef::WorkstationConfigLoader") }
|
|
35
|
-
|
|
36
|
-
let(:config_arg) { nil }
|
|
37
|
-
|
|
38
|
-
before do
|
|
39
|
-
allow(Chef::WorkstationConfigLoader).to receive(:new).with(config_arg).and_return(chef_config_loader)
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
describe "evaluating params" do
|
|
43
|
-
|
|
44
|
-
before do
|
|
45
|
-
command.ui = ui
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
context "when given no arguments" do
|
|
49
|
-
|
|
50
|
-
it "prints the banner message and exits non-zero" do
|
|
51
|
-
expect(command.run([])).to eq(1)
|
|
52
|
-
expect(ui.output).to include(described_class.banner)
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
context "when the archive path is omitted" do
|
|
58
|
-
|
|
59
|
-
it "prints the banner message and exits non-zero" do
|
|
60
|
-
expect(command.run([policy_group])).to eq(1)
|
|
61
|
-
expect(ui.output).to include(described_class.banner)
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
context "when all required arguments are given" do
|
|
67
|
-
|
|
68
|
-
let(:params) { [ policy_group, archive_path ] }
|
|
69
|
-
|
|
70
|
-
before do
|
|
71
|
-
command.apply_params!(params)
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
it "disables debug by default" do
|
|
75
|
-
expect(command.debug?).to be(false)
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
context "and debug mode is set" do
|
|
79
|
-
|
|
80
|
-
let(:params) { [ policy_group, archive_path, "-D" ] }
|
|
81
|
-
|
|
82
|
-
it "enables debug messages" do
|
|
83
|
-
expect(command.debug?).to be(true)
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
describe "configuring settings that depend on the chef config file" do
|
|
89
|
-
|
|
90
|
-
before do
|
|
91
|
-
expect(chef_config_loader).to receive(:load)
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
it "sets the policy group" do
|
|
95
|
-
expect(command.policy_group).to eq(policy_group)
|
|
96
|
-
expect(command.push_archive_service.policy_group).to eq(policy_group)
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
it "sets the path to the archive file" do
|
|
100
|
-
expect(command.archive_path).to eq(archive_path)
|
|
101
|
-
expect(command.push_archive_service.archive_file).to eq(File.expand_path(archive_path))
|
|
102
|
-
end
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
describe "running the push operation" do
|
|
110
|
-
|
|
111
|
-
let(:push_archive_service) { instance_double("ChefDK::PolicyfileServices::PushArchive") }
|
|
112
|
-
|
|
113
|
-
let(:params) { [ policy_group, archive_path ] }
|
|
114
|
-
|
|
115
|
-
before do
|
|
116
|
-
allow(command).to receive(:push_archive_service).and_return(push_archive_service)
|
|
117
|
-
command.ui = ui
|
|
118
|
-
end
|
|
119
|
-
|
|
120
|
-
context "when the push is successful" do
|
|
121
|
-
|
|
122
|
-
it "exits 0" do
|
|
123
|
-
expect(push_archive_service).to receive(:run)
|
|
124
|
-
expect(command.run(params)).to eq(0)
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
end
|
|
128
|
-
|
|
129
|
-
context "when the push in not successful" do
|
|
130
|
-
|
|
131
|
-
let(:backtrace) { caller[0...3] }
|
|
132
|
-
|
|
133
|
-
let(:cause) do
|
|
134
|
-
e = StandardError.new("some operation failed")
|
|
135
|
-
e.set_backtrace(backtrace)
|
|
136
|
-
e
|
|
137
|
-
end
|
|
138
|
-
|
|
139
|
-
let(:exception) do
|
|
140
|
-
ChefDK::PolicyfilePushArchiveError.new("push failed", cause)
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
before do
|
|
144
|
-
expect(push_archive_service).to receive(:run).and_raise(exception)
|
|
145
|
-
end
|
|
146
|
-
|
|
147
|
-
it "exits non-zero" do
|
|
148
|
-
expect(command.run(params)).to eq(1)
|
|
149
|
-
end
|
|
150
|
-
|
|
151
|
-
end
|
|
152
|
-
end
|
|
153
|
-
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/push_archive"
|
|
21
|
+
|
|
22
|
+
describe ChefDK::Command::PushArchive do
|
|
23
|
+
|
|
24
|
+
subject(:command) { described_class.new }
|
|
25
|
+
|
|
26
|
+
let(:policy_group) { "staging" }
|
|
27
|
+
|
|
28
|
+
let(:archive_path) { "mypolicy-abc123.tgz" }
|
|
29
|
+
|
|
30
|
+
it_behaves_like "a command with a UI object"
|
|
31
|
+
|
|
32
|
+
let(:ui) { TestHelpers::TestUI.new }
|
|
33
|
+
|
|
34
|
+
let(:chef_config_loader) { instance_double("Chef::WorkstationConfigLoader") }
|
|
35
|
+
|
|
36
|
+
let(:config_arg) { nil }
|
|
37
|
+
|
|
38
|
+
before do
|
|
39
|
+
allow(Chef::WorkstationConfigLoader).to receive(:new).with(config_arg).and_return(chef_config_loader)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
describe "evaluating params" do
|
|
43
|
+
|
|
44
|
+
before do
|
|
45
|
+
command.ui = ui
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
context "when given no arguments" do
|
|
49
|
+
|
|
50
|
+
it "prints the banner message and exits non-zero" do
|
|
51
|
+
expect(command.run([])).to eq(1)
|
|
52
|
+
expect(ui.output).to include(described_class.banner)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
context "when the archive path is omitted" do
|
|
58
|
+
|
|
59
|
+
it "prints the banner message and exits non-zero" do
|
|
60
|
+
expect(command.run([policy_group])).to eq(1)
|
|
61
|
+
expect(ui.output).to include(described_class.banner)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
context "when all required arguments are given" do
|
|
67
|
+
|
|
68
|
+
let(:params) { [ policy_group, archive_path ] }
|
|
69
|
+
|
|
70
|
+
before do
|
|
71
|
+
command.apply_params!(params)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
it "disables debug by default" do
|
|
75
|
+
expect(command.debug?).to be(false)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
context "and debug mode is set" do
|
|
79
|
+
|
|
80
|
+
let(:params) { [ policy_group, archive_path, "-D" ] }
|
|
81
|
+
|
|
82
|
+
it "enables debug messages" do
|
|
83
|
+
expect(command.debug?).to be(true)
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
describe "configuring settings that depend on the chef config file" do
|
|
89
|
+
|
|
90
|
+
before do
|
|
91
|
+
expect(chef_config_loader).to receive(:load)
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
it "sets the policy group" do
|
|
95
|
+
expect(command.policy_group).to eq(policy_group)
|
|
96
|
+
expect(command.push_archive_service.policy_group).to eq(policy_group)
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
it "sets the path to the archive file" do
|
|
100
|
+
expect(command.archive_path).to eq(archive_path)
|
|
101
|
+
expect(command.push_archive_service.archive_file).to eq(File.expand_path(archive_path))
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
describe "running the push operation" do
|
|
110
|
+
|
|
111
|
+
let(:push_archive_service) { instance_double("ChefDK::PolicyfileServices::PushArchive") }
|
|
112
|
+
|
|
113
|
+
let(:params) { [ policy_group, archive_path ] }
|
|
114
|
+
|
|
115
|
+
before do
|
|
116
|
+
allow(command).to receive(:push_archive_service).and_return(push_archive_service)
|
|
117
|
+
command.ui = ui
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
context "when the push is successful" do
|
|
121
|
+
|
|
122
|
+
it "exits 0" do
|
|
123
|
+
expect(push_archive_service).to receive(:run)
|
|
124
|
+
expect(command.run(params)).to eq(0)
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
context "when the push in not successful" do
|
|
130
|
+
|
|
131
|
+
let(:backtrace) { caller[0...3] }
|
|
132
|
+
|
|
133
|
+
let(:cause) do
|
|
134
|
+
e = StandardError.new("some operation failed")
|
|
135
|
+
e.set_backtrace(backtrace)
|
|
136
|
+
e
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
let(:exception) do
|
|
140
|
+
ChefDK::PolicyfilePushArchiveError.new("push failed", cause)
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
before do
|
|
144
|
+
expect(push_archive_service).to receive(:run).and_raise(exception)
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
it "exits non-zero" do
|
|
148
|
+
expect(command.run(params)).to eq(1)
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
end
|
|
@@ -1,198 +1,198 @@
|
|
|
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 "shared/command_with_ui_object"
|
|
20
|
-
require "chef-dk/command/push"
|
|
21
|
-
|
|
22
|
-
describe ChefDK::Command::Push do
|
|
23
|
-
|
|
24
|
-
it_behaves_like "a command with a UI object"
|
|
25
|
-
|
|
26
|
-
let(:policy_group) { "dev" }
|
|
27
|
-
|
|
28
|
-
let(:params) { [policy_group] }
|
|
29
|
-
|
|
30
|
-
let(:command) do
|
|
31
|
-
described_class.new
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
let(:push_service) { instance_double(ChefDK::PolicyfileServices::Push) }
|
|
35
|
-
|
|
36
|
-
let(:chef_config_loader) { instance_double("Chef::WorkstationConfigLoader") }
|
|
37
|
-
|
|
38
|
-
let(:chef_config) { double("Chef::Config") }
|
|
39
|
-
|
|
40
|
-
let(:config_arg) { nil }
|
|
41
|
-
|
|
42
|
-
before do
|
|
43
|
-
stub_const("Chef::Config", chef_config)
|
|
44
|
-
allow(Chef::WorkstationConfigLoader).to receive(:new).with(config_arg).and_return(chef_config_loader)
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
context "after evaluating params" do
|
|
48
|
-
|
|
49
|
-
before do
|
|
50
|
-
command.apply_params!(params)
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
it "disables debug by default" do
|
|
54
|
-
expect(command.debug?).to be(false)
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
describe "when configuring components that depend on chef config" do
|
|
58
|
-
|
|
59
|
-
before do
|
|
60
|
-
expect(chef_config_loader).to receive(:load)
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
it "reads the chef/knife config" do
|
|
64
|
-
expect(command.chef_config).to eq(chef_config)
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
it "configures the Push service" do
|
|
68
|
-
expect(ChefDK::PolicyfileServices::Push).to receive(:new).
|
|
69
|
-
with(policyfile: nil, ui: command.ui, policy_group: policy_group, config: chef_config, root_dir: Dir.pwd).
|
|
70
|
-
and_return(push_service)
|
|
71
|
-
expect(command.push).to eq(push_service)
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
context "and an explicit Policyfile is given" do
|
|
75
|
-
|
|
76
|
-
let(:params) { [policy_group, "MyPolicy.rb"] }
|
|
77
|
-
|
|
78
|
-
it "configures the Push service with the given Policyfile" do
|
|
79
|
-
expect(ChefDK::PolicyfileServices::Push).to receive(:new).
|
|
80
|
-
with(policyfile: "MyPolicy.rb", ui: command.ui, policy_group: policy_group, config: chef_config, root_dir: Dir.pwd).
|
|
81
|
-
and_return(push_service)
|
|
82
|
-
expect(command.push).to eq(push_service)
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
end
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
context "when debug mode is set" do
|
|
89
|
-
|
|
90
|
-
let(:params) { [ policy_group, "-D" ] }
|
|
91
|
-
|
|
92
|
-
it "enables debug" do
|
|
93
|
-
expect(command.debug?).to be(true)
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
describe "running the push operation" do
|
|
101
|
-
|
|
102
|
-
let(:ui) { TestHelpers::TestUI.new }
|
|
103
|
-
|
|
104
|
-
before do
|
|
105
|
-
command.ui = ui
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
context "when invoked without arguments" do
|
|
109
|
-
|
|
110
|
-
let(:params) { [] }
|
|
111
|
-
|
|
112
|
-
it "prints the banner and returns 1" do
|
|
113
|
-
expect(command.run).to eq(1)
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
context "with valid arguments" do
|
|
119
|
-
|
|
120
|
-
before do
|
|
121
|
-
expect(command).to receive(:push).and_return(push_service)
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
context "when the push is successful" do
|
|
125
|
-
|
|
126
|
-
before do
|
|
127
|
-
expect(push_service).to receive(:run)
|
|
128
|
-
end
|
|
129
|
-
|
|
130
|
-
it "returns 0" do
|
|
131
|
-
expect(command.run(params)).to eq(0)
|
|
132
|
-
end
|
|
133
|
-
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
context "when the push operation raises an exception" do
|
|
137
|
-
|
|
138
|
-
let(:backtrace) { caller[0...3] }
|
|
139
|
-
|
|
140
|
-
let(:cause) do
|
|
141
|
-
e = StandardError.new("some operation failed")
|
|
142
|
-
e.set_backtrace(backtrace)
|
|
143
|
-
e
|
|
144
|
-
end
|
|
145
|
-
|
|
146
|
-
let(:exception) do
|
|
147
|
-
ChefDK::PolicyfilePushError.new("push failed", cause)
|
|
148
|
-
end
|
|
149
|
-
|
|
150
|
-
before do
|
|
151
|
-
expect(push_service).to receive(:run).and_raise(exception)
|
|
152
|
-
end
|
|
153
|
-
|
|
154
|
-
it "exits 1" do
|
|
155
|
-
expect(command.run(params)).to eq(1)
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
it "describes the error" do
|
|
159
|
-
command.run(params)
|
|
160
|
-
|
|
161
|
-
expected_output = <<-E
|
|
162
|
-
Error: push failed
|
|
163
|
-
Reason: (StandardError) some operation failed
|
|
164
|
-
|
|
165
|
-
E
|
|
166
|
-
|
|
167
|
-
expect(ui.output).to eq(expected_output)
|
|
168
|
-
end
|
|
169
|
-
|
|
170
|
-
context "when debug is enabled" do
|
|
171
|
-
|
|
172
|
-
before do
|
|
173
|
-
params << "-D"
|
|
174
|
-
end
|
|
175
|
-
|
|
176
|
-
it "includes the backtrace in the error" do
|
|
177
|
-
|
|
178
|
-
command.run(params)
|
|
179
|
-
|
|
180
|
-
expected_output = <<-E
|
|
181
|
-
Error: push failed
|
|
182
|
-
Reason: (StandardError) some operation failed
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
E
|
|
186
|
-
expected_output << backtrace.join("\n") << "\n"
|
|
187
|
-
|
|
188
|
-
expect(ui.output).to eq(expected_output)
|
|
189
|
-
end
|
|
190
|
-
|
|
191
|
-
end
|
|
192
|
-
|
|
193
|
-
end
|
|
194
|
-
end
|
|
195
|
-
|
|
196
|
-
end
|
|
197
|
-
|
|
198
|
-
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 "shared/command_with_ui_object"
|
|
20
|
+
require "chef-dk/command/push"
|
|
21
|
+
|
|
22
|
+
describe ChefDK::Command::Push do
|
|
23
|
+
|
|
24
|
+
it_behaves_like "a command with a UI object"
|
|
25
|
+
|
|
26
|
+
let(:policy_group) { "dev" }
|
|
27
|
+
|
|
28
|
+
let(:params) { [policy_group] }
|
|
29
|
+
|
|
30
|
+
let(:command) do
|
|
31
|
+
described_class.new
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
let(:push_service) { instance_double(ChefDK::PolicyfileServices::Push) }
|
|
35
|
+
|
|
36
|
+
let(:chef_config_loader) { instance_double("Chef::WorkstationConfigLoader") }
|
|
37
|
+
|
|
38
|
+
let(:chef_config) { double("Chef::Config") }
|
|
39
|
+
|
|
40
|
+
let(:config_arg) { nil }
|
|
41
|
+
|
|
42
|
+
before do
|
|
43
|
+
stub_const("Chef::Config", chef_config)
|
|
44
|
+
allow(Chef::WorkstationConfigLoader).to receive(:new).with(config_arg).and_return(chef_config_loader)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
context "after evaluating params" do
|
|
48
|
+
|
|
49
|
+
before do
|
|
50
|
+
command.apply_params!(params)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it "disables debug by default" do
|
|
54
|
+
expect(command.debug?).to be(false)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
describe "when configuring components that depend on chef config" do
|
|
58
|
+
|
|
59
|
+
before do
|
|
60
|
+
expect(chef_config_loader).to receive(:load)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
it "reads the chef/knife config" do
|
|
64
|
+
expect(command.chef_config).to eq(chef_config)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
it "configures the Push service" do
|
|
68
|
+
expect(ChefDK::PolicyfileServices::Push).to receive(:new).
|
|
69
|
+
with(policyfile: nil, ui: command.ui, policy_group: policy_group, config: chef_config, root_dir: Dir.pwd).
|
|
70
|
+
and_return(push_service)
|
|
71
|
+
expect(command.push).to eq(push_service)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
context "and an explicit Policyfile is given" do
|
|
75
|
+
|
|
76
|
+
let(:params) { [policy_group, "MyPolicy.rb"] }
|
|
77
|
+
|
|
78
|
+
it "configures the Push service with the given Policyfile" do
|
|
79
|
+
expect(ChefDK::PolicyfileServices::Push).to receive(:new).
|
|
80
|
+
with(policyfile: "MyPolicy.rb", ui: command.ui, policy_group: policy_group, config: chef_config, root_dir: Dir.pwd).
|
|
81
|
+
and_return(push_service)
|
|
82
|
+
expect(command.push).to eq(push_service)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
context "when debug mode is set" do
|
|
89
|
+
|
|
90
|
+
let(:params) { [ policy_group, "-D" ] }
|
|
91
|
+
|
|
92
|
+
it "enables debug" do
|
|
93
|
+
expect(command.debug?).to be(true)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
describe "running the push operation" do
|
|
101
|
+
|
|
102
|
+
let(:ui) { TestHelpers::TestUI.new }
|
|
103
|
+
|
|
104
|
+
before do
|
|
105
|
+
command.ui = ui
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
context "when invoked without arguments" do
|
|
109
|
+
|
|
110
|
+
let(:params) { [] }
|
|
111
|
+
|
|
112
|
+
it "prints the banner and returns 1" do
|
|
113
|
+
expect(command.run).to eq(1)
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
context "with valid arguments" do
|
|
119
|
+
|
|
120
|
+
before do
|
|
121
|
+
expect(command).to receive(:push).and_return(push_service)
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
context "when the push is successful" do
|
|
125
|
+
|
|
126
|
+
before do
|
|
127
|
+
expect(push_service).to receive(:run)
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
it "returns 0" do
|
|
131
|
+
expect(command.run(params)).to eq(0)
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
context "when the push operation raises an exception" do
|
|
137
|
+
|
|
138
|
+
let(:backtrace) { caller[0...3] }
|
|
139
|
+
|
|
140
|
+
let(:cause) do
|
|
141
|
+
e = StandardError.new("some operation failed")
|
|
142
|
+
e.set_backtrace(backtrace)
|
|
143
|
+
e
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
let(:exception) do
|
|
147
|
+
ChefDK::PolicyfilePushError.new("push failed", cause)
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
before do
|
|
151
|
+
expect(push_service).to receive(:run).and_raise(exception)
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
it "exits 1" do
|
|
155
|
+
expect(command.run(params)).to eq(1)
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
it "describes the error" do
|
|
159
|
+
command.run(params)
|
|
160
|
+
|
|
161
|
+
expected_output = <<-E
|
|
162
|
+
Error: push failed
|
|
163
|
+
Reason: (StandardError) some operation failed
|
|
164
|
+
|
|
165
|
+
E
|
|
166
|
+
|
|
167
|
+
expect(ui.output).to eq(expected_output)
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
context "when debug is enabled" do
|
|
171
|
+
|
|
172
|
+
before do
|
|
173
|
+
params << "-D"
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
it "includes the backtrace in the error" do
|
|
177
|
+
|
|
178
|
+
command.run(params)
|
|
179
|
+
|
|
180
|
+
expected_output = <<-E
|
|
181
|
+
Error: push failed
|
|
182
|
+
Reason: (StandardError) some operation failed
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
E
|
|
186
|
+
expected_output << backtrace.join("\n") << "\n"
|
|
187
|
+
|
|
188
|
+
expect(ui.output).to eq(expected_output)
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
end
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
end
|