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,32 +1,32 @@
|
|
|
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/a_file_generator'
|
|
20
|
-
require 'chef-dk/command/generator_commands/cookbook_file'
|
|
21
|
-
|
|
22
|
-
describe ChefDK::Command::GeneratorCommands::CookbookFile do
|
|
23
|
-
|
|
24
|
-
include_examples "a file generator" do
|
|
25
|
-
|
|
26
|
-
let(:generator_name) { "file" }
|
|
27
|
-
let(:generated_files) { [ "files/default/new_file.txt" ] }
|
|
28
|
-
let(:new_file_name) { "new_file.txt" }
|
|
29
|
-
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
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/a_file_generator'
|
|
20
|
+
require 'chef-dk/command/generator_commands/cookbook_file'
|
|
21
|
+
|
|
22
|
+
describe ChefDK::Command::GeneratorCommands::CookbookFile do
|
|
23
|
+
|
|
24
|
+
include_examples "a file generator" do
|
|
25
|
+
|
|
26
|
+
let(:generator_name) { "file" }
|
|
27
|
+
let(:generated_files) { [ "files/default/new_file.txt" ] }
|
|
28
|
+
let(:new_file_name) { "new_file.txt" }
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
@@ -1,450 +1,450 @@
|
|
|
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/custom_generator_cookbook'
|
|
20
|
-
require 'chef-dk/command/generator_commands/cookbook'
|
|
21
|
-
|
|
22
|
-
describe ChefDK::Command::GeneratorCommands::Cookbook do
|
|
23
|
-
|
|
24
|
-
let(:argv) { %w[new_cookbook] }
|
|
25
|
-
|
|
26
|
-
let(:stdout_io) { StringIO.new }
|
|
27
|
-
let(:stderr_io) { StringIO.new }
|
|
28
|
-
|
|
29
|
-
let(:expected_cookbook_file_relpaths) do
|
|
30
|
-
%w[
|
|
31
|
-
.gitignore
|
|
32
|
-
.kitchen.yml
|
|
33
|
-
test
|
|
34
|
-
test/integration
|
|
35
|
-
test/integration/default
|
|
36
|
-
test/integration/default/serverspec
|
|
37
|
-
test/integration/default/serverspec/default_spec.rb
|
|
38
|
-
test/integration/helpers/serverspec/spec_helper.rb
|
|
39
|
-
Berksfile
|
|
40
|
-
chefignore
|
|
41
|
-
metadata.rb
|
|
42
|
-
README.md
|
|
43
|
-
recipes
|
|
44
|
-
recipes/default.rb
|
|
45
|
-
spec
|
|
46
|
-
spec/spec_helper.rb
|
|
47
|
-
spec/unit
|
|
48
|
-
spec/unit/recipes
|
|
49
|
-
spec/unit/recipes/default_spec.rb
|
|
50
|
-
]
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
let(:expected_cookbook_files) do
|
|
54
|
-
expected_cookbook_file_relpaths.map do |relpath|
|
|
55
|
-
File.join(tempdir, "new_cookbook", relpath)
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
subject(:cookbook_generator) do
|
|
60
|
-
g = described_class.new(argv)
|
|
61
|
-
allow(g).to receive(:cookbook_path_in_git_repo?).and_return(false)
|
|
62
|
-
g
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def generator_context
|
|
66
|
-
ChefDK::Generator.context
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
before do
|
|
70
|
-
ChefDK::Generator.reset
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
include_examples "custom generator cookbook" do
|
|
74
|
-
|
|
75
|
-
let(:generator_arg) { "new_cookbook" }
|
|
76
|
-
|
|
77
|
-
let(:generator_name) { "cookbook" }
|
|
78
|
-
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
it "configures the chef runner" do
|
|
82
|
-
expect(cookbook_generator.chef_runner).to be_a(ChefDK::ChefRunner)
|
|
83
|
-
expect(cookbook_generator.chef_runner.cookbook_path).to eq(File.expand_path('lib/chef-dk/skeletons', project_root))
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
context "when given invalid/incomplete arguments" do
|
|
87
|
-
|
|
88
|
-
let(:expected_help_message) do
|
|
89
|
-
"Usage: chef generate cookbook NAME [options]\n"
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
def with_argv(argv)
|
|
94
|
-
generator = described_class.new(argv)
|
|
95
|
-
allow(generator).to receive(:stdout).and_return(stdout_io)
|
|
96
|
-
allow(generator).to receive(:stderr).and_return(stderr_io)
|
|
97
|
-
generator
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
it "prints usage when args are empty" do
|
|
101
|
-
with_argv([]).run
|
|
102
|
-
expect(stderr_io.string).to include(expected_help_message)
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
it "errors if both berks and policyfiles are requested" do
|
|
106
|
-
expect(with_argv(%w{my_cookbook --berks --policy}).run).to eq(1)
|
|
107
|
-
message = "Berkshelf and Policyfiles are mutually exclusive. Please specify only one."
|
|
108
|
-
expect(stderr_io.string).to include(message)
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
context "when given the name of the cookbook to generate" do
|
|
114
|
-
|
|
115
|
-
let(:argv) { %w[new_cookbook] }
|
|
116
|
-
|
|
117
|
-
before do
|
|
118
|
-
reset_tempdir
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
it "configures the generator context" do
|
|
122
|
-
cookbook_generator.read_and_validate_params
|
|
123
|
-
cookbook_generator.setup_context
|
|
124
|
-
expect(generator_context.cookbook_root).to eq(Dir.pwd)
|
|
125
|
-
expect(generator_context.cookbook_name).to eq("new_cookbook")
|
|
126
|
-
expect(generator_context.recipe_name).to eq("default")
|
|
127
|
-
end
|
|
128
|
-
|
|
129
|
-
it "creates a new cookbook" do
|
|
130
|
-
Dir.chdir(tempdir) do
|
|
131
|
-
allow(cookbook_generator.chef_runner).to receive(:stdout).and_return(stdout_io)
|
|
132
|
-
cookbook_generator.run
|
|
133
|
-
end
|
|
134
|
-
generated_files = Dir.glob("#{tempdir}/new_cookbook/**/*", File::FNM_DOTMATCH)
|
|
135
|
-
expected_cookbook_files.each do |expected_file|
|
|
136
|
-
expect(generated_files).to include(expected_file)
|
|
137
|
-
end
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
shared_examples_for "a generated file" do |context_var|
|
|
141
|
-
before do
|
|
142
|
-
Dir.chdir(tempdir) do
|
|
143
|
-
allow(cookbook_generator.chef_runner).to receive(:stdout).and_return(stdout_io)
|
|
144
|
-
cookbook_generator.run
|
|
145
|
-
end
|
|
146
|
-
end
|
|
147
|
-
|
|
148
|
-
it "should contain #{context_var} from the generator context" do
|
|
149
|
-
expect(File.read(file)).to match line
|
|
150
|
-
end
|
|
151
|
-
end
|
|
152
|
-
|
|
153
|
-
describe "README.md" do
|
|
154
|
-
let(:file) { File.join(tempdir, "new_cookbook", "README.md") }
|
|
155
|
-
|
|
156
|
-
include_examples "a generated file", :cookbook_name do
|
|
157
|
-
let(:line) { "# new_cookbook" }
|
|
158
|
-
end
|
|
159
|
-
end
|
|
160
|
-
|
|
161
|
-
# This shared example group requires a let binding for
|
|
162
|
-
# `expected_kitchen_yml_content`
|
|
163
|
-
shared_examples_for "kitchen_yml_and_integration_tests" do
|
|
164
|
-
|
|
165
|
-
describe "Generating Test Kitchen and integration testing files" do
|
|
166
|
-
|
|
167
|
-
before do
|
|
168
|
-
Dir.chdir(tempdir) do
|
|
169
|
-
allow(cookbook_generator.chef_runner).to receive(:stdout).and_return(stdout_io)
|
|
170
|
-
cookbook_generator.run
|
|
171
|
-
end
|
|
172
|
-
end
|
|
173
|
-
|
|
174
|
-
let(:file) { File.join(tempdir, "new_cookbook", ".kitchen.yml") }
|
|
175
|
-
|
|
176
|
-
it "creates a .kitchen.yml with the expected content" do
|
|
177
|
-
expect(IO.read(file)).to eq(expected_kitchen_yml_content)
|
|
178
|
-
end
|
|
179
|
-
|
|
180
|
-
describe "test/integration/default/serverspec/default_spec.rb" do
|
|
181
|
-
let(:file) { File.join(tempdir, "new_cookbook", "test", "integration", "default", "serverspec", "default_spec.rb") }
|
|
182
|
-
|
|
183
|
-
include_examples "a generated file", :cookbook_name do
|
|
184
|
-
let(:line) { "describe 'new_cookbook::default' do" }
|
|
185
|
-
end
|
|
186
|
-
end
|
|
187
|
-
end
|
|
188
|
-
end
|
|
189
|
-
|
|
190
|
-
# This shared example group requires you to define a let binding for
|
|
191
|
-
# `expected_chefspec_spec_helper_content`
|
|
192
|
-
shared_examples_for "chefspec_spec_helper_file" do
|
|
193
|
-
|
|
194
|
-
describe "Generating ChefSpec files" do
|
|
195
|
-
|
|
196
|
-
before do
|
|
197
|
-
Dir.chdir(tempdir) do
|
|
198
|
-
allow(cookbook_generator.chef_runner).to receive(:stdout).and_return(stdout_io)
|
|
199
|
-
cookbook_generator.run
|
|
200
|
-
end
|
|
201
|
-
end
|
|
202
|
-
|
|
203
|
-
let(:file) { File.join(tempdir, "new_cookbook", "spec", "spec_helper.rb") }
|
|
204
|
-
|
|
205
|
-
it "creates a spec/spec_helper.rb for ChefSpec with the expected content" do
|
|
206
|
-
expect(IO.read(file)).to eq(expected_chefspec_spec_helper_content)
|
|
207
|
-
end
|
|
208
|
-
|
|
209
|
-
end
|
|
210
|
-
|
|
211
|
-
end
|
|
212
|
-
|
|
213
|
-
context "when configured for Policyfiles" do
|
|
214
|
-
|
|
215
|
-
let(:argv) { %w[new_cookbook --policy] }
|
|
216
|
-
|
|
217
|
-
describe "Policyfile.rb" do
|
|
218
|
-
|
|
219
|
-
let(:file) { File.join(tempdir, "new_cookbook", "Policyfile.rb") }
|
|
220
|
-
|
|
221
|
-
let(:expected_content) do
|
|
222
|
-
<<-POLICYFILE_RB
|
|
223
|
-
# Policyfile.rb - Describe how you want Chef to build your system.
|
|
224
|
-
#
|
|
225
|
-
# For more information on the Policyfile feature, visit
|
|
226
|
-
# https://github.com/chef/chef-dk/blob/master/POLICYFILE_README.md
|
|
227
|
-
|
|
228
|
-
# A name that describes what the system you're building with Chef does.
|
|
229
|
-
name "new_cookbook"
|
|
230
|
-
|
|
231
|
-
# Where to find external cookbooks:
|
|
232
|
-
default_source :supermarket
|
|
233
|
-
|
|
234
|
-
# run_list: chef-client will run these recipes in the order specified.
|
|
235
|
-
run_list "new_cookbook::default"
|
|
236
|
-
|
|
237
|
-
# Specify a custom source for a single cookbook:
|
|
238
|
-
cookbook "new_cookbook", path: "."
|
|
239
|
-
POLICYFILE_RB
|
|
240
|
-
end
|
|
241
|
-
|
|
242
|
-
before do
|
|
243
|
-
Dir.chdir(tempdir) do
|
|
244
|
-
allow(cookbook_generator.chef_runner).to receive(:stdout).and_return(stdout_io)
|
|
245
|
-
cookbook_generator.run
|
|
246
|
-
end
|
|
247
|
-
end
|
|
248
|
-
|
|
249
|
-
it "has a run_list and cookbook path that will work out of the box" do
|
|
250
|
-
expect(IO.read(file)).to eq(expected_content)
|
|
251
|
-
end
|
|
252
|
-
|
|
253
|
-
end
|
|
254
|
-
|
|
255
|
-
include_examples "kitchen_yml_and_integration_tests" do
|
|
256
|
-
|
|
257
|
-
let(:expected_kitchen_yml_content) do
|
|
258
|
-
<<-KITCHEN_YML
|
|
259
|
-
---
|
|
260
|
-
driver:
|
|
261
|
-
name: vagrant
|
|
262
|
-
|
|
263
|
-
## The forwarded_port port feature lets you connect to ports on the VM guest via
|
|
264
|
-
## localhost on the host.
|
|
265
|
-
## see also: https://docs.vagrantup.com/v2/networking/forwarded_ports.html
|
|
266
|
-
|
|
267
|
-
# network:
|
|
268
|
-
# - ["forwarded_port", {guest: 80, host: 8080}]
|
|
269
|
-
|
|
270
|
-
provisioner:
|
|
271
|
-
name: policyfile_zero
|
|
272
|
-
|
|
273
|
-
## require_chef_omnibus specifies a specific chef version to install. You can
|
|
274
|
-
## also set this to `true` to always use the latest version.
|
|
275
|
-
## see also: https://docs.chef.io/config_yml_kitchen.html
|
|
276
|
-
|
|
277
|
-
# require_chef_omnibus: 12.
|
|
278
|
-
|
|
279
|
-
# Uncomment the following verifier to leverage Inspec instead of Busser (the
|
|
280
|
-
# default verifier)
|
|
281
|
-
# verifier:
|
|
282
|
-
# name: inspec
|
|
283
|
-
|
|
284
|
-
platforms:
|
|
285
|
-
- name: ubuntu-14.04
|
|
286
|
-
- name: centos-7.1
|
|
287
|
-
|
|
288
|
-
suites:
|
|
289
|
-
- name: default
|
|
290
|
-
attributes:
|
|
291
|
-
KITCHEN_YML
|
|
292
|
-
end
|
|
293
|
-
|
|
294
|
-
end
|
|
295
|
-
|
|
296
|
-
include_examples "chefspec_spec_helper_file" do
|
|
297
|
-
|
|
298
|
-
let(:expected_chefspec_spec_helper_content) do
|
|
299
|
-
<<-SPEC_HELPER
|
|
300
|
-
require 'chefspec'
|
|
301
|
-
require 'chefspec/policyfile'
|
|
302
|
-
SPEC_HELPER
|
|
303
|
-
end
|
|
304
|
-
|
|
305
|
-
end
|
|
306
|
-
|
|
307
|
-
end
|
|
308
|
-
|
|
309
|
-
context "when configured for Berkshelf" do
|
|
310
|
-
|
|
311
|
-
let(:argv) { %w[new_cookbook --berks] }
|
|
312
|
-
|
|
313
|
-
describe "Berksfile" do
|
|
314
|
-
|
|
315
|
-
let(:file) { File.join(tempdir, "new_cookbook", "Berksfile") }
|
|
316
|
-
|
|
317
|
-
let(:expected_content) do
|
|
318
|
-
<<-POLICYFILE_RB
|
|
319
|
-
source 'https://supermarket.chef.io'
|
|
320
|
-
|
|
321
|
-
metadata
|
|
322
|
-
POLICYFILE_RB
|
|
323
|
-
end
|
|
324
|
-
|
|
325
|
-
before do
|
|
326
|
-
Dir.chdir(tempdir) do
|
|
327
|
-
allow(cookbook_generator.chef_runner).to receive(:stdout).and_return(stdout_io)
|
|
328
|
-
cookbook_generator.run
|
|
329
|
-
end
|
|
330
|
-
end
|
|
331
|
-
|
|
332
|
-
it "pulls deps from metadata" do
|
|
333
|
-
expect(IO.read(file)).to eq(expected_content)
|
|
334
|
-
end
|
|
335
|
-
|
|
336
|
-
end
|
|
337
|
-
|
|
338
|
-
include_examples "kitchen_yml_and_integration_tests" do
|
|
339
|
-
|
|
340
|
-
let(:expected_kitchen_yml_content) do
|
|
341
|
-
<<-KITCHEN_YML
|
|
342
|
-
---
|
|
343
|
-
driver:
|
|
344
|
-
name: vagrant
|
|
345
|
-
|
|
346
|
-
provisioner:
|
|
347
|
-
name: chef_zero
|
|
348
|
-
|
|
349
|
-
# Uncomment the following verifier to leverage Inspec instead of Busser (the
|
|
350
|
-
# default verifier)
|
|
351
|
-
# verifier:
|
|
352
|
-
# name: inspec
|
|
353
|
-
|
|
354
|
-
platforms:
|
|
355
|
-
- name: ubuntu-14.04
|
|
356
|
-
- name: centos-7.1
|
|
357
|
-
|
|
358
|
-
suites:
|
|
359
|
-
- name: default
|
|
360
|
-
run_list:
|
|
361
|
-
- recipe[new_cookbook::default]
|
|
362
|
-
attributes:
|
|
363
|
-
KITCHEN_YML
|
|
364
|
-
end
|
|
365
|
-
|
|
366
|
-
end
|
|
367
|
-
|
|
368
|
-
include_examples "chefspec_spec_helper_file" do
|
|
369
|
-
|
|
370
|
-
let(:expected_chefspec_spec_helper_content) do
|
|
371
|
-
<<-SPEC_HELPER
|
|
372
|
-
require 'chefspec'
|
|
373
|
-
require 'chefspec/berkshelf'
|
|
374
|
-
SPEC_HELPER
|
|
375
|
-
end
|
|
376
|
-
|
|
377
|
-
end
|
|
378
|
-
|
|
379
|
-
end
|
|
380
|
-
|
|
381
|
-
describe "metadata.rb" do
|
|
382
|
-
let(:file) { File.join(tempdir, "new_cookbook", "metadata.rb") }
|
|
383
|
-
|
|
384
|
-
include_examples "a generated file", :cookbook_name do
|
|
385
|
-
let(:line) { /name\s+'new_cookbook'/ }
|
|
386
|
-
end
|
|
387
|
-
end
|
|
388
|
-
|
|
389
|
-
describe "recipes/default.rb" do
|
|
390
|
-
let(:file) { File.join(tempdir, "new_cookbook", "recipes", "default.rb") }
|
|
391
|
-
|
|
392
|
-
include_examples "a generated file", :cookbook_name do
|
|
393
|
-
let(:line) { "# Cookbook Name:: new_cookbook" }
|
|
394
|
-
end
|
|
395
|
-
end
|
|
396
|
-
|
|
397
|
-
describe "spec/unit/recipes/default_spec.rb" do
|
|
398
|
-
let(:file) { File.join(tempdir, "new_cookbook", "spec", "unit", "recipes", "default_spec.rb") }
|
|
399
|
-
|
|
400
|
-
include_examples "a generated file", :cookbook_name do
|
|
401
|
-
let(:line) { "describe \'new_cookbook::default\' do" }
|
|
402
|
-
end
|
|
403
|
-
end
|
|
404
|
-
|
|
405
|
-
end
|
|
406
|
-
|
|
407
|
-
context "when given the path to the cookbook to generate" do
|
|
408
|
-
let(:argv) { [ File.join(tempdir, "a_new_cookbook") ] }
|
|
409
|
-
|
|
410
|
-
before do
|
|
411
|
-
reset_tempdir
|
|
412
|
-
end
|
|
413
|
-
|
|
414
|
-
it "configures the generator context" do
|
|
415
|
-
cookbook_generator.read_and_validate_params
|
|
416
|
-
cookbook_generator.setup_context
|
|
417
|
-
expect(generator_context.cookbook_root).to eq(tempdir)
|
|
418
|
-
expect(generator_context.cookbook_name).to eq("a_new_cookbook")
|
|
419
|
-
end
|
|
420
|
-
|
|
421
|
-
end
|
|
422
|
-
|
|
423
|
-
context "when given generic arguments to populate the generator context" do
|
|
424
|
-
let(:argv) { [ "new_cookbook", "--generator-arg", "key1=value1", "-a", "key2=value2", "-a", " key3 = value3 " ] }
|
|
425
|
-
|
|
426
|
-
before do
|
|
427
|
-
reset_tempdir
|
|
428
|
-
end
|
|
429
|
-
|
|
430
|
-
it "configures the generator context for long form option key1" do
|
|
431
|
-
cookbook_generator.read_and_validate_params
|
|
432
|
-
cookbook_generator.setup_context
|
|
433
|
-
expect(generator_context.key1).to eq('value1')
|
|
434
|
-
end
|
|
435
|
-
|
|
436
|
-
it "configures the generator context for short form option key2" do
|
|
437
|
-
cookbook_generator.read_and_validate_params
|
|
438
|
-
cookbook_generator.setup_context
|
|
439
|
-
expect(generator_context.key2).to eq('value2')
|
|
440
|
-
end
|
|
441
|
-
|
|
442
|
-
it "configures the generator context for key3 containing additional spaces" do
|
|
443
|
-
cookbook_generator.read_and_validate_params
|
|
444
|
-
cookbook_generator.setup_context
|
|
445
|
-
expect(generator_context.key3).to eq('value3')
|
|
446
|
-
end
|
|
447
|
-
|
|
448
|
-
end
|
|
449
|
-
|
|
450
|
-
end
|
|
1
|
+
#
|
|
2
|
+
# Copyright:: Copyright (c) 2014 Chef Software Inc.
|
|
3
|
+
# License:: Apache License, Version 2.0
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
#
|
|
17
|
+
|
|
18
|
+
require 'spec_helper'
|
|
19
|
+
require 'shared/custom_generator_cookbook'
|
|
20
|
+
require 'chef-dk/command/generator_commands/cookbook'
|
|
21
|
+
|
|
22
|
+
describe ChefDK::Command::GeneratorCommands::Cookbook do
|
|
23
|
+
|
|
24
|
+
let(:argv) { %w[new_cookbook] }
|
|
25
|
+
|
|
26
|
+
let(:stdout_io) { StringIO.new }
|
|
27
|
+
let(:stderr_io) { StringIO.new }
|
|
28
|
+
|
|
29
|
+
let(:expected_cookbook_file_relpaths) do
|
|
30
|
+
%w[
|
|
31
|
+
.gitignore
|
|
32
|
+
.kitchen.yml
|
|
33
|
+
test
|
|
34
|
+
test/integration
|
|
35
|
+
test/integration/default
|
|
36
|
+
test/integration/default/serverspec
|
|
37
|
+
test/integration/default/serverspec/default_spec.rb
|
|
38
|
+
test/integration/helpers/serverspec/spec_helper.rb
|
|
39
|
+
Berksfile
|
|
40
|
+
chefignore
|
|
41
|
+
metadata.rb
|
|
42
|
+
README.md
|
|
43
|
+
recipes
|
|
44
|
+
recipes/default.rb
|
|
45
|
+
spec
|
|
46
|
+
spec/spec_helper.rb
|
|
47
|
+
spec/unit
|
|
48
|
+
spec/unit/recipes
|
|
49
|
+
spec/unit/recipes/default_spec.rb
|
|
50
|
+
]
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
let(:expected_cookbook_files) do
|
|
54
|
+
expected_cookbook_file_relpaths.map do |relpath|
|
|
55
|
+
File.join(tempdir, "new_cookbook", relpath)
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
subject(:cookbook_generator) do
|
|
60
|
+
g = described_class.new(argv)
|
|
61
|
+
allow(g).to receive(:cookbook_path_in_git_repo?).and_return(false)
|
|
62
|
+
g
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def generator_context
|
|
66
|
+
ChefDK::Generator.context
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
before do
|
|
70
|
+
ChefDK::Generator.reset
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
include_examples "custom generator cookbook" do
|
|
74
|
+
|
|
75
|
+
let(:generator_arg) { "new_cookbook" }
|
|
76
|
+
|
|
77
|
+
let(:generator_name) { "cookbook" }
|
|
78
|
+
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
it "configures the chef runner" do
|
|
82
|
+
expect(cookbook_generator.chef_runner).to be_a(ChefDK::ChefRunner)
|
|
83
|
+
expect(cookbook_generator.chef_runner.cookbook_path).to eq(File.expand_path('lib/chef-dk/skeletons', project_root))
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
context "when given invalid/incomplete arguments" do
|
|
87
|
+
|
|
88
|
+
let(:expected_help_message) do
|
|
89
|
+
"Usage: chef generate cookbook NAME [options]\n"
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
def with_argv(argv)
|
|
94
|
+
generator = described_class.new(argv)
|
|
95
|
+
allow(generator).to receive(:stdout).and_return(stdout_io)
|
|
96
|
+
allow(generator).to receive(:stderr).and_return(stderr_io)
|
|
97
|
+
generator
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
it "prints usage when args are empty" do
|
|
101
|
+
with_argv([]).run
|
|
102
|
+
expect(stderr_io.string).to include(expected_help_message)
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
it "errors if both berks and policyfiles are requested" do
|
|
106
|
+
expect(with_argv(%w{my_cookbook --berks --policy}).run).to eq(1)
|
|
107
|
+
message = "Berkshelf and Policyfiles are mutually exclusive. Please specify only one."
|
|
108
|
+
expect(stderr_io.string).to include(message)
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
context "when given the name of the cookbook to generate" do
|
|
114
|
+
|
|
115
|
+
let(:argv) { %w[new_cookbook] }
|
|
116
|
+
|
|
117
|
+
before do
|
|
118
|
+
reset_tempdir
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
it "configures the generator context" do
|
|
122
|
+
cookbook_generator.read_and_validate_params
|
|
123
|
+
cookbook_generator.setup_context
|
|
124
|
+
expect(generator_context.cookbook_root).to eq(Dir.pwd)
|
|
125
|
+
expect(generator_context.cookbook_name).to eq("new_cookbook")
|
|
126
|
+
expect(generator_context.recipe_name).to eq("default")
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
it "creates a new cookbook" do
|
|
130
|
+
Dir.chdir(tempdir) do
|
|
131
|
+
allow(cookbook_generator.chef_runner).to receive(:stdout).and_return(stdout_io)
|
|
132
|
+
cookbook_generator.run
|
|
133
|
+
end
|
|
134
|
+
generated_files = Dir.glob("#{tempdir}/new_cookbook/**/*", File::FNM_DOTMATCH)
|
|
135
|
+
expected_cookbook_files.each do |expected_file|
|
|
136
|
+
expect(generated_files).to include(expected_file)
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
shared_examples_for "a generated file" do |context_var|
|
|
141
|
+
before do
|
|
142
|
+
Dir.chdir(tempdir) do
|
|
143
|
+
allow(cookbook_generator.chef_runner).to receive(:stdout).and_return(stdout_io)
|
|
144
|
+
cookbook_generator.run
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
it "should contain #{context_var} from the generator context" do
|
|
149
|
+
expect(File.read(file)).to match line
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
describe "README.md" do
|
|
154
|
+
let(:file) { File.join(tempdir, "new_cookbook", "README.md") }
|
|
155
|
+
|
|
156
|
+
include_examples "a generated file", :cookbook_name do
|
|
157
|
+
let(:line) { "# new_cookbook" }
|
|
158
|
+
end
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
# This shared example group requires a let binding for
|
|
162
|
+
# `expected_kitchen_yml_content`
|
|
163
|
+
shared_examples_for "kitchen_yml_and_integration_tests" do
|
|
164
|
+
|
|
165
|
+
describe "Generating Test Kitchen and integration testing files" do
|
|
166
|
+
|
|
167
|
+
before do
|
|
168
|
+
Dir.chdir(tempdir) do
|
|
169
|
+
allow(cookbook_generator.chef_runner).to receive(:stdout).and_return(stdout_io)
|
|
170
|
+
cookbook_generator.run
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
let(:file) { File.join(tempdir, "new_cookbook", ".kitchen.yml") }
|
|
175
|
+
|
|
176
|
+
it "creates a .kitchen.yml with the expected content" do
|
|
177
|
+
expect(IO.read(file)).to eq(expected_kitchen_yml_content)
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
describe "test/integration/default/serverspec/default_spec.rb" do
|
|
181
|
+
let(:file) { File.join(tempdir, "new_cookbook", "test", "integration", "default", "serverspec", "default_spec.rb") }
|
|
182
|
+
|
|
183
|
+
include_examples "a generated file", :cookbook_name do
|
|
184
|
+
let(:line) { "describe 'new_cookbook::default' do" }
|
|
185
|
+
end
|
|
186
|
+
end
|
|
187
|
+
end
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
# This shared example group requires you to define a let binding for
|
|
191
|
+
# `expected_chefspec_spec_helper_content`
|
|
192
|
+
shared_examples_for "chefspec_spec_helper_file" do
|
|
193
|
+
|
|
194
|
+
describe "Generating ChefSpec files" do
|
|
195
|
+
|
|
196
|
+
before do
|
|
197
|
+
Dir.chdir(tempdir) do
|
|
198
|
+
allow(cookbook_generator.chef_runner).to receive(:stdout).and_return(stdout_io)
|
|
199
|
+
cookbook_generator.run
|
|
200
|
+
end
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
let(:file) { File.join(tempdir, "new_cookbook", "spec", "spec_helper.rb") }
|
|
204
|
+
|
|
205
|
+
it "creates a spec/spec_helper.rb for ChefSpec with the expected content" do
|
|
206
|
+
expect(IO.read(file)).to eq(expected_chefspec_spec_helper_content)
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
context "when configured for Policyfiles" do
|
|
214
|
+
|
|
215
|
+
let(:argv) { %w[new_cookbook --policy] }
|
|
216
|
+
|
|
217
|
+
describe "Policyfile.rb" do
|
|
218
|
+
|
|
219
|
+
let(:file) { File.join(tempdir, "new_cookbook", "Policyfile.rb") }
|
|
220
|
+
|
|
221
|
+
let(:expected_content) do
|
|
222
|
+
<<-POLICYFILE_RB
|
|
223
|
+
# Policyfile.rb - Describe how you want Chef to build your system.
|
|
224
|
+
#
|
|
225
|
+
# For more information on the Policyfile feature, visit
|
|
226
|
+
# https://github.com/chef/chef-dk/blob/master/POLICYFILE_README.md
|
|
227
|
+
|
|
228
|
+
# A name that describes what the system you're building with Chef does.
|
|
229
|
+
name "new_cookbook"
|
|
230
|
+
|
|
231
|
+
# Where to find external cookbooks:
|
|
232
|
+
default_source :supermarket
|
|
233
|
+
|
|
234
|
+
# run_list: chef-client will run these recipes in the order specified.
|
|
235
|
+
run_list "new_cookbook::default"
|
|
236
|
+
|
|
237
|
+
# Specify a custom source for a single cookbook:
|
|
238
|
+
cookbook "new_cookbook", path: "."
|
|
239
|
+
POLICYFILE_RB
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
before do
|
|
243
|
+
Dir.chdir(tempdir) do
|
|
244
|
+
allow(cookbook_generator.chef_runner).to receive(:stdout).and_return(stdout_io)
|
|
245
|
+
cookbook_generator.run
|
|
246
|
+
end
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
it "has a run_list and cookbook path that will work out of the box" do
|
|
250
|
+
expect(IO.read(file)).to eq(expected_content)
|
|
251
|
+
end
|
|
252
|
+
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
include_examples "kitchen_yml_and_integration_tests" do
|
|
256
|
+
|
|
257
|
+
let(:expected_kitchen_yml_content) do
|
|
258
|
+
<<-KITCHEN_YML
|
|
259
|
+
---
|
|
260
|
+
driver:
|
|
261
|
+
name: vagrant
|
|
262
|
+
|
|
263
|
+
## The forwarded_port port feature lets you connect to ports on the VM guest via
|
|
264
|
+
## localhost on the host.
|
|
265
|
+
## see also: https://docs.vagrantup.com/v2/networking/forwarded_ports.html
|
|
266
|
+
|
|
267
|
+
# network:
|
|
268
|
+
# - ["forwarded_port", {guest: 80, host: 8080}]
|
|
269
|
+
|
|
270
|
+
provisioner:
|
|
271
|
+
name: policyfile_zero
|
|
272
|
+
|
|
273
|
+
## require_chef_omnibus specifies a specific chef version to install. You can
|
|
274
|
+
## also set this to `true` to always use the latest version.
|
|
275
|
+
## see also: https://docs.chef.io/config_yml_kitchen.html
|
|
276
|
+
|
|
277
|
+
# require_chef_omnibus: 12.8.1
|
|
278
|
+
|
|
279
|
+
# Uncomment the following verifier to leverage Inspec instead of Busser (the
|
|
280
|
+
# default verifier)
|
|
281
|
+
# verifier:
|
|
282
|
+
# name: inspec
|
|
283
|
+
|
|
284
|
+
platforms:
|
|
285
|
+
- name: ubuntu-14.04
|
|
286
|
+
- name: centos-7.1
|
|
287
|
+
|
|
288
|
+
suites:
|
|
289
|
+
- name: default
|
|
290
|
+
attributes:
|
|
291
|
+
KITCHEN_YML
|
|
292
|
+
end
|
|
293
|
+
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
include_examples "chefspec_spec_helper_file" do
|
|
297
|
+
|
|
298
|
+
let(:expected_chefspec_spec_helper_content) do
|
|
299
|
+
<<-SPEC_HELPER
|
|
300
|
+
require 'chefspec'
|
|
301
|
+
require 'chefspec/policyfile'
|
|
302
|
+
SPEC_HELPER
|
|
303
|
+
end
|
|
304
|
+
|
|
305
|
+
end
|
|
306
|
+
|
|
307
|
+
end
|
|
308
|
+
|
|
309
|
+
context "when configured for Berkshelf" do
|
|
310
|
+
|
|
311
|
+
let(:argv) { %w[new_cookbook --berks] }
|
|
312
|
+
|
|
313
|
+
describe "Berksfile" do
|
|
314
|
+
|
|
315
|
+
let(:file) { File.join(tempdir, "new_cookbook", "Berksfile") }
|
|
316
|
+
|
|
317
|
+
let(:expected_content) do
|
|
318
|
+
<<-POLICYFILE_RB
|
|
319
|
+
source 'https://supermarket.chef.io'
|
|
320
|
+
|
|
321
|
+
metadata
|
|
322
|
+
POLICYFILE_RB
|
|
323
|
+
end
|
|
324
|
+
|
|
325
|
+
before do
|
|
326
|
+
Dir.chdir(tempdir) do
|
|
327
|
+
allow(cookbook_generator.chef_runner).to receive(:stdout).and_return(stdout_io)
|
|
328
|
+
cookbook_generator.run
|
|
329
|
+
end
|
|
330
|
+
end
|
|
331
|
+
|
|
332
|
+
it "pulls deps from metadata" do
|
|
333
|
+
expect(IO.read(file)).to eq(expected_content)
|
|
334
|
+
end
|
|
335
|
+
|
|
336
|
+
end
|
|
337
|
+
|
|
338
|
+
include_examples "kitchen_yml_and_integration_tests" do
|
|
339
|
+
|
|
340
|
+
let(:expected_kitchen_yml_content) do
|
|
341
|
+
<<-KITCHEN_YML
|
|
342
|
+
---
|
|
343
|
+
driver:
|
|
344
|
+
name: vagrant
|
|
345
|
+
|
|
346
|
+
provisioner:
|
|
347
|
+
name: chef_zero
|
|
348
|
+
|
|
349
|
+
# Uncomment the following verifier to leverage Inspec instead of Busser (the
|
|
350
|
+
# default verifier)
|
|
351
|
+
# verifier:
|
|
352
|
+
# name: inspec
|
|
353
|
+
|
|
354
|
+
platforms:
|
|
355
|
+
- name: ubuntu-14.04
|
|
356
|
+
- name: centos-7.1
|
|
357
|
+
|
|
358
|
+
suites:
|
|
359
|
+
- name: default
|
|
360
|
+
run_list:
|
|
361
|
+
- recipe[new_cookbook::default]
|
|
362
|
+
attributes:
|
|
363
|
+
KITCHEN_YML
|
|
364
|
+
end
|
|
365
|
+
|
|
366
|
+
end
|
|
367
|
+
|
|
368
|
+
include_examples "chefspec_spec_helper_file" do
|
|
369
|
+
|
|
370
|
+
let(:expected_chefspec_spec_helper_content) do
|
|
371
|
+
<<-SPEC_HELPER
|
|
372
|
+
require 'chefspec'
|
|
373
|
+
require 'chefspec/berkshelf'
|
|
374
|
+
SPEC_HELPER
|
|
375
|
+
end
|
|
376
|
+
|
|
377
|
+
end
|
|
378
|
+
|
|
379
|
+
end
|
|
380
|
+
|
|
381
|
+
describe "metadata.rb" do
|
|
382
|
+
let(:file) { File.join(tempdir, "new_cookbook", "metadata.rb") }
|
|
383
|
+
|
|
384
|
+
include_examples "a generated file", :cookbook_name do
|
|
385
|
+
let(:line) { /name\s+'new_cookbook'/ }
|
|
386
|
+
end
|
|
387
|
+
end
|
|
388
|
+
|
|
389
|
+
describe "recipes/default.rb" do
|
|
390
|
+
let(:file) { File.join(tempdir, "new_cookbook", "recipes", "default.rb") }
|
|
391
|
+
|
|
392
|
+
include_examples "a generated file", :cookbook_name do
|
|
393
|
+
let(:line) { "# Cookbook Name:: new_cookbook" }
|
|
394
|
+
end
|
|
395
|
+
end
|
|
396
|
+
|
|
397
|
+
describe "spec/unit/recipes/default_spec.rb" do
|
|
398
|
+
let(:file) { File.join(tempdir, "new_cookbook", "spec", "unit", "recipes", "default_spec.rb") }
|
|
399
|
+
|
|
400
|
+
include_examples "a generated file", :cookbook_name do
|
|
401
|
+
let(:line) { "describe \'new_cookbook::default\' do" }
|
|
402
|
+
end
|
|
403
|
+
end
|
|
404
|
+
|
|
405
|
+
end
|
|
406
|
+
|
|
407
|
+
context "when given the path to the cookbook to generate" do
|
|
408
|
+
let(:argv) { [ File.join(tempdir, "a_new_cookbook") ] }
|
|
409
|
+
|
|
410
|
+
before do
|
|
411
|
+
reset_tempdir
|
|
412
|
+
end
|
|
413
|
+
|
|
414
|
+
it "configures the generator context" do
|
|
415
|
+
cookbook_generator.read_and_validate_params
|
|
416
|
+
cookbook_generator.setup_context
|
|
417
|
+
expect(generator_context.cookbook_root).to eq(tempdir)
|
|
418
|
+
expect(generator_context.cookbook_name).to eq("a_new_cookbook")
|
|
419
|
+
end
|
|
420
|
+
|
|
421
|
+
end
|
|
422
|
+
|
|
423
|
+
context "when given generic arguments to populate the generator context" do
|
|
424
|
+
let(:argv) { [ "new_cookbook", "--generator-arg", "key1=value1", "-a", "key2=value2", "-a", " key3 = value3 " ] }
|
|
425
|
+
|
|
426
|
+
before do
|
|
427
|
+
reset_tempdir
|
|
428
|
+
end
|
|
429
|
+
|
|
430
|
+
it "configures the generator context for long form option key1" do
|
|
431
|
+
cookbook_generator.read_and_validate_params
|
|
432
|
+
cookbook_generator.setup_context
|
|
433
|
+
expect(generator_context.key1).to eq('value1')
|
|
434
|
+
end
|
|
435
|
+
|
|
436
|
+
it "configures the generator context for short form option key2" do
|
|
437
|
+
cookbook_generator.read_and_validate_params
|
|
438
|
+
cookbook_generator.setup_context
|
|
439
|
+
expect(generator_context.key2).to eq('value2')
|
|
440
|
+
end
|
|
441
|
+
|
|
442
|
+
it "configures the generator context for key3 containing additional spaces" do
|
|
443
|
+
cookbook_generator.read_and_validate_params
|
|
444
|
+
cookbook_generator.setup_context
|
|
445
|
+
expect(generator_context.key3).to eq('value3')
|
|
446
|
+
end
|
|
447
|
+
|
|
448
|
+
end
|
|
449
|
+
|
|
450
|
+
end
|