chef-dk 0.13.21 → 0.14.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +186 -186
- data/Gemfile +37 -14
- data/Gemfile.lock +178 -72
- data/LICENSE +201 -201
- data/README.md +11 -148
- data/acceptance/.shared/kitchen_acceptance/.kitchen.digitalocean.yml +27 -27
- data/acceptance/.shared/kitchen_acceptance/.kitchen.ec2.yml +288 -288
- data/acceptance/.shared/kitchen_acceptance/.kitchen.vagrant.yml +52 -52
- data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +51 -51
- data/acceptance/.shared/kitchen_acceptance/metadata.rb +1 -1
- data/acceptance/Gemfile +2 -1
- data/acceptance/Gemfile.lock +39 -42
- 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/lib/chef-dk.rb +19 -19
- data/lib/chef-dk/authenticated_http.rb +40 -40
- data/lib/chef-dk/chef_runner.rb +107 -107
- data/lib/chef-dk/cli.rb +200 -200
- data/lib/chef-dk/command/base.rb +79 -79
- data/lib/chef-dk/command/clean_policy_cookbooks.rb +116 -116
- data/lib/chef-dk/command/clean_policy_revisions.rb +113 -113
- data/lib/chef-dk/command/delete_policy.rb +122 -122
- data/lib/chef-dk/command/delete_policy_group.rb +122 -122
- data/lib/chef-dk/command/diff.rb +316 -316
- data/lib/chef-dk/command/env.rb +90 -90
- data/lib/chef-dk/command/exec.rb +45 -45
- data/lib/chef-dk/command/export.rb +157 -157
- data/lib/chef-dk/command/gem.rb +47 -47
- data/lib/chef-dk/command/generate.rb +120 -120
- data/lib/chef-dk/command/generator_commands.rb +83 -80
- data/lib/chef-dk/command/generator_commands/app.rb +107 -107
- data/lib/chef-dk/command/generator_commands/attribute.rb +37 -37
- data/lib/chef-dk/command/generator_commands/base.rb +148 -148
- data/lib/chef-dk/command/generator_commands/cookbook.rb +153 -153
- data/lib/chef-dk/command/generator_commands/cookbook_code_file.rb +100 -100
- data/lib/chef-dk/command/generator_commands/cookbook_file.rb +45 -45
- data/lib/chef-dk/command/generator_commands/generator_generator.rb +177 -177
- data/lib/chef-dk/command/generator_commands/lwrp.rb +36 -36
- data/lib/chef-dk/command/generator_commands/policyfile.rb +127 -127
- data/lib/chef-dk/command/generator_commands/recipe.rb +36 -36
- data/lib/chef-dk/command/generator_commands/repo.rb +125 -125
- data/lib/chef-dk/command/generator_commands/template.rb +46 -46
- data/lib/chef-dk/command/install.rb +121 -121
- data/lib/chef-dk/command/provision.rb +438 -438
- data/lib/chef-dk/command/push.rb +118 -118
- data/lib/chef-dk/command/push_archive.rb +126 -126
- data/lib/chef-dk/command/shell_init.rb +180 -180
- data/lib/chef-dk/command/show_policy.rb +165 -165
- data/lib/chef-dk/command/undelete.rb +155 -155
- data/lib/chef-dk/command/update.rb +148 -148
- data/lib/chef-dk/command/verify.rb +106 -29
- 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 +30 -1
- data/lib/chef-dk/configurable.rb +69 -69
- data/lib/chef-dk/cookbook_metadata.rb +45 -45
- data/lib/chef-dk/cookbook_omnifetch.rb +32 -32
- data/lib/chef-dk/cookbook_profiler/git.rb +151 -151
- data/lib/chef-dk/cookbook_profiler/identifiers.rb +72 -72
- data/lib/chef-dk/cookbook_profiler/null_scm.rb +32 -32
- data/lib/chef-dk/exceptions.rb +129 -129
- data/lib/chef-dk/generator.rb +163 -163
- data/lib/chef-dk/helpers.rb +159 -159
- data/lib/chef-dk/pager.rb +106 -106
- data/lib/chef-dk/policyfile/chef_repo_cookbook_source.rb +138 -138
- data/lib/chef-dk/policyfile/chef_server_cookbook_source.rb +54 -54
- data/lib/chef-dk/policyfile/community_cookbook_source.rb +97 -97
- data/lib/chef-dk/policyfile/comparison_base.rb +124 -124
- data/lib/chef-dk/policyfile/cookbook_location_specification.rb +154 -154
- data/lib/chef-dk/policyfile/cookbook_locks.rb +466 -466
- data/lib/chef-dk/policyfile/cookbook_sources.rb +22 -22
- data/lib/chef-dk/policyfile/delivery_supermarket_source.rb +90 -90
- data/lib/chef-dk/policyfile/differ.rb +266 -266
- data/lib/chef-dk/policyfile/dsl.rb +261 -261
- data/lib/chef-dk/policyfile/lister.rb +232 -232
- data/lib/chef-dk/policyfile/null_cookbook_source.rb +45 -45
- data/lib/chef-dk/policyfile/read_cookbook_for_compat_mode_upload.rb +124 -124
- data/lib/chef-dk/policyfile/reports/install.rb +70 -70
- data/lib/chef-dk/policyfile/reports/table_printer.rb +58 -58
- data/lib/chef-dk/policyfile/reports/upload.rb +70 -70
- data/lib/chef-dk/policyfile/solution_dependencies.rb +298 -298
- data/lib/chef-dk/policyfile/storage_config.rb +100 -100
- data/lib/chef-dk/policyfile/undo_record.rb +142 -142
- data/lib/chef-dk/policyfile/undo_stack.rb +130 -130
- data/lib/chef-dk/policyfile/uploader.rb +213 -213
- data/lib/chef-dk/policyfile_compiler.rb +419 -419
- data/lib/chef-dk/policyfile_lock.rb +552 -552
- data/lib/chef-dk/policyfile_services/clean_policies.rb +95 -95
- data/lib/chef-dk/policyfile_services/clean_policy_cookbooks.rb +125 -125
- data/lib/chef-dk/policyfile_services/export_repo.rb +421 -421
- data/lib/chef-dk/policyfile_services/install.rb +126 -126
- data/lib/chef-dk/policyfile_services/push.rb +114 -114
- data/lib/chef-dk/policyfile_services/push_archive.rb +204 -204
- data/lib/chef-dk/policyfile_services/rm_policy.rb +142 -142
- data/lib/chef-dk/policyfile_services/rm_policy_group.rb +86 -86
- data/lib/chef-dk/policyfile_services/show_policy.rb +237 -237
- data/lib/chef-dk/policyfile_services/undelete.rb +108 -108
- data/lib/chef-dk/policyfile_services/update_attributes.rb +104 -104
- data/lib/chef-dk/service_exception_inspectors.rb +25 -25
- data/lib/chef-dk/service_exception_inspectors/base.rb +40 -40
- data/lib/chef-dk/service_exception_inspectors/http.rb +121 -121
- data/lib/chef-dk/service_exceptions.rb +143 -143
- data/lib/chef-dk/shell_out.rb +36 -36
- data/lib/chef-dk/skeletons/code_generator/files/default/Berksfile +3 -3
- data/lib/chef-dk/skeletons/code_generator/files/default/chefignore +102 -102
- data/lib/chef-dk/skeletons/code_generator/files/default/cookbook_readmes/README-policy.md +9 -9
- data/lib/chef-dk/skeletons/code_generator/files/default/cookbook_readmes/README.md +54 -54
- data/lib/chef-dk/skeletons/code_generator/files/default/gitignore +16 -16
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/README.md +28 -28
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/README.md +27 -27
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/attributes/default.rb +7 -7
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/metadata.rb +3 -3
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/recipes/default.rb +8 -8
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/README.md +58 -58
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/example/example_item.json +3 -3
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/dot-chef-repo.txt +6 -6
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/environments/README.md +9 -9
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/environments/example.json +12 -12
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/policies/README.md +24 -24
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/roles/README.md +9 -9
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/roles/example.json +12 -12
- data/lib/chef-dk/skeletons/code_generator/files/default/serverspec_spec_helper.rb +8 -8
- data/lib/chef-dk/skeletons/code_generator/files/default/spec_helper.rb +2 -2
- data/lib/chef-dk/skeletons/code_generator/files/default/spec_helper_policyfile.rb +2 -2
- data/lib/chef-dk/skeletons/code_generator/metadata.rb +8 -8
- data/lib/chef-dk/skeletons/code_generator/recipes/app.rb +97 -97
- data/lib/chef-dk/skeletons/code_generator/recipes/attribute.rb +12 -12
- data/lib/chef-dk/skeletons/code_generator/recipes/cookbook.rb +117 -117
- data/lib/chef-dk/skeletons/code_generator/recipes/cookbook_file.rb +24 -24
- data/lib/chef-dk/skeletons/code_generator/recipes/lwrp.rb +23 -23
- data/lib/chef-dk/skeletons/code_generator/recipes/policyfile.rb +8 -8
- data/lib/chef-dk/skeletons/code_generator/recipes/recipe.rb +27 -27
- data/lib/chef-dk/skeletons/code_generator/recipes/repo.rb +67 -67
- data/lib/chef-dk/skeletons/code_generator/recipes/template.rb +32 -32
- data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.all_rights.erb +3 -3
- data/lib/chef-dk/skeletons/code_generator/templates/default/{LICENSE.apache2.erb → 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/kitchen.yml.erb +21 -21
- data/lib/chef-dk/skeletons/code_generator/templates/default/kitchen_policyfile.yml.erb +32 -32
- data/lib/chef-dk/skeletons/code_generator/templates/default/metadata.rb.erb +7 -7
- data/lib/chef-dk/skeletons/code_generator/templates/default/recipe.rb.erb +5 -5
- data/lib/chef-dk/skeletons/code_generator/templates/default/recipe_spec.rb.erb +20 -20
- data/lib/chef-dk/skeletons/code_generator/templates/default/repo/gitignore.erb +11 -11
- data/lib/chef-dk/skeletons/code_generator/templates/default/serverspec_default_spec.rb.erb +9 -9
- data/lib/chef-dk/ui.rb +58 -58
- data/lib/chef-dk/version.rb +1 -1
- data/lib/kitchen/provisioner/policyfile_zero.rb +195 -195
- data/omnibus_overrides.rb +19 -11
- 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 +130 -130
- data/spec/shared/fixture_cookbook_checksums.rb +47 -47
- data/spec/shared/setup_git_cookbooks.rb +53 -53
- data/spec/spec_helper.rb +51 -51
- data/spec/test_helpers.rb +84 -84
- data/spec/unit/chef_runner_spec.rb +139 -139
- data/spec/unit/cli_spec.rb +357 -357
- data/spec/unit/command/base_spec.rb +173 -169
- data/spec/unit/command/clean_policy_cookbooks_spec.rb +181 -181
- data/spec/unit/command/clean_policy_revisions_spec.rb +181 -181
- data/spec/unit/command/delete_policy_group_spec.rb +207 -207
- data/spec/unit/command/delete_policy_spec.rb +207 -207
- data/spec/unit/command/diff_spec.rb +312 -312
- data/spec/unit/command/env_spec.rb +52 -52
- data/spec/unit/command/exec_spec.rb +179 -179
- data/spec/unit/command/export_spec.rb +200 -200
- data/spec/unit/command/generate_spec.rb +142 -142
- data/spec/unit/command/generator_commands/app_spec.rb +169 -169
- data/spec/unit/command/generator_commands/attribute_spec.rb +32 -32
- data/spec/unit/command/generator_commands/base_spec.rb +136 -136
- data/spec/unit/command/generator_commands/cookbook_file_spec.rb +32 -32
- data/spec/unit/command/generator_commands/cookbook_spec.rb +450 -450
- data/spec/unit/command/generator_commands/generator_generator_spec.rb +229 -229
- data/spec/unit/command/generator_commands/lwrp_spec.rb +32 -32
- data/spec/unit/command/generator_commands/policyfile_spec.rb +225 -225
- data/spec/unit/command/generator_commands/recipe_spec.rb +34 -34
- data/spec/unit/command/generator_commands/repo_spec.rb +374 -367
- data/spec/unit/command/generator_commands/template_spec.rb +32 -32
- data/spec/unit/command/install_spec.rb +179 -179
- data/spec/unit/command/provision_spec.rb +592 -592
- data/spec/unit/command/push_archive_spec.rb +153 -153
- data/spec/unit/command/push_spec.rb +199 -199
- data/spec/unit/command/shell_init_spec.rb +329 -329
- data/spec/unit/command/show_policy_spec.rb +235 -235
- data/spec/unit/command/undelete_spec.rb +246 -246
- data/spec/unit/command/update_spec.rb +275 -275
- data/spec/unit/command/verify_spec.rb +15 -6
- data/spec/unit/commands_map_spec.rb +57 -57
- data/spec/unit/component_test_spec.rb +128 -126
- data/spec/unit/configurable_spec.rb +41 -41
- data/spec/unit/cookbook_metadata_spec.rb +98 -98
- data/spec/unit/cookbook_profiler/git_spec.rb +176 -176
- data/spec/unit/cookbook_profiler/identifiers_spec.rb +83 -83
- data/spec/unit/fixtures/chef-runner-cookbooks/test_cookbook/recipes/recipe_one.rb +9 -9
- data/spec/unit/fixtures/chef-runner-cookbooks/test_cookbook/recipes/recipe_two.rb +9 -9
- data/spec/unit/fixtures/command/cli_test_command.rb +26 -26
- data/spec/unit/fixtures/command/explicit_path_example.rb +7 -7
- data/spec/unit/fixtures/configurable/test_config_loader.rb +5 -5
- data/spec/unit/fixtures/configurable/test_configurable.rb +10 -10
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/.kitchen.yml +16 -16
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/Berksfile +3 -3
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/README.md +4 -4
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/chefignore +96 -96
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/.kitchen.yml +16 -16
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/Berksfile +3 -3
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/README.md +4 -4
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/chefignore +96 -96
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/metadata.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/recipes/default.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/.kitchen.yml +16 -16
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/Berksfile +3 -3
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/README.md +4 -4
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/chefignore +96 -96
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/metadata.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/recipes/default.rb +8 -8
- data/spec/unit/fixtures/cookbooks_api/pruned_small_universe.json +1321 -1321
- data/spec/unit/fixtures/cookbooks_api/small_universe.json +2987 -2987
- data/spec/unit/fixtures/cookbooks_api/universe.json +1 -1
- data/spec/unit/fixtures/cookbooks_api/update_fixtures.rb +36 -36
- data/spec/unit/fixtures/dev_cookbooks/README.md +16 -16
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/berkshelf/integration_test +2 -2
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/berkshelf/verify_me +5 -5
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/chef/verify_me +3 -3
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/test-kitchen/verify_me +2 -2
- data/spec/unit/fixtures/example_cookbook/.gitignore +17 -17
- data/spec/unit/fixtures/example_cookbook/.kitchen.yml +16 -16
- data/spec/unit/fixtures/example_cookbook/Berksfile +3 -3
- data/spec/unit/fixtures/example_cookbook/README.md +4 -4
- data/spec/unit/fixtures/example_cookbook/chefignore +96 -96
- data/spec/unit/fixtures/example_cookbook/metadata.rb +8 -8
- data/spec/unit/fixtures/example_cookbook/recipes/default.rb +8 -8
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/.gitignore +17 -17
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/.kitchen.yml +16 -16
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/Berksfile +3 -3
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/README.md +4 -4
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/chefignore +96 -96
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/metadata.json +5 -5
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/recipes/default.rb +8 -8
- data/spec/unit/fixtures/example_cookbook_no_metadata/.gitignore +17 -17
- data/spec/unit/fixtures/example_cookbook_no_metadata/.kitchen.yml +16 -16
- data/spec/unit/fixtures/example_cookbook_no_metadata/Berksfile +3 -3
- data/spec/unit/fixtures/example_cookbook_no_metadata/README.md +4 -4
- data/spec/unit/fixtures/example_cookbook_no_metadata/chefignore +96 -96
- data/spec/unit/fixtures/example_cookbook_no_metadata/recipes/default.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/README.md +4 -4
- data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/chefignore +96 -96
- data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/metadata.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/recipes/default.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/Berksfile +3 -3
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/README.md +4 -4
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/chefignore +96 -96
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/metadata.rb +9 -9
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/recipes/default.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/.kitchen.yml +16 -16
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/Berksfile +3 -3
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/README.md +4 -4
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/chefignore +96 -96
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/metadata.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/recipes/default.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/metadata-missing/README.md +2 -2
- data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/.kitchen.yml +16 -16
- data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/README.md +4 -4
- data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb +8 -8
- data/spec/unit/generator_spec.rb +119 -120
- data/spec/unit/helpers_spec.rb +92 -92
- data/spec/unit/pager_spec.rb +119 -119
- data/spec/unit/policyfile/chef_repo_cookbook_source_spec.rb +93 -93
- data/spec/unit/policyfile/chef_server_cookbook_source_spec.rb +34 -34
- data/spec/unit/policyfile/community_cookbook_source_spec.rb +84 -84
- data/spec/unit/policyfile/comparison_base_spec.rb +343 -343
- data/spec/unit/policyfile/cookbook_location_specification_spec.rb +277 -277
- data/spec/unit/policyfile/cookbook_locks_spec.rb +529 -529
- data/spec/unit/policyfile/delivery_supermarket_source_spec.rb +130 -130
- data/spec/unit/policyfile/differ_spec.rb +687 -687
- data/spec/unit/policyfile/lister_spec.rb +272 -272
- data/spec/unit/policyfile/null_cookbook_source_spec.rb +35 -35
- data/spec/unit/policyfile/read_cookbook_for_compat_mode_upload_spec.rb +92 -92
- data/spec/unit/policyfile/reports/install_spec.rb +115 -115
- data/spec/unit/policyfile/reports/upload_spec.rb +96 -96
- data/spec/unit/policyfile/solution_dependencies_spec.rb +145 -145
- data/spec/unit/policyfile/storage_config_spec.rb +172 -172
- data/spec/unit/policyfile/undo_record_spec.rb +260 -260
- data/spec/unit/policyfile/undo_stack_spec.rb +266 -266
- data/spec/unit/policyfile/uploader_spec.rb +410 -410
- data/spec/unit/policyfile_demands_spec.rb +1203 -1203
- data/spec/unit/policyfile_evaluation_spec.rb +642 -642
- data/spec/unit/policyfile_lock_build_spec.rb +1056 -1056
- data/spec/unit/policyfile_lock_install_spec.rb +138 -138
- data/spec/unit/policyfile_lock_serialization_spec.rb +425 -425
- data/spec/unit/policyfile_lock_validation_spec.rb +611 -611
- data/spec/unit/policyfile_services/clean_policies_spec.rb +236 -236
- data/spec/unit/policyfile_services/clean_policy_cookbooks_spec.rb +275 -275
- data/spec/unit/policyfile_services/export_repo_spec.rb +481 -481
- data/spec/unit/policyfile_services/install_spec.rb +211 -211
- data/spec/unit/policyfile_services/push_archive_spec.rb +378 -378
- data/spec/unit/policyfile_services/push_spec.rb +233 -233
- data/spec/unit/policyfile_services/rm_policy_group_spec.rb +241 -241
- data/spec/unit/policyfile_services/rm_policy_spec.rb +266 -266
- data/spec/unit/policyfile_services/show_policy_spec.rb +889 -889
- data/spec/unit/policyfile_services/undelete_spec.rb +304 -304
- data/spec/unit/policyfile_services/update_attributes_spec.rb +217 -217
- data/spec/unit/service_exception_inspectors/base_spec.rb +43 -43
- data/spec/unit/service_exception_inspectors/http_spec.rb +140 -140
- data/spec/unit/shell_out_spec.rb +34 -34
- data/spec/unit/tasks/helpers_spec.rb +75 -0
- data/tasks/bin/bundle-platform +0 -0
- data/tasks/bin/bundle-platform.bat +0 -0
- data/tasks/bin/create-override-gemfile +110 -0
- data/tasks/bundle.rb +27 -11
- data/tasks/bundle_util.rb +6 -5
- data/tasks/dependencies.rb +97 -122
- data/tasks/gemfile_util.rb +357 -66
- data/tasks/helpers.rb +47 -0
- data/tasks/version.rb +1 -5
- data/version_policy.rb +66 -41
- data/warning.txt +9 -9
- metadata +7 -5
- data/Gemfile.windows +0 -34
- data/Gemfile.windows.lock +0 -936
|
@@ -1,329 +1,329 @@
|
|
|
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/shell_init'
|
|
20
|
-
|
|
21
|
-
describe ChefDK::Command::ShellInit do
|
|
22
|
-
|
|
23
|
-
let(:expected_path) { [omnibus_bin_dir, user_bin_dir, omnibus_embedded_bin_dir, ENV['PATH']].join(File::PATH_SEPARATOR) }
|
|
24
|
-
let(:stdout_io) { StringIO.new }
|
|
25
|
-
let(:stderr_io) { StringIO.new }
|
|
26
|
-
|
|
27
|
-
let(:command_instance) do
|
|
28
|
-
ChefDK::Command::ShellInit.new.tap do |c|
|
|
29
|
-
allow(c).to receive(:stdout).and_return(stdout_io)
|
|
30
|
-
allow(c).to receive(:stderr).and_return(stderr_io)
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
shared_context "shell init script" do |shell|
|
|
35
|
-
let(:user_bin_dir) { File.expand_path(File.join(Gem.user_dir, 'bin')) }
|
|
36
|
-
let(:expected_gem_root) { Gem.default_dir.to_s }
|
|
37
|
-
let(:expected_gem_home) { Gem.user_dir }
|
|
38
|
-
let(:expected_gem_path) { Gem.path.join(File::PATH_SEPARATOR) }
|
|
39
|
-
|
|
40
|
-
context "with no explicit omnibus directory" do
|
|
41
|
-
|
|
42
|
-
let(:omnibus_bin_dir) { "/foo/bin" }
|
|
43
|
-
let(:omnibus_embedded_bin_dir) { "/foo/embedded/bin" }
|
|
44
|
-
let(:argv) { [shell] }
|
|
45
|
-
|
|
46
|
-
before do
|
|
47
|
-
allow(command_instance).to receive(:omnibus_embedded_bin_dir).and_return(omnibus_embedded_bin_dir)
|
|
48
|
-
allow(command_instance).to receive(:omnibus_bin_dir).and_return(omnibus_bin_dir)
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
it "emits a script to add ChefDK's ruby to the shell environment" do
|
|
52
|
-
command_instance.run(argv)
|
|
53
|
-
expect(stdout_io.string).to include(expected_environment_commands)
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
it "does not emit any empty lines", :if => ["powershell", "posh"].include?(shell) do
|
|
57
|
-
command_instance.run(argv)
|
|
58
|
-
stdout_io.string.each_line do |s|
|
|
59
|
-
expect(s.strip).not_to be_empty
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
context "with an explicit omnibus directory as an argument" do
|
|
65
|
-
|
|
66
|
-
let(:omnibus_root) { File.join(fixtures_path, "eg_omnibus_dir/valid/") }
|
|
67
|
-
let(:omnibus_bin_dir) { File.join(omnibus_root, "bin") }
|
|
68
|
-
let(:omnibus_embedded_bin_dir) { File.join(omnibus_root, "embedded/bin") }
|
|
69
|
-
|
|
70
|
-
let(:argv) { [shell, "--omnibus-dir", omnibus_root] }
|
|
71
|
-
|
|
72
|
-
it "emits a script to add ChefDK's ruby to the shell environment" do
|
|
73
|
-
command_instance.run(argv)
|
|
74
|
-
expect(stdout_io.string).to include(expected_environment_commands)
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
it "does not emit any empty lines", :if => ["powershell", "posh"].include?(shell) do
|
|
78
|
-
command_instance.run(argv)
|
|
79
|
-
stdout_io.string.each_line do |s|
|
|
80
|
-
expect(s.strip).not_to be_empty
|
|
81
|
-
end
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
shared_examples "a posix shell script" do |shell|
|
|
87
|
-
before do
|
|
88
|
-
stub_const("File::PATH_SEPARATOR", ':')
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
let(:expected_environment_commands) do
|
|
92
|
-
<<-EOH
|
|
93
|
-
export PATH="#{expected_path}"
|
|
94
|
-
export GEM_ROOT="#{expected_gem_root}"
|
|
95
|
-
export GEM_HOME="#{expected_gem_home}"
|
|
96
|
-
export GEM_PATH="#{expected_gem_path}"
|
|
97
|
-
EOH
|
|
98
|
-
end
|
|
99
|
-
include_context "shell init script", shell
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
shared_examples "a powershell script" do |shell|
|
|
103
|
-
before do
|
|
104
|
-
stub_const("File::PATH_SEPARATOR", ';')
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
let(:expected_environment_commands) do
|
|
108
|
-
<<-EOH
|
|
109
|
-
$env:PATH="#{expected_path}"
|
|
110
|
-
$env:GEM_ROOT="#{expected_gem_root}"
|
|
111
|
-
$env:GEM_HOME="#{expected_gem_home}"
|
|
112
|
-
$env:GEM_PATH="#{expected_gem_path}"
|
|
113
|
-
EOH
|
|
114
|
-
end
|
|
115
|
-
include_context "shell init script", shell
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
context "for sh" do
|
|
119
|
-
it_behaves_like "a posix shell script", "sh"
|
|
120
|
-
end
|
|
121
|
-
|
|
122
|
-
context "for bash" do
|
|
123
|
-
it_behaves_like "a posix shell script", "bash"
|
|
124
|
-
|
|
125
|
-
describe "generating auto-complete" do
|
|
126
|
-
|
|
127
|
-
let(:command_descriptions) do
|
|
128
|
-
{
|
|
129
|
-
"exec" => "Runs the command in context of the embedded ruby",
|
|
130
|
-
"env" => "Prints environment variables used by ChefDK",
|
|
131
|
-
"gem" => "Runs the `gem` command in context of the embedded ruby",
|
|
132
|
-
"generate" => "Generate a new app, cookbook, or component"
|
|
133
|
-
}
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
let(:omnibus_bin_dir) { "/foo/bin" }
|
|
137
|
-
let(:omnibus_embedded_bin_dir) { "/foo/embedded/bin" }
|
|
138
|
-
|
|
139
|
-
let(:argv) { [ "bash" ] }
|
|
140
|
-
|
|
141
|
-
let(:expected_completion_function) do
|
|
142
|
-
<<-END_COMPLETION
|
|
143
|
-
_chef_comp() {
|
|
144
|
-
local COMMANDS="exec env gem generate"
|
|
145
|
-
COMPREPLY=($(compgen -W "$COMMANDS" -- ${COMP_WORDS[COMP_CWORD]} ))
|
|
146
|
-
}
|
|
147
|
-
complete -F _chef_comp chef
|
|
148
|
-
END_COMPLETION
|
|
149
|
-
end
|
|
150
|
-
|
|
151
|
-
before do
|
|
152
|
-
# Stub this or else we'd have to update the test every time a new command
|
|
153
|
-
# is added.
|
|
154
|
-
allow(command_instance.shell_completion_template_context).to receive(:commands).
|
|
155
|
-
and_return(command_descriptions)
|
|
156
|
-
|
|
157
|
-
allow(command_instance).to receive(:omnibus_embedded_bin_dir).and_return(omnibus_embedded_bin_dir)
|
|
158
|
-
allow(command_instance).to receive(:omnibus_bin_dir).and_return(omnibus_bin_dir)
|
|
159
|
-
end
|
|
160
|
-
|
|
161
|
-
it "generates a completion function for the chef command" do
|
|
162
|
-
command_instance.run(argv)
|
|
163
|
-
expect(stdout_io.string).to include(expected_completion_function)
|
|
164
|
-
end
|
|
165
|
-
|
|
166
|
-
end
|
|
167
|
-
end
|
|
168
|
-
|
|
169
|
-
context "for zsh" do
|
|
170
|
-
|
|
171
|
-
it_behaves_like "a posix shell script", "zsh"
|
|
172
|
-
|
|
173
|
-
describe "generating auto-complete" do
|
|
174
|
-
|
|
175
|
-
let(:command_descriptions) do
|
|
176
|
-
{
|
|
177
|
-
"exec" => "Runs the command in context of the embedded ruby",
|
|
178
|
-
"env" => "Prints environment variables used by ChefDK",
|
|
179
|
-
"gem" => "Runs the `gem` command in context of the embedded ruby",
|
|
180
|
-
"generate" => "Generate a new app, cookbook, or component"
|
|
181
|
-
}
|
|
182
|
-
end
|
|
183
|
-
|
|
184
|
-
let(:omnibus_bin_dir) { "/foo/bin" }
|
|
185
|
-
let(:omnibus_embedded_bin_dir) { "/foo/embedded/bin" }
|
|
186
|
-
|
|
187
|
-
let(:argv) { [ "zsh" ] }
|
|
188
|
-
|
|
189
|
-
let(:expected_completion_function) do
|
|
190
|
-
<<-END_COMPLETION
|
|
191
|
-
function _chef() {
|
|
192
|
-
|
|
193
|
-
local -a _1st_arguments
|
|
194
|
-
_1st_arguments=(
|
|
195
|
-
'exec:Runs the command in context of the embedded ruby'
|
|
196
|
-
'env:Prints environment variables used by ChefDK'
|
|
197
|
-
'gem:Runs the `gem` command in context of the embedded ruby'
|
|
198
|
-
'generate:Generate a new app, cookbook, or component'
|
|
199
|
-
)
|
|
200
|
-
|
|
201
|
-
_arguments \\
|
|
202
|
-
'(-v --version)'{-v,--version}'[version information]' \\
|
|
203
|
-
'*:: :->subcmds' && return 0
|
|
204
|
-
|
|
205
|
-
if (( CURRENT == 1 )); then
|
|
206
|
-
_describe -t commands "chef subcommand" _1st_arguments
|
|
207
|
-
return
|
|
208
|
-
fi
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
compdef _chef chef
|
|
212
|
-
|
|
213
|
-
END_COMPLETION
|
|
214
|
-
end
|
|
215
|
-
|
|
216
|
-
before do
|
|
217
|
-
# Stub this or else we'd have to update the test every time a new command
|
|
218
|
-
# is added.
|
|
219
|
-
allow(command_instance.shell_completion_template_context).to receive(:commands).
|
|
220
|
-
and_return(command_descriptions)
|
|
221
|
-
|
|
222
|
-
allow(command_instance).to receive(:omnibus_embedded_bin_dir).and_return(omnibus_embedded_bin_dir)
|
|
223
|
-
allow(command_instance).to receive(:omnibus_bin_dir).and_return(omnibus_bin_dir)
|
|
224
|
-
end
|
|
225
|
-
|
|
226
|
-
it "generates a completion function for the chef command" do
|
|
227
|
-
command_instance.run(argv)
|
|
228
|
-
expect(stdout_io.string).to include(expected_completion_function)
|
|
229
|
-
end
|
|
230
|
-
end
|
|
231
|
-
end
|
|
232
|
-
|
|
233
|
-
context 'for fish' do
|
|
234
|
-
before do
|
|
235
|
-
stub_const('File::PATH_SEPARATOR', ':')
|
|
236
|
-
end
|
|
237
|
-
let(:expected_path) { [omnibus_bin_dir, user_bin_dir, omnibus_embedded_bin_dir, ENV['PATH']].join(':').split(':').join('" "') }
|
|
238
|
-
let(:expected_environment_commands) do
|
|
239
|
-
<<-EOH
|
|
240
|
-
set -gx PATH "#{expected_path}" 2>/dev/null;
|
|
241
|
-
set -gx GEM_ROOT "#{expected_gem_root}";
|
|
242
|
-
set -gx GEM_HOME "#{expected_gem_home}";
|
|
243
|
-
set -gx GEM_PATH "#{expected_gem_path}";
|
|
244
|
-
EOH
|
|
245
|
-
end
|
|
246
|
-
|
|
247
|
-
include_context 'shell init script', 'fish'
|
|
248
|
-
|
|
249
|
-
describe "generating auto-complete" do
|
|
250
|
-
|
|
251
|
-
let(:command_descriptions) do
|
|
252
|
-
{
|
|
253
|
-
"exec" => "Runs the command in context of the embedded ruby",
|
|
254
|
-
"env" => "Prints environment variables used by ChefDK",
|
|
255
|
-
"gem" => "Runs the `gem` command in context of the embedded ruby",
|
|
256
|
-
"generate" => "Generate a new app, cookbook, or component"
|
|
257
|
-
}
|
|
258
|
-
end
|
|
259
|
-
|
|
260
|
-
let(:omnibus_bin_dir) { "/foo/bin" }
|
|
261
|
-
let(:omnibus_embedded_bin_dir) { "/foo/embedded/bin" }
|
|
262
|
-
|
|
263
|
-
let(:argv) { [ "fish" ] }
|
|
264
|
-
|
|
265
|
-
let(:expected_completion_function) do
|
|
266
|
-
<<-END_COMPLETION
|
|
267
|
-
# Fish Shell command-line completions for ChefDK
|
|
268
|
-
|
|
269
|
-
function __fish_chef_no_command --description 'Test if chef has yet to be given the main command'
|
|
270
|
-
set -l cmd (commandline -opc)
|
|
271
|
-
test (count $cmd) -eq 1
|
|
272
|
-
end
|
|
273
|
-
|
|
274
|
-
complete -c chef -f -n '__fish_chef_no_command' -a exec -d "Runs the command in context of the embedded ruby"
|
|
275
|
-
complete -c chef -f -n '__fish_chef_no_command' -a env -d "Prints environment variables used by ChefDK"
|
|
276
|
-
complete -c chef -f -n '__fish_chef_no_command' -a gem -d "Runs the `gem` command in context of the embedded ruby"
|
|
277
|
-
complete -c chef -f -n '__fish_chef_no_command' -a generate -d "Generate a new app, cookbook, or component"
|
|
278
|
-
END_COMPLETION
|
|
279
|
-
end
|
|
280
|
-
|
|
281
|
-
before do
|
|
282
|
-
# Stub this or else we'd have to update the test every time a new command
|
|
283
|
-
# is added.
|
|
284
|
-
allow(command_instance.shell_completion_template_context).to receive(:commands).
|
|
285
|
-
and_return(command_descriptions)
|
|
286
|
-
|
|
287
|
-
allow(command_instance).to receive(:omnibus_embedded_bin_dir).and_return(omnibus_embedded_bin_dir)
|
|
288
|
-
allow(command_instance).to receive(:omnibus_bin_dir).and_return(omnibus_bin_dir)
|
|
289
|
-
end
|
|
290
|
-
|
|
291
|
-
it "generates a completion function for the chef command" do
|
|
292
|
-
command_instance.run(argv)
|
|
293
|
-
expect(stdout_io.string).to include(expected_completion_function)
|
|
294
|
-
end
|
|
295
|
-
end
|
|
296
|
-
end
|
|
297
|
-
|
|
298
|
-
['powershell', 'posh'].each do |shell|
|
|
299
|
-
context "for #{shell}" do
|
|
300
|
-
it_behaves_like "a powershell script", shell
|
|
301
|
-
end
|
|
302
|
-
end
|
|
303
|
-
|
|
304
|
-
context "when no shell is specified" do
|
|
305
|
-
|
|
306
|
-
let(:argv) { [] }
|
|
307
|
-
|
|
308
|
-
it "exits with an error message" do
|
|
309
|
-
expect(command_instance.run(argv)).to eq(1)
|
|
310
|
-
expect(stderr_io.string).to include("Please specify what shell you are using")
|
|
311
|
-
end
|
|
312
|
-
|
|
313
|
-
end
|
|
314
|
-
|
|
315
|
-
context "when an unsupported shell is specified" do
|
|
316
|
-
|
|
317
|
-
let(:argv) { ['nosuchsh'] }
|
|
318
|
-
|
|
319
|
-
it "exits with an error message" do
|
|
320
|
-
expect(command_instance.run(argv)).to eq(1)
|
|
321
|
-
expect(stderr_io.string).to include("Shell `nosuchsh' is not currently supported")
|
|
322
|
-
expect(stderr_io.string).to include("Supported shells are: bash fish zsh sh powershell posh")
|
|
323
|
-
end
|
|
324
|
-
|
|
325
|
-
end
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
end
|
|
329
|
-
|
|
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/shell_init'
|
|
20
|
+
|
|
21
|
+
describe ChefDK::Command::ShellInit do
|
|
22
|
+
|
|
23
|
+
let(:expected_path) { [omnibus_bin_dir, user_bin_dir, omnibus_embedded_bin_dir, ENV['PATH']].join(File::PATH_SEPARATOR) }
|
|
24
|
+
let(:stdout_io) { StringIO.new }
|
|
25
|
+
let(:stderr_io) { StringIO.new }
|
|
26
|
+
|
|
27
|
+
let(:command_instance) do
|
|
28
|
+
ChefDK::Command::ShellInit.new.tap do |c|
|
|
29
|
+
allow(c).to receive(:stdout).and_return(stdout_io)
|
|
30
|
+
allow(c).to receive(:stderr).and_return(stderr_io)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
shared_context "shell init script" do |shell|
|
|
35
|
+
let(:user_bin_dir) { File.expand_path(File.join(Gem.user_dir, 'bin')) }
|
|
36
|
+
let(:expected_gem_root) { Gem.default_dir.to_s }
|
|
37
|
+
let(:expected_gem_home) { Gem.user_dir }
|
|
38
|
+
let(:expected_gem_path) { Gem.path.join(File::PATH_SEPARATOR) }
|
|
39
|
+
|
|
40
|
+
context "with no explicit omnibus directory" do
|
|
41
|
+
|
|
42
|
+
let(:omnibus_bin_dir) { "/foo/bin" }
|
|
43
|
+
let(:omnibus_embedded_bin_dir) { "/foo/embedded/bin" }
|
|
44
|
+
let(:argv) { [shell] }
|
|
45
|
+
|
|
46
|
+
before do
|
|
47
|
+
allow(command_instance).to receive(:omnibus_embedded_bin_dir).and_return(omnibus_embedded_bin_dir)
|
|
48
|
+
allow(command_instance).to receive(:omnibus_bin_dir).and_return(omnibus_bin_dir)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
it "emits a script to add ChefDK's ruby to the shell environment" do
|
|
52
|
+
command_instance.run(argv)
|
|
53
|
+
expect(stdout_io.string).to include(expected_environment_commands)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it "does not emit any empty lines", :if => ["powershell", "posh"].include?(shell) do
|
|
57
|
+
command_instance.run(argv)
|
|
58
|
+
stdout_io.string.each_line do |s|
|
|
59
|
+
expect(s.strip).not_to be_empty
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
context "with an explicit omnibus directory as an argument" do
|
|
65
|
+
|
|
66
|
+
let(:omnibus_root) { File.join(fixtures_path, "eg_omnibus_dir/valid/") }
|
|
67
|
+
let(:omnibus_bin_dir) { File.join(omnibus_root, "bin") }
|
|
68
|
+
let(:omnibus_embedded_bin_dir) { File.join(omnibus_root, "embedded/bin") }
|
|
69
|
+
|
|
70
|
+
let(:argv) { [shell, "--omnibus-dir", omnibus_root] }
|
|
71
|
+
|
|
72
|
+
it "emits a script to add ChefDK's ruby to the shell environment" do
|
|
73
|
+
command_instance.run(argv)
|
|
74
|
+
expect(stdout_io.string).to include(expected_environment_commands)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
it "does not emit any empty lines", :if => ["powershell", "posh"].include?(shell) do
|
|
78
|
+
command_instance.run(argv)
|
|
79
|
+
stdout_io.string.each_line do |s|
|
|
80
|
+
expect(s.strip).not_to be_empty
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
shared_examples "a posix shell script" do |shell|
|
|
87
|
+
before do
|
|
88
|
+
stub_const("File::PATH_SEPARATOR", ':')
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
let(:expected_environment_commands) do
|
|
92
|
+
<<-EOH
|
|
93
|
+
export PATH="#{expected_path}"
|
|
94
|
+
export GEM_ROOT="#{expected_gem_root}"
|
|
95
|
+
export GEM_HOME="#{expected_gem_home}"
|
|
96
|
+
export GEM_PATH="#{expected_gem_path}"
|
|
97
|
+
EOH
|
|
98
|
+
end
|
|
99
|
+
include_context "shell init script", shell
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
shared_examples "a powershell script" do |shell|
|
|
103
|
+
before do
|
|
104
|
+
stub_const("File::PATH_SEPARATOR", ';')
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
let(:expected_environment_commands) do
|
|
108
|
+
<<-EOH
|
|
109
|
+
$env:PATH="#{expected_path}"
|
|
110
|
+
$env:GEM_ROOT="#{expected_gem_root}"
|
|
111
|
+
$env:GEM_HOME="#{expected_gem_home}"
|
|
112
|
+
$env:GEM_PATH="#{expected_gem_path}"
|
|
113
|
+
EOH
|
|
114
|
+
end
|
|
115
|
+
include_context "shell init script", shell
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
context "for sh" do
|
|
119
|
+
it_behaves_like "a posix shell script", "sh"
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
context "for bash" do
|
|
123
|
+
it_behaves_like "a posix shell script", "bash"
|
|
124
|
+
|
|
125
|
+
describe "generating auto-complete" do
|
|
126
|
+
|
|
127
|
+
let(:command_descriptions) do
|
|
128
|
+
{
|
|
129
|
+
"exec" => "Runs the command in context of the embedded ruby",
|
|
130
|
+
"env" => "Prints environment variables used by ChefDK",
|
|
131
|
+
"gem" => "Runs the `gem` command in context of the embedded ruby",
|
|
132
|
+
"generate" => "Generate a new app, cookbook, or component"
|
|
133
|
+
}
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
let(:omnibus_bin_dir) { "/foo/bin" }
|
|
137
|
+
let(:omnibus_embedded_bin_dir) { "/foo/embedded/bin" }
|
|
138
|
+
|
|
139
|
+
let(:argv) { [ "bash" ] }
|
|
140
|
+
|
|
141
|
+
let(:expected_completion_function) do
|
|
142
|
+
<<-END_COMPLETION
|
|
143
|
+
_chef_comp() {
|
|
144
|
+
local COMMANDS="exec env gem generate"
|
|
145
|
+
COMPREPLY=($(compgen -W "$COMMANDS" -- ${COMP_WORDS[COMP_CWORD]} ))
|
|
146
|
+
}
|
|
147
|
+
complete -F _chef_comp chef
|
|
148
|
+
END_COMPLETION
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
before do
|
|
152
|
+
# Stub this or else we'd have to update the test every time a new command
|
|
153
|
+
# is added.
|
|
154
|
+
allow(command_instance.shell_completion_template_context).to receive(:commands).
|
|
155
|
+
and_return(command_descriptions)
|
|
156
|
+
|
|
157
|
+
allow(command_instance).to receive(:omnibus_embedded_bin_dir).and_return(omnibus_embedded_bin_dir)
|
|
158
|
+
allow(command_instance).to receive(:omnibus_bin_dir).and_return(omnibus_bin_dir)
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
it "generates a completion function for the chef command" do
|
|
162
|
+
command_instance.run(argv)
|
|
163
|
+
expect(stdout_io.string).to include(expected_completion_function)
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
end
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
context "for zsh" do
|
|
170
|
+
|
|
171
|
+
it_behaves_like "a posix shell script", "zsh"
|
|
172
|
+
|
|
173
|
+
describe "generating auto-complete" do
|
|
174
|
+
|
|
175
|
+
let(:command_descriptions) do
|
|
176
|
+
{
|
|
177
|
+
"exec" => "Runs the command in context of the embedded ruby",
|
|
178
|
+
"env" => "Prints environment variables used by ChefDK",
|
|
179
|
+
"gem" => "Runs the `gem` command in context of the embedded ruby",
|
|
180
|
+
"generate" => "Generate a new app, cookbook, or component"
|
|
181
|
+
}
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
let(:omnibus_bin_dir) { "/foo/bin" }
|
|
185
|
+
let(:omnibus_embedded_bin_dir) { "/foo/embedded/bin" }
|
|
186
|
+
|
|
187
|
+
let(:argv) { [ "zsh" ] }
|
|
188
|
+
|
|
189
|
+
let(:expected_completion_function) do
|
|
190
|
+
<<-END_COMPLETION
|
|
191
|
+
function _chef() {
|
|
192
|
+
|
|
193
|
+
local -a _1st_arguments
|
|
194
|
+
_1st_arguments=(
|
|
195
|
+
'exec:Runs the command in context of the embedded ruby'
|
|
196
|
+
'env:Prints environment variables used by ChefDK'
|
|
197
|
+
'gem:Runs the `gem` command in context of the embedded ruby'
|
|
198
|
+
'generate:Generate a new app, cookbook, or component'
|
|
199
|
+
)
|
|
200
|
+
|
|
201
|
+
_arguments \\
|
|
202
|
+
'(-v --version)'{-v,--version}'[version information]' \\
|
|
203
|
+
'*:: :->subcmds' && return 0
|
|
204
|
+
|
|
205
|
+
if (( CURRENT == 1 )); then
|
|
206
|
+
_describe -t commands "chef subcommand" _1st_arguments
|
|
207
|
+
return
|
|
208
|
+
fi
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
compdef _chef chef
|
|
212
|
+
|
|
213
|
+
END_COMPLETION
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
before do
|
|
217
|
+
# Stub this or else we'd have to update the test every time a new command
|
|
218
|
+
# is added.
|
|
219
|
+
allow(command_instance.shell_completion_template_context).to receive(:commands).
|
|
220
|
+
and_return(command_descriptions)
|
|
221
|
+
|
|
222
|
+
allow(command_instance).to receive(:omnibus_embedded_bin_dir).and_return(omnibus_embedded_bin_dir)
|
|
223
|
+
allow(command_instance).to receive(:omnibus_bin_dir).and_return(omnibus_bin_dir)
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
it "generates a completion function for the chef command" do
|
|
227
|
+
command_instance.run(argv)
|
|
228
|
+
expect(stdout_io.string).to include(expected_completion_function)
|
|
229
|
+
end
|
|
230
|
+
end
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
context 'for fish' do
|
|
234
|
+
before do
|
|
235
|
+
stub_const('File::PATH_SEPARATOR', ':')
|
|
236
|
+
end
|
|
237
|
+
let(:expected_path) { [omnibus_bin_dir, user_bin_dir, omnibus_embedded_bin_dir, ENV['PATH']].join(':').split(':').join('" "') }
|
|
238
|
+
let(:expected_environment_commands) do
|
|
239
|
+
<<-EOH
|
|
240
|
+
set -gx PATH "#{expected_path}" 2>/dev/null;
|
|
241
|
+
set -gx GEM_ROOT "#{expected_gem_root}";
|
|
242
|
+
set -gx GEM_HOME "#{expected_gem_home}";
|
|
243
|
+
set -gx GEM_PATH "#{expected_gem_path}";
|
|
244
|
+
EOH
|
|
245
|
+
end
|
|
246
|
+
|
|
247
|
+
include_context 'shell init script', 'fish'
|
|
248
|
+
|
|
249
|
+
describe "generating auto-complete" do
|
|
250
|
+
|
|
251
|
+
let(:command_descriptions) do
|
|
252
|
+
{
|
|
253
|
+
"exec" => "Runs the command in context of the embedded ruby",
|
|
254
|
+
"env" => "Prints environment variables used by ChefDK",
|
|
255
|
+
"gem" => "Runs the `gem` command in context of the embedded ruby",
|
|
256
|
+
"generate" => "Generate a new app, cookbook, or component"
|
|
257
|
+
}
|
|
258
|
+
end
|
|
259
|
+
|
|
260
|
+
let(:omnibus_bin_dir) { "/foo/bin" }
|
|
261
|
+
let(:omnibus_embedded_bin_dir) { "/foo/embedded/bin" }
|
|
262
|
+
|
|
263
|
+
let(:argv) { [ "fish" ] }
|
|
264
|
+
|
|
265
|
+
let(:expected_completion_function) do
|
|
266
|
+
<<-END_COMPLETION
|
|
267
|
+
# Fish Shell command-line completions for ChefDK
|
|
268
|
+
|
|
269
|
+
function __fish_chef_no_command --description 'Test if chef has yet to be given the main command'
|
|
270
|
+
set -l cmd (commandline -opc)
|
|
271
|
+
test (count $cmd) -eq 1
|
|
272
|
+
end
|
|
273
|
+
|
|
274
|
+
complete -c chef -f -n '__fish_chef_no_command' -a exec -d "Runs the command in context of the embedded ruby"
|
|
275
|
+
complete -c chef -f -n '__fish_chef_no_command' -a env -d "Prints environment variables used by ChefDK"
|
|
276
|
+
complete -c chef -f -n '__fish_chef_no_command' -a gem -d "Runs the `gem` command in context of the embedded ruby"
|
|
277
|
+
complete -c chef -f -n '__fish_chef_no_command' -a generate -d "Generate a new app, cookbook, or component"
|
|
278
|
+
END_COMPLETION
|
|
279
|
+
end
|
|
280
|
+
|
|
281
|
+
before do
|
|
282
|
+
# Stub this or else we'd have to update the test every time a new command
|
|
283
|
+
# is added.
|
|
284
|
+
allow(command_instance.shell_completion_template_context).to receive(:commands).
|
|
285
|
+
and_return(command_descriptions)
|
|
286
|
+
|
|
287
|
+
allow(command_instance).to receive(:omnibus_embedded_bin_dir).and_return(omnibus_embedded_bin_dir)
|
|
288
|
+
allow(command_instance).to receive(:omnibus_bin_dir).and_return(omnibus_bin_dir)
|
|
289
|
+
end
|
|
290
|
+
|
|
291
|
+
it "generates a completion function for the chef command" do
|
|
292
|
+
command_instance.run(argv)
|
|
293
|
+
expect(stdout_io.string).to include(expected_completion_function)
|
|
294
|
+
end
|
|
295
|
+
end
|
|
296
|
+
end
|
|
297
|
+
|
|
298
|
+
['powershell', 'posh'].each do |shell|
|
|
299
|
+
context "for #{shell}" do
|
|
300
|
+
it_behaves_like "a powershell script", shell
|
|
301
|
+
end
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
context "when no shell is specified" do
|
|
305
|
+
|
|
306
|
+
let(:argv) { [] }
|
|
307
|
+
|
|
308
|
+
it "exits with an error message" do
|
|
309
|
+
expect(command_instance.run(argv)).to eq(1)
|
|
310
|
+
expect(stderr_io.string).to include("Please specify what shell you are using")
|
|
311
|
+
end
|
|
312
|
+
|
|
313
|
+
end
|
|
314
|
+
|
|
315
|
+
context "when an unsupported shell is specified" do
|
|
316
|
+
|
|
317
|
+
let(:argv) { ['nosuchsh'] }
|
|
318
|
+
|
|
319
|
+
it "exits with an error message" do
|
|
320
|
+
expect(command_instance.run(argv)).to eq(1)
|
|
321
|
+
expect(stderr_io.string).to include("Shell `nosuchsh' is not currently supported")
|
|
322
|
+
expect(stderr_io.string).to include("Supported shells are: bash fish zsh sh powershell posh")
|
|
323
|
+
end
|
|
324
|
+
|
|
325
|
+
end
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
end
|
|
329
|
+
|