chef-dk 2.6.2 → 3.0.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +126 -121
- data/Gemfile.lock +812 -807
- data/LICENSE +201 -201
- data/README.md +333 -333
- data/Rakefile +74 -74
- data/acceptance/.shared/kitchen_acceptance/.kitchen.digitalocean.yml +27 -27
- data/acceptance/.shared/kitchen_acceptance/.kitchen.ec2.yml +287 -287
- data/acceptance/.shared/kitchen_acceptance/.kitchen.vagrant.yml +52 -52
- data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +51 -51
- data/acceptance/.shared/kitchen_acceptance/metadata.rb +1 -1
- data/acceptance/Gemfile +21 -21
- data/acceptance/Gemfile.lock +334 -334
- data/acceptance/README.md +132 -132
- data/acceptance/trivial/.acceptance/acceptance-cookbook/.gitignore +2 -2
- data/acceptance/trivial/.acceptance/acceptance-cookbook/metadata.rb +2 -2
- data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -1
- data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -1
- data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -1
- data/acceptance/trivial/.kitchen.yml +7 -7
- data/acceptance/trivial/test/integration/chefdk-current-install/inspec/chef_client_spec.rb +5 -5
- data/bin/chef +25 -25
- data/chef-dk.gemspec +60 -60
- data/lib/chef-dk.rb +19 -19
- data/lib/chef-dk/authenticated_http.rb +22 -22
- data/lib/chef-dk/builtin_commands.rb +59 -59
- data/lib/chef-dk/chef_runner.rb +114 -114
- data/lib/chef-dk/chef_server_api_multi.rb +73 -73
- data/lib/chef-dk/cli.rb +201 -201
- data/lib/chef-dk/command/base.rb +79 -79
- data/lib/chef-dk/command/clean_policy_cookbooks.rb +114 -114
- data/lib/chef-dk/command/clean_policy_revisions.rb +111 -111
- data/lib/chef-dk/command/delete_policy.rb +120 -120
- data/lib/chef-dk/command/delete_policy_group.rb +120 -120
- data/lib/chef-dk/command/diff.rb +315 -315
- data/lib/chef-dk/command/env.rb +89 -89
- data/lib/chef-dk/command/exec.rb +44 -44
- data/lib/chef-dk/command/export.rb +155 -155
- data/lib/chef-dk/command/gem.rb +47 -47
- data/lib/chef-dk/command/generate.rb +125 -125
- data/lib/chef-dk/command/generator_commands.rb +83 -83
- data/lib/chef-dk/command/generator_commands/app.rb +106 -106
- data/lib/chef-dk/command/generator_commands/attribute.rb +36 -36
- data/lib/chef-dk/command/generator_commands/base.rb +157 -157
- data/lib/chef-dk/command/generator_commands/build_cookbook.rb +125 -125
- data/lib/chef-dk/command/generator_commands/chef_exts/generator_desc_resource.rb +85 -85
- data/lib/chef-dk/command/generator_commands/chef_exts/quieter_doc_formatter.rb +38 -38
- data/lib/chef-dk/command/generator_commands/chef_exts/recipe_dsl_ext.rb +39 -39
- data/lib/chef-dk/command/generator_commands/cookbook.rb +241 -241
- data/lib/chef-dk/command/generator_commands/cookbook_code_file.rb +100 -100
- data/lib/chef-dk/command/generator_commands/cookbook_file.rb +45 -45
- data/lib/chef-dk/command/generator_commands/generator_generator.rb +174 -174
- data/lib/chef-dk/command/generator_commands/helpers.rb +36 -36
- data/lib/chef-dk/command/generator_commands/policyfile.rb +124 -126
- data/lib/chef-dk/command/generator_commands/recipe.rb +36 -36
- data/lib/chef-dk/command/generator_commands/repo.rb +123 -123
- data/lib/chef-dk/command/generator_commands/resource.rb +36 -36
- data/lib/chef-dk/command/generator_commands/template.rb +46 -46
- data/lib/chef-dk/command/install.rb +120 -120
- data/lib/chef-dk/command/provision.rb +436 -436
- data/lib/chef-dk/command/push.rb +117 -117
- data/lib/chef-dk/command/push_archive.rb +125 -125
- data/lib/chef-dk/command/shell_init.rb +179 -179
- data/lib/chef-dk/command/show_policy.rb +163 -163
- data/lib/chef-dk/command/undelete.rb +154 -154
- data/lib/chef-dk/command/update.rb +133 -133
- data/lib/chef-dk/command/verify.rb +629 -629
- data/lib/chef-dk/commands_map.rb +113 -113
- data/lib/chef-dk/completions/bash.sh.erb +5 -5
- data/lib/chef-dk/completions/chef.fish.erb +10 -10
- data/lib/chef-dk/completions/zsh.zsh.erb +21 -21
- data/lib/chef-dk/component_test.rb +227 -227
- data/lib/chef-dk/configurable.rb +88 -88
- data/lib/chef-dk/cookbook_metadata.rb +45 -45
- data/lib/chef-dk/cookbook_omnifetch.rb +32 -32
- data/lib/chef-dk/cookbook_profiler/git.rb +152 -151
- data/lib/chef-dk/cookbook_profiler/identifiers.rb +72 -72
- data/lib/chef-dk/cookbook_profiler/null_scm.rb +31 -31
- data/lib/chef-dk/exceptions.rb +151 -150
- data/lib/chef-dk/generator.rb +165 -165
- data/lib/chef-dk/helpers.rb +176 -176
- data/lib/chef-dk/pager.rb +104 -105
- data/lib/chef-dk/policyfile/artifactory_cookbook_source.rb +102 -102
- data/lib/chef-dk/policyfile/attribute_merge_checker.rb +110 -110
- data/lib/chef-dk/policyfile/chef_repo_cookbook_source.rb +138 -138
- data/lib/chef-dk/policyfile/chef_server_cookbook_source.rb +99 -99
- data/lib/chef-dk/policyfile/chef_server_lock_fetcher.rb +167 -164
- data/lib/chef-dk/policyfile/community_cookbook_source.rb +95 -95
- data/lib/chef-dk/policyfile/comparison_base.rb +123 -123
- data/lib/chef-dk/policyfile/cookbook_location_specification.rb +154 -154
- data/lib/chef-dk/policyfile/cookbook_locks.rb +466 -466
- data/lib/chef-dk/policyfile/cookbook_sources.rb +23 -23
- data/lib/chef-dk/policyfile/delivery_supermarket_source.rb +89 -89
- data/lib/chef-dk/policyfile/differ.rb +263 -263
- data/lib/chef-dk/policyfile/dsl.rb +288 -288
- data/lib/chef-dk/policyfile/git_lock_fetcher.rb +265 -0
- data/lib/chef-dk/policyfile/included_policies_cookbook_source.rb +156 -156
- data/lib/chef-dk/policyfile/lister.rb +229 -229
- data/lib/chef-dk/policyfile/local_lock_fetcher.rb +129 -123
- data/lib/chef-dk/policyfile/lock_applier.rb +80 -80
- data/lib/chef-dk/policyfile/null_cookbook_source.rb +49 -49
- data/lib/chef-dk/policyfile/policyfile_location_specification.rb +125 -122
- data/lib/chef-dk/policyfile/read_cookbook_for_compat_mode_upload.rb +124 -124
- data/lib/chef-dk/policyfile/reports/install.rb +69 -69
- data/lib/chef-dk/policyfile/reports/table_printer.rb +57 -57
- data/lib/chef-dk/policyfile/reports/upload.rb +70 -70
- data/lib/chef-dk/policyfile/solution_dependencies.rb +311 -312
- data/lib/chef-dk/policyfile/source_uri.rb +57 -57
- data/lib/chef-dk/policyfile/storage_config.rb +112 -102
- data/lib/chef-dk/policyfile/undo_record.rb +139 -139
- data/lib/chef-dk/policyfile/undo_stack.rb +128 -128
- data/lib/chef-dk/policyfile/uploader.rb +213 -213
- data/lib/chef-dk/policyfile_compiler.rb +528 -528
- data/lib/chef-dk/policyfile_lock.rb +581 -581
- data/lib/chef-dk/policyfile_services/clean_policies.rb +95 -95
- data/lib/chef-dk/policyfile_services/clean_policy_cookbooks.rb +123 -123
- data/lib/chef-dk/policyfile_services/export_repo.rb +419 -420
- data/lib/chef-dk/policyfile_services/install.rb +162 -162
- data/lib/chef-dk/policyfile_services/push.rb +112 -112
- data/lib/chef-dk/policyfile_services/push_archive.rb +164 -200
- data/lib/chef-dk/policyfile_services/rm_policy.rb +141 -141
- data/lib/chef-dk/policyfile_services/rm_policy_group.rb +85 -85
- data/lib/chef-dk/policyfile_services/show_policy.rb +234 -236
- data/lib/chef-dk/policyfile_services/undelete.rb +108 -108
- data/lib/chef-dk/policyfile_services/update_attributes.rb +110 -110
- data/lib/chef-dk/service_exception_inspectors.rb +24 -24
- data/lib/chef-dk/service_exception_inspectors/base.rb +39 -39
- data/lib/chef-dk/service_exception_inspectors/http.rb +119 -119
- data/lib/chef-dk/service_exceptions.rb +142 -142
- data/lib/chef-dk/shell_out.rb +36 -36
- data/lib/chef-dk/skeletons/code_generator/files/default/Berksfile +4 -4
- data/lib/chef-dk/skeletons/code_generator/files/default/build_cookbook/.kitchen.yml +21 -21
- data/lib/chef-dk/skeletons/code_generator/files/default/build_cookbook/README.md +146 -146
- data/lib/chef-dk/skeletons/code_generator/files/default/build_cookbook/test-fixture-recipe.rb +9 -9
- data/lib/chef-dk/skeletons/code_generator/files/default/chefignore +104 -107
- data/lib/chef-dk/skeletons/code_generator/files/default/cookbook_readmes/README-policy.md +9 -9
- data/lib/chef-dk/skeletons/code_generator/files/default/cookbook_readmes/README.md +66 -54
- data/lib/chef-dk/skeletons/code_generator/files/default/delivery-config.json +17 -17
- data/lib/chef-dk/skeletons/code_generator/files/default/delivery-project.toml +36 -36
- data/lib/chef-dk/skeletons/code_generator/files/default/gitignore +22 -22
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/README.md +24 -24
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/README.md +27 -27
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/attributes/default.rb +8 -8
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/metadata.rb +7 -7
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/recipes/default.rb +9 -9
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/README.md +56 -56
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/example/example_item.json +3 -3
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/dot-chef-repo.txt +6 -6
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/environments/README.md +9 -9
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/environments/example.json +12 -12
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/policies/README.md +24 -24
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/roles/README.md +9 -9
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/roles/example.json +12 -12
- data/lib/chef-dk/skeletons/code_generator/files/default/spec_helper.rb +3 -3
- data/lib/chef-dk/skeletons/code_generator/files/default/spec_helper_policyfile.rb +3 -3
- data/lib/chef-dk/skeletons/code_generator/metadata.rb +8 -8
- data/lib/chef-dk/skeletons/code_generator/recipes/app.rb +89 -89
- data/lib/chef-dk/skeletons/code_generator/recipes/attribute.rb +13 -13
- data/lib/chef-dk/skeletons/code_generator/recipes/build_cookbook.rb +177 -177
- data/lib/chef-dk/skeletons/code_generator/recipes/cookbook.rb +158 -152
- data/lib/chef-dk/skeletons/code_generator/recipes/cookbook_file.rb +25 -25
- data/lib/chef-dk/skeletons/code_generator/recipes/helpers.rb +21 -21
- data/lib/chef-dk/skeletons/code_generator/recipes/policyfile.rb +9 -9
- data/lib/chef-dk/skeletons/code_generator/recipes/recipe.rb +52 -52
- data/lib/chef-dk/skeletons/code_generator/recipes/repo.rb +68 -68
- data/lib/chef-dk/skeletons/code_generator/recipes/resource.rb +13 -13
- data/lib/chef-dk/skeletons/code_generator/recipes/template.rb +32 -32
- data/lib/chef-dk/skeletons/code_generator/templates/default/CHANGELOG.md.erb +11 -0
- data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.all_rights.erb +3 -3
- data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.apachev2.erb +201 -201
- data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.gplv2.erb +339 -339
- data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.gplv3.erb +674 -674
- data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.mit.erb +21 -21
- data/lib/chef-dk/skeletons/code_generator/templates/default/Policyfile.rb.erb +25 -25
- data/lib/chef-dk/skeletons/code_generator/templates/default/README.md.erb +4 -4
- data/lib/chef-dk/skeletons/code_generator/templates/default/build_cookbook/Berksfile.erb +7 -7
- data/lib/chef-dk/skeletons/code_generator/templates/default/build_cookbook/metadata.rb.erb +10 -10
- data/lib/chef-dk/skeletons/code_generator/templates/default/build_cookbook/recipe.rb.erb +8 -8
- data/lib/chef-dk/skeletons/code_generator/templates/default/helpers.rb.erb +39 -39
- data/lib/chef-dk/skeletons/code_generator/templates/default/inspec_default_test.rb.erb +18 -18
- data/lib/chef-dk/skeletons/code_generator/templates/default/kitchen.yml.erb +26 -26
- data/lib/chef-dk/skeletons/code_generator/templates/default/kitchen_policyfile.yml.erb +33 -33
- data/lib/chef-dk/skeletons/code_generator/templates/default/metadata.rb.erb +20 -20
- data/lib/chef-dk/skeletons/code_generator/templates/default/recipe.rb.erb +5 -5
- data/lib/chef-dk/skeletons/code_generator/templates/default/recipe_spec.rb.erb +35 -35
- data/lib/chef-dk/skeletons/code_generator/templates/default/repo/gitignore.erb +128 -128
- data/lib/chef-dk/skeletons/code_generator/templates/default/resource.rb.erb +1 -1
- data/lib/chef-dk/ui.rb +57 -57
- data/lib/chef-dk/version.rb +20 -20
- data/lib/kitchen/provisioner/policyfile_zero.rb +195 -195
- data/omnibus_overrides.rb +25 -25
- data/spec/shared/a_file_generator.rb +125 -125
- data/spec/shared/a_generated_file.rb +12 -12
- data/spec/shared/command_with_ui_object.rb +11 -11
- data/spec/shared/custom_generator_cookbook.rb +136 -136
- data/spec/shared/fixture_cookbook_checksums.rb +46 -46
- data/spec/shared/setup_git_committer_config.rb +54 -54
- data/spec/shared/setup_git_cookbooks.rb +53 -53
- data/spec/spec_helper.rb +51 -51
- data/spec/test_helpers.rb +84 -84
- data/spec/unit/chef_runner_spec.rb +139 -139
- data/spec/unit/chef_server_api_multi_spec.rb +120 -120
- data/spec/unit/cli_spec.rb +377 -377
- data/spec/unit/command/base_spec.rb +172 -172
- data/spec/unit/command/clean_policy_cookbooks_spec.rb +180 -180
- data/spec/unit/command/clean_policy_revisions_spec.rb +180 -180
- data/spec/unit/command/delete_policy_group_spec.rb +206 -206
- data/spec/unit/command/delete_policy_spec.rb +206 -206
- data/spec/unit/command/diff_spec.rb +311 -311
- data/spec/unit/command/env_spec.rb +52 -52
- data/spec/unit/command/exec_spec.rb +178 -178
- data/spec/unit/command/export_spec.rb +199 -199
- data/spec/unit/command/generate_spec.rb +142 -142
- data/spec/unit/command/generator_commands/app_spec.rb +166 -166
- data/spec/unit/command/generator_commands/attribute_spec.rb +31 -31
- data/spec/unit/command/generator_commands/base_spec.rb +181 -181
- data/spec/unit/command/generator_commands/build_cookbook_spec.rb +377 -377
- data/spec/unit/command/generator_commands/chef_exts/generator_desc_resource_spec.rb +97 -97
- data/spec/unit/command/generator_commands/chef_exts/recipe_dsl_ext_spec.rb +111 -111
- data/spec/unit/command/generator_commands/cookbook_file_spec.rb +31 -31
- data/spec/unit/command/generator_commands/cookbook_spec.rb +765 -756
- data/spec/unit/command/generator_commands/generator_generator_spec.rb +227 -227
- data/spec/unit/command/generator_commands/helpers_spec.rb +31 -31
- data/spec/unit/command/generator_commands/policyfile_spec.rb +223 -223
- data/spec/unit/command/generator_commands/recipe_spec.rb +37 -37
- data/spec/unit/command/generator_commands/repo_spec.rb +374 -374
- data/spec/unit/command/generator_commands/resource_spec.rb +31 -31
- data/spec/unit/command/generator_commands/template_spec.rb +31 -31
- data/spec/unit/command/install_spec.rb +179 -179
- data/spec/unit/command/provision_spec.rb +589 -589
- data/spec/unit/command/push_archive_spec.rb +153 -153
- data/spec/unit/command/push_spec.rb +198 -198
- data/spec/unit/command/shell_init_spec.rb +339 -339
- data/spec/unit/command/show_policy_spec.rb +234 -234
- data/spec/unit/command/undelete_spec.rb +244 -244
- data/spec/unit/command/update_spec.rb +283 -283
- data/spec/unit/command/verify_spec.rb +341 -341
- data/spec/unit/commands_map_spec.rb +57 -57
- data/spec/unit/component_test_spec.rb +128 -128
- data/spec/unit/configurable_spec.rb +68 -68
- data/spec/unit/cookbook_metadata_spec.rb +96 -96
- data/spec/unit/cookbook_profiler/git_spec.rb +176 -176
- data/spec/unit/cookbook_profiler/identifiers_spec.rb +81 -81
- data/spec/unit/fixtures/chef-runner-cookbooks/test_cookbook/recipes/recipe_one.rb +9 -9
- data/spec/unit/fixtures/chef-runner-cookbooks/test_cookbook/recipes/recipe_two.rb +9 -9
- data/spec/unit/fixtures/command/cli_test_command.rb +26 -26
- data/spec/unit/fixtures/command/explicit_path_example.rb +7 -7
- data/spec/unit/fixtures/configurable/test_config_loader.rb +5 -5
- data/spec/unit/fixtures/configurable/test_configurable.rb +10 -10
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/.kitchen.yml +16 -16
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/Berksfile +3 -3
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/README.md +4 -4
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/chefignore +96 -96
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/.kitchen.yml +16 -16
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/Berksfile +3 -3
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/README.md +4 -4
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/chefignore +96 -96
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/metadata.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/recipes/default.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/.kitchen.yml +16 -16
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/Berksfile +3 -3
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/README.md +4 -4
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/chefignore +96 -96
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/metadata.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/recipes/default.rb +8 -8
- data/spec/unit/fixtures/cookbooks_api/chef_server_universe.json +56 -56
- data/spec/unit/fixtures/cookbooks_api/pruned_chef_server_universe.json +30 -30
- data/spec/unit/fixtures/cookbooks_api/pruned_small_universe.json +1321 -1321
- data/spec/unit/fixtures/cookbooks_api/small_universe.json +2987 -2987
- data/spec/unit/fixtures/cookbooks_api/universe.json +1 -1
- data/spec/unit/fixtures/cookbooks_api/update_fixtures.rb +33 -33
- data/spec/unit/fixtures/dev_cookbooks/README.md +16 -16
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/berkshelf/integration_test +2 -2
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/berkshelf/verify_me +5 -5
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/chef/verify_me +3 -3
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/test-kitchen/verify_me +2 -2
- data/spec/unit/fixtures/example_cookbook/.gitignore +17 -17
- data/spec/unit/fixtures/example_cookbook/.kitchen.yml +16 -16
- data/spec/unit/fixtures/example_cookbook/Berksfile +3 -3
- data/spec/unit/fixtures/example_cookbook/README.md +4 -4
- data/spec/unit/fixtures/example_cookbook/chefignore +96 -96
- data/spec/unit/fixtures/example_cookbook/metadata.rb +8 -8
- data/spec/unit/fixtures/example_cookbook/recipes/default.rb +8 -8
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/.gitignore +17 -17
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/.kitchen.yml +16 -16
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/Berksfile +3 -3
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/README.md +4 -4
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/chefignore +96 -96
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/metadata.json +5 -5
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/recipes/default.rb +8 -8
- data/spec/unit/fixtures/example_cookbook_no_metadata/.gitignore +17 -17
- data/spec/unit/fixtures/example_cookbook_no_metadata/.kitchen.yml +16 -16
- data/spec/unit/fixtures/example_cookbook_no_metadata/Berksfile +3 -3
- data/spec/unit/fixtures/example_cookbook_no_metadata/README.md +4 -4
- data/spec/unit/fixtures/example_cookbook_no_metadata/chefignore +96 -96
- data/spec/unit/fixtures/example_cookbook_no_metadata/recipes/default.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/README.md +4 -4
- data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/chefignore +96 -96
- data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/metadata.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/recipes/default.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/Berksfile +3 -3
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/README.md +4 -4
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/chefignore +96 -96
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/metadata.rb +9 -9
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/recipes/default.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/.kitchen.yml +16 -16
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/Berksfile +3 -3
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/README.md +4 -4
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/chefignore +96 -96
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/metadata.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/recipes/default.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/metadata-missing/README.md +2 -2
- data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/.kitchen.yml +16 -16
- data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/README.md +4 -4
- data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb +8 -8
- data/spec/unit/generator_spec.rb +119 -119
- data/spec/unit/pager_spec.rb +117 -117
- data/spec/unit/policyfile/artifactory_cookbook_source_spec.rb +59 -59
- data/spec/unit/policyfile/attribute_merge_checker_spec.rb +80 -80
- data/spec/unit/policyfile/chef_repo_cookbook_source_spec.rb +93 -93
- data/spec/unit/policyfile/chef_server_cookbook_source_spec.rb +55 -55
- data/spec/unit/policyfile/chef_server_lock_fetcher_spec.rb +161 -161
- data/spec/unit/policyfile/community_cookbook_source_spec.rb +83 -83
- data/spec/unit/policyfile/comparison_base_spec.rb +340 -340
- data/spec/unit/policyfile/cookbook_location_specification_spec.rb +347 -347
- data/spec/unit/policyfile/cookbook_locks_spec.rb +527 -527
- data/spec/unit/policyfile/delivery_supermarket_source_spec.rb +129 -129
- data/spec/unit/policyfile/differ_spec.rb +686 -686
- data/spec/unit/policyfile/git_lock_fetcher_spec.rb +155 -0
- data/spec/unit/policyfile/included_policies_cookbook_source_spec.rb +242 -242
- data/spec/unit/policyfile/lister_spec.rb +268 -268
- data/spec/unit/policyfile/local_lock_fetcher_spec.rb +173 -173
- data/spec/unit/policyfile/lock_applier_spec.rb +100 -100
- data/spec/unit/policyfile/null_cookbook_source_spec.rb +34 -34
- data/spec/unit/policyfile/read_cookbook_for_compat_mode_upload_spec.rb +92 -92
- data/spec/unit/policyfile/reports/install_spec.rb +114 -114
- data/spec/unit/policyfile/reports/upload_spec.rb +94 -94
- data/spec/unit/policyfile/solution_dependencies_spec.rb +170 -170
- data/spec/unit/policyfile/source_uri_spec.rb +36 -36
- data/spec/unit/policyfile/storage_config_spec.rb +180 -180
- data/spec/unit/policyfile/undo_record_spec.rb +258 -258
- data/spec/unit/policyfile/undo_stack_spec.rb +265 -265
- data/spec/unit/policyfile/uploader_spec.rb +409 -409
- data/spec/unit/policyfile_demands_spec.rb +1197 -1197
- data/spec/unit/policyfile_evaluation_spec.rb +628 -638
- data/spec/unit/policyfile_includes_dsl_spec.rb +159 -159
- data/spec/unit/policyfile_includes_spec.rb +720 -720
- data/spec/unit/policyfile_install_with_includes_spec.rb +232 -232
- data/spec/unit/policyfile_lock_build_spec.rb +1065 -1065
- data/spec/unit/policyfile_lock_install_spec.rb +137 -137
- data/spec/unit/policyfile_lock_serialization_spec.rb +424 -424
- data/spec/unit/policyfile_lock_validation_spec.rb +608 -608
- data/spec/unit/policyfile_services/clean_policies_spec.rb +236 -236
- data/spec/unit/policyfile_services/clean_policy_cookbooks_spec.rb +272 -272
- data/spec/unit/policyfile_services/export_repo_spec.rb +473 -478
- data/spec/unit/policyfile_services/install_spec.rb +209 -209
- data/spec/unit/policyfile_services/push_archive_spec.rb +359 -374
- data/spec/unit/policyfile_services/push_spec.rb +249 -249
- data/spec/unit/policyfile_services/rm_policy_group_spec.rb +237 -237
- data/spec/unit/policyfile_services/rm_policy_spec.rb +263 -263
- data/spec/unit/policyfile_services/show_policy_spec.rb +887 -887
- data/spec/unit/policyfile_services/undelete_spec.rb +302 -302
- data/spec/unit/policyfile_services/update_attributes_spec.rb +229 -229
- data/spec/unit/policyfile_services/update_spec.rb +140 -140
- data/spec/unit/service_exception_inspectors/base_spec.rb +41 -41
- data/spec/unit/service_exception_inspectors/http_spec.rb +138 -138
- data/spec/unit/shell_out_spec.rb +34 -34
- data/tasks/announce.rb +57 -57
- data/tasks/bin/bundle-platform.bat +2 -2
- data/tasks/dependencies.rb +89 -89
- data/tasks/templates/prerelease.md.erb +35 -35
- data/tasks/templates/release.md.erb +34 -34
- data/warning.txt +9 -9
- metadata +9 -5
|
@@ -1,94 +1,94 @@
|
|
|
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/policyfile/reports/upload"
|
|
20
|
-
|
|
21
|
-
# For the LockedCookbookForUpload class:
|
|
22
|
-
require "chef-dk/policyfile/uploader"
|
|
23
|
-
|
|
24
|
-
# Used for verifying doubles
|
|
25
|
-
require "chef-dk/policyfile/cookbook_locks"
|
|
26
|
-
|
|
27
|
-
describe ChefDK::Policyfile::Reports::Upload do
|
|
28
|
-
|
|
29
|
-
let(:ui) { TestHelpers::TestUI.new }
|
|
30
|
-
|
|
31
|
-
let(:reused_cookbooks) { [] }
|
|
32
|
-
|
|
33
|
-
let(:uploaded_cookbooks) { [] }
|
|
34
|
-
|
|
35
|
-
subject(:upload_report) { described_class.new(ui: ui, reused_cbs: reused_cookbooks, uploaded_cbs: uploaded_cookbooks) }
|
|
36
|
-
|
|
37
|
-
it "has a ui object" do
|
|
38
|
-
expect(upload_report.ui).to eq(ui)
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
it "has a list of cookbooks that are being uploaded" do
|
|
42
|
-
expect(upload_report.uploaded_cbs).to equal(uploaded_cookbooks)
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
it "has a list of cookbooks that would be uploaded but are already on the server" do
|
|
46
|
-
expect(upload_report.reused_cbs).to equal(reused_cookbooks)
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
describe "reporting uploaded and reused cookbooks" do
|
|
50
|
-
|
|
51
|
-
def cb_with_lock(name, version, identifier)
|
|
52
|
-
lock = instance_double("ChefDK::Policyfile::CookbookLock",
|
|
53
|
-
name: name,
|
|
54
|
-
version: version,
|
|
55
|
-
identifier: identifier)
|
|
56
|
-
|
|
57
|
-
ChefDK::Policyfile::Uploader::LockedCookbookForUpload.new(nil, lock)
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
let(:cookbook_one) do
|
|
61
|
-
cb_with_lock("short-name", "10.11.12", "49582c3db4e3b54674ecfb57fe82157720350274")
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
let(:cookbook_two) do
|
|
65
|
-
cb_with_lock("a-longer-named-cookbook", "1.0.0", "e4ac353bebdc949cd2cd8ce69983a56b96917dfa")
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
let(:reused_cookbooks) { [ cookbook_one, cookbook_two ] }
|
|
69
|
-
|
|
70
|
-
let(:cookbook_three) do
|
|
71
|
-
cb_with_lock("foo", "1.2.42", "cb61daebfb0d255cae928ca1a92db29b055755cf")
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
let(:cookbook_four) do
|
|
75
|
-
cb_with_lock("barbazqux", "12.34.5678", "1241ea6f9866d0e61d11129bb32e5fc96cd2bac0")
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
let(:uploaded_cookbooks) { [ cookbook_three, cookbook_four ] }
|
|
79
|
-
|
|
80
|
-
it "prints a table showing the re-used and uploaded cookbooks" do
|
|
81
|
-
upload_report.show
|
|
82
|
-
|
|
83
|
-
expected_output = <<-E
|
|
84
|
-
Using short-name 10.11.12 (49582c3d)
|
|
85
|
-
Using a-longer-named-cookbook 1.0.0 (e4ac353b)
|
|
86
|
-
Uploaded foo 1.2.42 (cb61daeb)
|
|
87
|
-
Uploaded barbazqux 12.34.5678 (1241ea6f)
|
|
88
|
-
E
|
|
89
|
-
expect(ui.output).to eq(expected_output)
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
end
|
|
1
|
+
#
|
|
2
|
+
# Copyright:: Copyright (c) 2014-2018 Chef Software Inc.
|
|
3
|
+
# License:: Apache License, Version 2.0
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
#
|
|
17
|
+
|
|
18
|
+
require "spec_helper"
|
|
19
|
+
require "chef-dk/policyfile/reports/upload"
|
|
20
|
+
|
|
21
|
+
# For the LockedCookbookForUpload class:
|
|
22
|
+
require "chef-dk/policyfile/uploader"
|
|
23
|
+
|
|
24
|
+
# Used for verifying doubles
|
|
25
|
+
require "chef-dk/policyfile/cookbook_locks"
|
|
26
|
+
|
|
27
|
+
describe ChefDK::Policyfile::Reports::Upload do
|
|
28
|
+
|
|
29
|
+
let(:ui) { TestHelpers::TestUI.new }
|
|
30
|
+
|
|
31
|
+
let(:reused_cookbooks) { [] }
|
|
32
|
+
|
|
33
|
+
let(:uploaded_cookbooks) { [] }
|
|
34
|
+
|
|
35
|
+
subject(:upload_report) { described_class.new(ui: ui, reused_cbs: reused_cookbooks, uploaded_cbs: uploaded_cookbooks) }
|
|
36
|
+
|
|
37
|
+
it "has a ui object" do
|
|
38
|
+
expect(upload_report.ui).to eq(ui)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it "has a list of cookbooks that are being uploaded" do
|
|
42
|
+
expect(upload_report.uploaded_cbs).to equal(uploaded_cookbooks)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "has a list of cookbooks that would be uploaded but are already on the server" do
|
|
46
|
+
expect(upload_report.reused_cbs).to equal(reused_cookbooks)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
describe "reporting uploaded and reused cookbooks" do
|
|
50
|
+
|
|
51
|
+
def cb_with_lock(name, version, identifier)
|
|
52
|
+
lock = instance_double("ChefDK::Policyfile::CookbookLock",
|
|
53
|
+
name: name,
|
|
54
|
+
version: version,
|
|
55
|
+
identifier: identifier)
|
|
56
|
+
|
|
57
|
+
ChefDK::Policyfile::Uploader::LockedCookbookForUpload.new(nil, lock)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
let(:cookbook_one) do
|
|
61
|
+
cb_with_lock("short-name", "10.11.12", "49582c3db4e3b54674ecfb57fe82157720350274")
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
let(:cookbook_two) do
|
|
65
|
+
cb_with_lock("a-longer-named-cookbook", "1.0.0", "e4ac353bebdc949cd2cd8ce69983a56b96917dfa")
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
let(:reused_cookbooks) { [ cookbook_one, cookbook_two ] }
|
|
69
|
+
|
|
70
|
+
let(:cookbook_three) do
|
|
71
|
+
cb_with_lock("foo", "1.2.42", "cb61daebfb0d255cae928ca1a92db29b055755cf")
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
let(:cookbook_four) do
|
|
75
|
+
cb_with_lock("barbazqux", "12.34.5678", "1241ea6f9866d0e61d11129bb32e5fc96cd2bac0")
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
let(:uploaded_cookbooks) { [ cookbook_three, cookbook_four ] }
|
|
79
|
+
|
|
80
|
+
it "prints a table showing the re-used and uploaded cookbooks" do
|
|
81
|
+
upload_report.show
|
|
82
|
+
|
|
83
|
+
expected_output = <<-E
|
|
84
|
+
Using short-name 10.11.12 (49582c3d)
|
|
85
|
+
Using a-longer-named-cookbook 1.0.0 (e4ac353b)
|
|
86
|
+
Uploaded foo 1.2.42 (cb61daeb)
|
|
87
|
+
Uploaded barbazqux 12.34.5678 (1241ea6f)
|
|
88
|
+
E
|
|
89
|
+
expect(ui.output).to eq(expected_output)
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
end
|
|
@@ -1,170 +1,170 @@
|
|
|
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/policyfile/solution_dependencies"
|
|
20
|
-
|
|
21
|
-
describe ChefDK::Policyfile::SolutionDependencies do
|
|
22
|
-
|
|
23
|
-
let(:dependency_data) { { "Policyfile" => [], "dependencies" => {} } }
|
|
24
|
-
|
|
25
|
-
let(:solution_dependencies) do
|
|
26
|
-
s = described_class.new
|
|
27
|
-
s.consume_lock_data(dependency_data)
|
|
28
|
-
s
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
it "has a list of dependencies declared in the Policyfile" do
|
|
32
|
-
expect(solution_dependencies.policyfile_dependencies).to eq([])
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
it "has a map of dependencies declared by cookbooks" do
|
|
36
|
-
expect(solution_dependencies.cookbook_dependencies).to eq({})
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
context "when populated with dependency data from a lockfile" do
|
|
40
|
-
|
|
41
|
-
let(:dependency_data) do
|
|
42
|
-
{
|
|
43
|
-
"Policyfile" => [
|
|
44
|
-
[ "nginx", "~> 1.0"], ["postgresql", ">= 0.0.0" ]
|
|
45
|
-
],
|
|
46
|
-
"dependencies" => {
|
|
47
|
-
"nginx (1.2.3)" => [ ["apt", "~> 2.3"], ["yum", "~>3.4"] ],
|
|
48
|
-
"apt (2.5.6)" => [],
|
|
49
|
-
"yum (3.4.1)" => [],
|
|
50
|
-
"postgresql (5.0.0)" => [],
|
|
51
|
-
},
|
|
52
|
-
}
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
it "has a list of dependencies from the policyfile" do
|
|
56
|
-
expected = [ "nginx", "~> 1.0"], ["postgresql", ">= 0.0.0" ]
|
|
57
|
-
expect(solution_dependencies.policyfile_dependencies_for_lock).to eq(expected)
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
it "has a list of dependencies from cookbooks" do
|
|
61
|
-
expected = {
|
|
62
|
-
"nginx (1.2.3)" => [ ["apt", "~> 2.3"], ["yum", "~> 3.4"] ],
|
|
63
|
-
"apt (2.5.6)" => [],
|
|
64
|
-
"yum (3.4.1)" => [],
|
|
65
|
-
"postgresql (5.0.0)" => [],
|
|
66
|
-
}
|
|
67
|
-
expect(solution_dependencies.cookbook_deps_for_lock).to eq(expected)
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
context "when populated with dependency data from a complex lockfile" do
|
|
73
|
-
let(:dependency_data) do
|
|
74
|
-
{
|
|
75
|
-
"Policyfile" => [
|
|
76
|
-
[ "a", ">= 0.0.0"], ["b", ">= 0.0.0" ]
|
|
77
|
-
],
|
|
78
|
-
"dependencies" => {
|
|
79
|
-
"a (0.1.0)" => [ ["c", "~> 1.0.0"], ["d", "~> 0.0.0"] ],
|
|
80
|
-
"b (1.0.0)" => [ ["f", ">= 0.0.1"] ],
|
|
81
|
-
"c (1.0.1)" => [ ["e", ">= 0.0.1"] ],
|
|
82
|
-
"d (0.0.1)" => [],
|
|
83
|
-
"e (0.0.1)" => [],
|
|
84
|
-
"f (0.0.1)" => [],
|
|
85
|
-
},
|
|
86
|
-
}
|
|
87
|
-
end
|
|
88
|
-
it "can compute list of transitive dependencies" do
|
|
89
|
-
|
|
90
|
-
expect(solution_dependencies.transitive_deps(["e"])).to eq(["e"])
|
|
91
|
-
expect(solution_dependencies.transitive_deps(["c"])).to eq(%w{c e})
|
|
92
|
-
expect(solution_dependencies.transitive_deps(%w{c d})).to eq(%w{c d e})
|
|
93
|
-
expect(solution_dependencies.transitive_deps(["a"])).to eq(%w{a c d e})
|
|
94
|
-
end
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
context "when populated with dependency data" do
|
|
98
|
-
|
|
99
|
-
let(:expected_deps_for_lock) do
|
|
100
|
-
{
|
|
101
|
-
"nginx (1.2.3)" => [ ["apt", "~> 2.3"], ["yum", "~> 3.4"] ],
|
|
102
|
-
"apt (2.5.6)" => [],
|
|
103
|
-
"yum (3.4.1)" => [],
|
|
104
|
-
"postgresql (5.0.0)" => [],
|
|
105
|
-
}
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
let(:expected_policyfile_deps_for_lock) do
|
|
109
|
-
[ [ "nginx", "~> 1.0"], ["postgresql", ">= 0.0.0" ] ]
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
before do
|
|
113
|
-
solution_dependencies.add_policyfile_dep("nginx", "~> 1.0")
|
|
114
|
-
solution_dependencies.add_policyfile_dep("postgresql", ">= 0.0.0")
|
|
115
|
-
solution_dependencies.add_cookbook_dep("nginx", "1.2.3", [ ["apt", "~> 2.3"], ["yum", "~>3.4"] ])
|
|
116
|
-
solution_dependencies.add_cookbook_dep("apt", "2.5.6", [])
|
|
117
|
-
solution_dependencies.add_cookbook_dep("yum", "3.4.1", [])
|
|
118
|
-
solution_dependencies.add_cookbook_dep("postgresql", "5.0.0", [])
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
it "has a list of dependencies from the Policyfile" do
|
|
122
|
-
expect(solution_dependencies.policyfile_dependencies_for_lock).to eq(expected_policyfile_deps_for_lock)
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
it "has a list of dependencies from cookbooks" do
|
|
126
|
-
expect(solution_dependencies.cookbook_deps_for_lock).to eq(expected_deps_for_lock)
|
|
127
|
-
end
|
|
128
|
-
|
|
129
|
-
it "generates lock info containing both policyfile and cookbook dependencies" do
|
|
130
|
-
expected = { "Policyfile" => expected_policyfile_deps_for_lock, "dependencies" => expected_deps_for_lock }
|
|
131
|
-
expect(solution_dependencies.to_lock).to eq(expected)
|
|
132
|
-
end
|
|
133
|
-
|
|
134
|
-
describe "checking for dependency conflicts" do
|
|
135
|
-
|
|
136
|
-
it "does not raise if a cookbook that's in the dependency set with a different version doesn't conflict" do
|
|
137
|
-
solution_dependencies.update_cookbook_dep("yum", "3.5.0", [ ])
|
|
138
|
-
expect(solution_dependencies.test_conflict!("yum", "3.5.0")).to be(false)
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
it "raises if a cookbook is not in the current solution set" do
|
|
142
|
-
expected_message = "Cookbook foo (1.0.0) not in the working set, cannot test for conflicts"
|
|
143
|
-
expect { solution_dependencies.test_conflict!("foo", "1.0.0") }.to raise_error(ChefDK::CookbookNotInWorkingSet, expected_message)
|
|
144
|
-
end
|
|
145
|
-
|
|
146
|
-
it "raises when a cookbook conflicts with a Policyfile constraint" do
|
|
147
|
-
solution_dependencies.update_cookbook_dep("nginx", "2.0.0", [])
|
|
148
|
-
|
|
149
|
-
expected_message = "Cookbook nginx (2.0.0) conflicts with other dependencies:\nPolicyfile depends on nginx ~> 1.0"
|
|
150
|
-
expect { solution_dependencies.test_conflict!("nginx", "2.0.0") }.to raise_error(ChefDK::DependencyConflict, expected_message)
|
|
151
|
-
end
|
|
152
|
-
|
|
153
|
-
it "raises when a cookbook conflicts with another cookbook's dependency constraint" do
|
|
154
|
-
solution_dependencies.update_cookbook_dep("apt", "3.0.0", [])
|
|
155
|
-
|
|
156
|
-
expected_message = "Cookbook apt (3.0.0) conflicts with other dependencies:\nnginx (1.2.3) depends on apt ~> 2.3"
|
|
157
|
-
expect { solution_dependencies.test_conflict!("apt", "3.0.0") }.to raise_error(ChefDK::DependencyConflict, expected_message)
|
|
158
|
-
end
|
|
159
|
-
|
|
160
|
-
it "raises when a cookbook's dependencies are no longer satisfiable" do
|
|
161
|
-
solution_dependencies.update_cookbook_dep("nginx", "1.2.3", [ [ "apt", "~> 3.0" ] ])
|
|
162
|
-
expected_message = "Cookbook nginx (1.2.3) has dependency constraints that cannot be met by the existing cookbook set:\n" +
|
|
163
|
-
"Dependency on apt ~> 3.0 conflicts with existing version apt (2.5.6)"
|
|
164
|
-
expect { solution_dependencies.test_conflict!("nginx", "1.2.3") }.to raise_error(ChefDK::DependencyConflict, expected_message)
|
|
165
|
-
end
|
|
166
|
-
|
|
167
|
-
end
|
|
168
|
-
end
|
|
169
|
-
|
|
170
|
-
end
|
|
1
|
+
#
|
|
2
|
+
# Copyright:: Copyright (c) 2014-2018 Chef Software Inc.
|
|
3
|
+
# License:: Apache License, Version 2.0
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
#
|
|
17
|
+
|
|
18
|
+
require "spec_helper"
|
|
19
|
+
require "chef-dk/policyfile/solution_dependencies"
|
|
20
|
+
|
|
21
|
+
describe ChefDK::Policyfile::SolutionDependencies do
|
|
22
|
+
|
|
23
|
+
let(:dependency_data) { { "Policyfile" => [], "dependencies" => {} } }
|
|
24
|
+
|
|
25
|
+
let(:solution_dependencies) do
|
|
26
|
+
s = described_class.new
|
|
27
|
+
s.consume_lock_data(dependency_data)
|
|
28
|
+
s
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "has a list of dependencies declared in the Policyfile" do
|
|
32
|
+
expect(solution_dependencies.policyfile_dependencies).to eq([])
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "has a map of dependencies declared by cookbooks" do
|
|
36
|
+
expect(solution_dependencies.cookbook_dependencies).to eq({})
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
context "when populated with dependency data from a lockfile" do
|
|
40
|
+
|
|
41
|
+
let(:dependency_data) do
|
|
42
|
+
{
|
|
43
|
+
"Policyfile" => [
|
|
44
|
+
[ "nginx", "~> 1.0"], ["postgresql", ">= 0.0.0" ]
|
|
45
|
+
],
|
|
46
|
+
"dependencies" => {
|
|
47
|
+
"nginx (1.2.3)" => [ ["apt", "~> 2.3"], ["yum", "~>3.4"] ],
|
|
48
|
+
"apt (2.5.6)" => [],
|
|
49
|
+
"yum (3.4.1)" => [],
|
|
50
|
+
"postgresql (5.0.0)" => [],
|
|
51
|
+
},
|
|
52
|
+
}
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it "has a list of dependencies from the policyfile" do
|
|
56
|
+
expected = [ "nginx", "~> 1.0"], ["postgresql", ">= 0.0.0" ]
|
|
57
|
+
expect(solution_dependencies.policyfile_dependencies_for_lock).to eq(expected)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
it "has a list of dependencies from cookbooks" do
|
|
61
|
+
expected = {
|
|
62
|
+
"nginx (1.2.3)" => [ ["apt", "~> 2.3"], ["yum", "~> 3.4"] ],
|
|
63
|
+
"apt (2.5.6)" => [],
|
|
64
|
+
"yum (3.4.1)" => [],
|
|
65
|
+
"postgresql (5.0.0)" => [],
|
|
66
|
+
}
|
|
67
|
+
expect(solution_dependencies.cookbook_deps_for_lock).to eq(expected)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
context "when populated with dependency data from a complex lockfile" do
|
|
73
|
+
let(:dependency_data) do
|
|
74
|
+
{
|
|
75
|
+
"Policyfile" => [
|
|
76
|
+
[ "a", ">= 0.0.0"], ["b", ">= 0.0.0" ]
|
|
77
|
+
],
|
|
78
|
+
"dependencies" => {
|
|
79
|
+
"a (0.1.0)" => [ ["c", "~> 1.0.0"], ["d", "~> 0.0.0"] ],
|
|
80
|
+
"b (1.0.0)" => [ ["f", ">= 0.0.1"] ],
|
|
81
|
+
"c (1.0.1)" => [ ["e", ">= 0.0.1"] ],
|
|
82
|
+
"d (0.0.1)" => [],
|
|
83
|
+
"e (0.0.1)" => [],
|
|
84
|
+
"f (0.0.1)" => [],
|
|
85
|
+
},
|
|
86
|
+
}
|
|
87
|
+
end
|
|
88
|
+
it "can compute list of transitive dependencies" do
|
|
89
|
+
|
|
90
|
+
expect(solution_dependencies.transitive_deps(["e"])).to eq(["e"])
|
|
91
|
+
expect(solution_dependencies.transitive_deps(["c"])).to eq(%w{c e})
|
|
92
|
+
expect(solution_dependencies.transitive_deps(%w{c d})).to eq(%w{c d e})
|
|
93
|
+
expect(solution_dependencies.transitive_deps(["a"])).to eq(%w{a c d e})
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
context "when populated with dependency data" do
|
|
98
|
+
|
|
99
|
+
let(:expected_deps_for_lock) do
|
|
100
|
+
{
|
|
101
|
+
"nginx (1.2.3)" => [ ["apt", "~> 2.3"], ["yum", "~> 3.4"] ],
|
|
102
|
+
"apt (2.5.6)" => [],
|
|
103
|
+
"yum (3.4.1)" => [],
|
|
104
|
+
"postgresql (5.0.0)" => [],
|
|
105
|
+
}
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
let(:expected_policyfile_deps_for_lock) do
|
|
109
|
+
[ [ "nginx", "~> 1.0"], ["postgresql", ">= 0.0.0" ] ]
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
before do
|
|
113
|
+
solution_dependencies.add_policyfile_dep("nginx", "~> 1.0")
|
|
114
|
+
solution_dependencies.add_policyfile_dep("postgresql", ">= 0.0.0")
|
|
115
|
+
solution_dependencies.add_cookbook_dep("nginx", "1.2.3", [ ["apt", "~> 2.3"], ["yum", "~>3.4"] ])
|
|
116
|
+
solution_dependencies.add_cookbook_dep("apt", "2.5.6", [])
|
|
117
|
+
solution_dependencies.add_cookbook_dep("yum", "3.4.1", [])
|
|
118
|
+
solution_dependencies.add_cookbook_dep("postgresql", "5.0.0", [])
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
it "has a list of dependencies from the Policyfile" do
|
|
122
|
+
expect(solution_dependencies.policyfile_dependencies_for_lock).to eq(expected_policyfile_deps_for_lock)
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
it "has a list of dependencies from cookbooks" do
|
|
126
|
+
expect(solution_dependencies.cookbook_deps_for_lock).to eq(expected_deps_for_lock)
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
it "generates lock info containing both policyfile and cookbook dependencies" do
|
|
130
|
+
expected = { "Policyfile" => expected_policyfile_deps_for_lock, "dependencies" => expected_deps_for_lock }
|
|
131
|
+
expect(solution_dependencies.to_lock).to eq(expected)
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
describe "checking for dependency conflicts" do
|
|
135
|
+
|
|
136
|
+
it "does not raise if a cookbook that's in the dependency set with a different version doesn't conflict" do
|
|
137
|
+
solution_dependencies.update_cookbook_dep("yum", "3.5.0", [ ])
|
|
138
|
+
expect(solution_dependencies.test_conflict!("yum", "3.5.0")).to be(false)
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
it "raises if a cookbook is not in the current solution set" do
|
|
142
|
+
expected_message = "Cookbook foo (1.0.0) not in the working set, cannot test for conflicts"
|
|
143
|
+
expect { solution_dependencies.test_conflict!("foo", "1.0.0") }.to raise_error(ChefDK::CookbookNotInWorkingSet, expected_message)
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
it "raises when a cookbook conflicts with a Policyfile constraint" do
|
|
147
|
+
solution_dependencies.update_cookbook_dep("nginx", "2.0.0", [])
|
|
148
|
+
|
|
149
|
+
expected_message = "Cookbook nginx (2.0.0) conflicts with other dependencies:\nPolicyfile depends on nginx ~> 1.0"
|
|
150
|
+
expect { solution_dependencies.test_conflict!("nginx", "2.0.0") }.to raise_error(ChefDK::DependencyConflict, expected_message)
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
it "raises when a cookbook conflicts with another cookbook's dependency constraint" do
|
|
154
|
+
solution_dependencies.update_cookbook_dep("apt", "3.0.0", [])
|
|
155
|
+
|
|
156
|
+
expected_message = "Cookbook apt (3.0.0) conflicts with other dependencies:\nnginx (1.2.3) depends on apt ~> 2.3"
|
|
157
|
+
expect { solution_dependencies.test_conflict!("apt", "3.0.0") }.to raise_error(ChefDK::DependencyConflict, expected_message)
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
it "raises when a cookbook's dependencies are no longer satisfiable" do
|
|
161
|
+
solution_dependencies.update_cookbook_dep("nginx", "1.2.3", [ [ "apt", "~> 3.0" ] ])
|
|
162
|
+
expected_message = "Cookbook nginx (1.2.3) has dependency constraints that cannot be met by the existing cookbook set:\n" +
|
|
163
|
+
"Dependency on apt ~> 3.0 conflicts with existing version apt (2.5.6)"
|
|
164
|
+
expect { solution_dependencies.test_conflict!("nginx", "1.2.3") }.to raise_error(ChefDK::DependencyConflict, expected_message)
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
end
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
end
|