chef 12.18.31 → 13.0.118
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 +15 -11
- data/README.md +13 -13
- data/Rakefile +1 -19
- data/VERSION +1 -1
- data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +1 -1
- data/acceptance/Gemfile +8 -5
- data/acceptance/Gemfile.lock +90 -81
- data/acceptance/basics/test/integration/chef-current-install/serverspec/chef_client_spec.rb +1 -1
- data/acceptance/data-collector/.acceptance/data-collector-test/metadata.rb +1 -1
- data/acceptance/data-collector/test/integration/default/serverspec/default_spec.rb +4 -0
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/libraries/top_cookbooks.rb +9 -8
- data/chef-universal-mingw32.gemspec +2 -3
- data/chef.gemspec +8 -7
- data/lib/chef/api_client.rb +8 -15
- data/lib/chef/api_client_v1.rb +9 -11
- data/lib/chef/application/apply.rb +8 -10
- data/lib/chef/application/client.rb +1 -1
- data/lib/chef/application/exit_code.rb +11 -82
- data/lib/chef/application/knife.rb +2 -2
- data/lib/chef/application/solo.rb +0 -1
- data/lib/chef/application/windows_service.rb +36 -37
- data/lib/chef/application/windows_service_manager.rb +1 -1
- data/lib/chef/application.rb +15 -25
- data/lib/chef/audit/audit_event_proxy.rb +2 -2
- data/lib/chef/audit/control_group_data.rb +1 -1
- data/lib/chef/blacklist.rb +81 -0
- data/lib/chef/chef_class.rb +1 -0
- data/lib/chef/chef_fs/chef_fs_data_store.rb +6 -8
- data/lib/chef/chef_fs/command_line.rb +15 -16
- data/lib/chef/chef_fs/data_handler/client_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/container_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/group_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/node_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/role_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/user_data_handler.rb +1 -1
- data/lib/chef/chef_fs/file_pattern.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifacts_dir.rb +6 -2
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +18 -32
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +8 -10
- data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +5 -1
- data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +8 -10
- data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +10 -12
- data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +28 -30
- data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +27 -29
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +29 -26
- data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbooks_dir.rb +5 -1
- data/lib/chef/chef_fs/file_system/memory/memory_file.rb +1 -1
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +10 -12
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +13 -16
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +9 -13
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +2 -0
- data/lib/chef/chef_fs/file_system/repository/cookbooks_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +3 -0
- data/lib/chef/chef_fs/file_system.rb +1 -1
- data/lib/chef/chef_fs/parallelizer.rb +9 -11
- data/lib/chef/client.rb +47 -11
- data/lib/chef/config_fetcher.rb +4 -4
- data/lib/chef/constants.rb +1 -1
- data/lib/chef/cookbook/cookbook_version_loader.rb +26 -115
- data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
- data/lib/chef/cookbook/gem_installer.rb +10 -6
- data/lib/chef/cookbook/manifest_v0.rb +68 -0
- data/lib/chef/cookbook/manifest_v2.rb +41 -0
- data/lib/chef/cookbook/metadata.rb +25 -134
- data/lib/chef/cookbook/remote_file_vendor.rb +3 -3
- data/lib/chef/cookbook/synchronizer.rb +24 -21
- data/lib/chef/cookbook/syntax_check.rb +1 -1
- data/lib/chef/cookbook_manifest.rb +91 -65
- data/lib/chef/cookbook_site_streaming_uploader.rb +7 -9
- data/lib/chef/cookbook_uploader.rb +1 -1
- data/lib/chef/cookbook_version.rb +69 -157
- data/lib/chef/data_bag.rb +1 -7
- data/lib/chef/data_bag_item.rb +5 -10
- data/lib/chef/data_collector/messages.rb +2 -0
- data/lib/chef/data_collector/resource_report.rb +32 -4
- data/lib/chef/data_collector.rb +3 -4
- data/lib/chef/decorator/unchain.rb +0 -16
- data/lib/chef/decorator.rb +1 -1
- data/lib/chef/deprecated.rb +53 -19
- data/lib/chef/dsl/audit.rb +2 -2
- data/lib/chef/dsl/declare_resource.rb +11 -17
- data/lib/chef/dsl/platform_introspection.rb +29 -31
- data/lib/chef/dsl/reboot_pending.rb +1 -1
- data/lib/chef/dsl/recipe.rb +1 -4
- data/lib/chef/dsl/resources.rb +4 -13
- data/lib/chef/encrypted_data_bag_item.rb +2 -2
- data/lib/chef/environment.rb +9 -16
- data/lib/chef/event_dispatch/base.rb +16 -0
- data/lib/chef/event_loggers/windows_eventlog.rb +1 -1
- data/lib/chef/exceptions.rb +6 -10
- data/lib/chef/file_access_control/unix.rb +14 -14
- data/lib/chef/file_access_control/windows.rb +1 -1
- data/lib/chef/formatters/error_description.rb +18 -1
- data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +4 -5
- data/lib/chef/formatters/error_mapper.rb +6 -6
- data/lib/chef/guard_interpreter/default_guard_interpreter.rb +4 -2
- data/lib/chef/http/api_versions.rb +54 -0
- data/lib/chef/http/authenticator.rb +15 -6
- data/lib/chef/http/json_output.rb +4 -1
- data/lib/chef/http/socketless_chef_zero_client.rb +1 -0
- data/lib/chef/http/validate_content_length.rb +2 -2
- data/lib/chef/http.rb +39 -0
- data/lib/chef/json_compat.rb +7 -103
- data/lib/chef/key.rb +5 -10
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +6 -6
- data/lib/chef/knife/bootstrap.rb +6 -0
- data/lib/chef/knife/configure.rb +1 -3
- data/lib/chef/knife/configure_client.rb +1 -3
- data/lib/chef/knife/cookbook_create.rb +1 -434
- data/lib/chef/knife/cookbook_download.rb +3 -4
- data/lib/chef/knife/cookbook_show.rb +7 -3
- data/lib/chef/knife/cookbook_site_install.rb +2 -2
- data/lib/chef/knife/core/bootstrap_context.rb +8 -7
- data/lib/chef/knife/core/cookbook_scm_repo.rb +2 -2
- data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
- data/lib/chef/knife/core/status_presenter.rb +1 -1
- data/lib/chef/knife/core/subcommand_loader.rb +2 -32
- data/lib/chef/knife/core/ui.rb +20 -27
- data/lib/chef/knife/data_bag_create.rb +6 -4
- data/lib/chef/knife/data_bag_secret_options.rb +1 -1
- data/lib/chef/knife/deps.rb +32 -34
- data/lib/chef/knife/edit.rb +1 -1
- data/lib/chef/knife/help.rb +1 -1
- data/lib/chef/knife/list.rb +1 -1
- data/lib/chef/knife/search.rb +9 -20
- data/lib/chef/knife/ssh.rb +62 -36
- data/lib/chef/knife/ssl_check.rb +1 -1
- data/lib/chef/knife/user_delete.rb +1 -1
- data/lib/chef/knife/xargs.rb +1 -1
- data/lib/chef/knife.rb +6 -7
- data/lib/chef/mash.rb +1 -1
- data/lib/chef/mixin/create_path.rb +3 -5
- data/lib/chef/mixin/from_file.rb +2 -2
- data/lib/chef/mixin/get_source_from_package.rb +2 -2
- data/lib/chef/mixin/notifying_block.rb +7 -9
- data/lib/chef/mixin/params_validate.rb +9 -8
- data/lib/chef/mixin/path_sanity.rb +17 -19
- data/lib/chef/mixin/securable.rb +1 -1
- data/lib/chef/mixin/shell_out.rb +33 -29
- data/lib/chef/mixin/unformatter.rb +2 -2
- data/lib/chef/mixin/uris.rb +4 -6
- data/lib/chef/mixin/versioned_api.rb +84 -0
- data/lib/chef/mixin/which.rb +25 -8
- data/lib/chef/mixin/windows_architecture_helper.rb +2 -2
- data/lib/chef/mixin/xml_escape.rb +3 -5
- data/lib/chef/mixins.rb +0 -1
- data/lib/chef/monkey_patches/webrick-utils.rb +1 -1
- data/lib/chef/node/attribute.rb +9 -32
- data/lib/chef/node/attribute_collections.rb +1 -19
- data/lib/chef/node/common_api.rb +5 -7
- data/lib/chef/node/immutable_collections.rb +42 -38
- data/lib/chef/node/mixin/immutablize_array.rb +1 -1
- data/lib/chef/node/mixin/immutablize_hash.rb +1 -1
- data/lib/chef/node.rb +21 -20
- data/lib/chef/node_map.rb +2 -5
- data/lib/chef/org.rb +10 -17
- data/lib/chef/platform/provider_mapping.rb +2 -169
- data/lib/chef/platform/query_helpers.rb +1 -1
- data/lib/chef/platform/rebooter.rb +1 -2
- data/lib/chef/policy_builder/expand_node_object.rb +3 -29
- data/lib/chef/policy_builder/policyfile.rb +8 -6
- data/lib/chef/property.rb +66 -80
- data/lib/chef/provider/apt_repository.rb +6 -10
- data/lib/chef/provider/apt_update.rb +1 -7
- data/lib/chef/provider/batch.rb +1 -1
- data/lib/chef/provider/breakpoint.rb +2 -2
- data/lib/chef/provider/cookbook_file.rb +3 -9
- data/lib/chef/provider/cron.rb +42 -60
- data/lib/chef/provider/deploy/revision.rb +3 -5
- data/lib/chef/provider/deploy.rb +82 -88
- data/lib/chef/provider/directory.rb +33 -37
- data/lib/chef/provider/dsc_resource.rb +23 -11
- data/lib/chef/provider/dsc_script.rb +1 -5
- data/lib/chef/provider/env/windows.rb +5 -1
- data/lib/chef/provider/env.rb +32 -30
- data/lib/chef/provider/erl_call.rb +15 -47
- data/lib/chef/provider/execute.rb +7 -8
- data/lib/chef/provider/file.rb +49 -61
- data/lib/chef/provider/git.rb +56 -60
- data/lib/chef/provider/group.rb +1 -7
- data/lib/chef/provider/http_request.rb +37 -41
- data/lib/chef/provider/ifconfig/redhat.rb +1 -1
- data/lib/chef/provider/ifconfig.rb +0 -6
- data/lib/chef/provider/launchd.rb +6 -2
- data/lib/chef/provider/link.rb +51 -55
- data/lib/chef/provider/log.rb +3 -7
- data/lib/chef/provider/lwrp_base.rb +0 -9
- data/lib/chef/provider/mdadm.rb +25 -33
- data/lib/chef/provider/mount/aix.rb +2 -2
- data/lib/chef/provider/mount/mount.rb +2 -2
- data/lib/chef/provider/mount.rb +1 -5
- data/lib/chef/provider/noop.rb +1 -1
- data/lib/chef/provider/ohai.rb +1 -7
- data/lib/chef/provider/osx_profile.rb +24 -29
- data/lib/chef/provider/package/aix.rb +55 -53
- data/lib/chef/provider/package/apt.rb +15 -13
- data/lib/chef/provider/package/cab.rb +48 -20
- data/lib/chef/provider/package/chocolatey.rb +9 -10
- data/lib/chef/provider/package/dnf/dnf_helper.py +1 -1
- data/lib/chef/provider/package/dnf/python_helper.rb +63 -26
- data/lib/chef/provider/package/dnf/version.rb +1 -1
- data/lib/chef/provider/package/dnf.rb +21 -19
- data/lib/chef/provider/package/dpkg.rb +8 -9
- data/lib/chef/provider/package/freebsd/base.rb +10 -10
- data/lib/chef/provider/package/freebsd/pkg.rb +15 -15
- data/lib/chef/provider/package/freebsd/pkgng.rb +13 -15
- data/lib/chef/provider/package/freebsd/port.rb +7 -7
- data/lib/chef/provider/package/homebrew.rb +11 -10
- data/lib/chef/provider/package/ips.rb +18 -24
- data/lib/chef/provider/package/macports.rb +23 -23
- data/lib/chef/provider/package/msu.rb +11 -12
- data/lib/chef/provider/package/openbsd.rb +25 -22
- data/lib/chef/provider/package/pacman.rb +16 -17
- data/lib/chef/provider/package/paludis.rb +26 -27
- data/lib/chef/provider/package/portage.rb +22 -23
- data/lib/chef/provider/package/powershell.rb +17 -17
- data/lib/chef/provider/package/rpm.rb +25 -26
- data/lib/chef/provider/package/rubygems.rb +64 -62
- data/lib/chef/provider/package/smartos.rb +16 -16
- data/lib/chef/provider/package/solaris.rb +44 -45
- data/lib/chef/provider/package/windows/exe.rb +6 -6
- data/lib/chef/provider/package/windows/msi.rb +7 -7
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -3
- data/lib/chef/provider/package/windows.rb +3 -3
- data/lib/chef/provider/package/yum/rpm_utils.rb +34 -34
- data/lib/chef/provider/package/yum/yum_cache.rb +12 -12
- data/lib/chef/provider/package/yum.rb +319 -269
- data/lib/chef/provider/package/zypper.rb +10 -20
- data/lib/chef/provider/package.rb +71 -63
- data/lib/chef/provider/powershell_script.rb +15 -7
- data/lib/chef/provider/reboot.rb +10 -14
- data/lib/chef/provider/registry_key.rb +39 -43
- data/lib/chef/provider/remote_directory.rb +3 -15
- data/lib/chef/provider/remote_file.rb +3 -9
- data/lib/chef/provider/route.rb +1 -7
- data/lib/chef/provider/ruby_block.rb +4 -8
- data/lib/chef/provider/script.rb +42 -6
- data/lib/chef/provider/service/aix.rb +1 -5
- data/lib/chef/provider/service/debian.rb +15 -21
- data/lib/chef/provider/service/freebsd.rb +0 -1
- data/lib/chef/provider/service/gentoo.rb +0 -1
- data/lib/chef/provider/service/init.rb +0 -1
- data/lib/chef/provider/service/insserv.rb +2 -2
- data/lib/chef/provider/service/openbsd.rb +0 -1
- data/lib/chef/provider/service/redhat.rb +2 -2
- data/lib/chef/provider/service/simple.rb +0 -5
- data/lib/chef/provider/service/solaris.rb +5 -4
- data/lib/chef/provider/service/systemd.rb +1 -1
- data/lib/chef/provider/service/upstart.rb +10 -12
- data/lib/chef/provider/service/windows.rb +1 -5
- data/lib/chef/provider/service.rb +51 -58
- data/lib/chef/provider/subversion.rb +40 -46
- data/lib/chef/provider/systemd_unit.rb +2 -0
- data/lib/chef/provider/template/content.rb +24 -1
- data/lib/chef/provider/template.rb +3 -9
- data/lib/chef/provider/user/dscl.rb +3 -3
- data/lib/chef/provider/user/linux.rb +6 -5
- data/lib/chef/provider/user/pw.rb +4 -10
- data/lib/chef/provider/user/solaris.rb +2 -2
- data/lib/chef/provider/user/useradd.rb +5 -5
- data/lib/chef/provider/user.rb +43 -59
- data/lib/chef/provider/whyrun_safe_ruby_block.rb +4 -4
- data/lib/chef/provider/windows_task.rb +418 -0
- data/lib/chef/provider/yum_repository.rb +3 -6
- data/lib/chef/provider.rb +63 -115
- data/lib/chef/provider_resolver.rb +8 -34
- data/lib/chef/providers.rb +1 -1
- data/lib/chef/recipe.rb +9 -1
- data/lib/chef/resource/action_class.rb +13 -17
- data/lib/chef/resource/apt_repository.rb +0 -1
- data/lib/chef/resource/apt_update.rb +3 -1
- data/lib/chef/resource/chef_gem.rb +4 -11
- data/lib/chef/resource/chocolatey_package.rb +4 -1
- data/lib/chef/resource/dnf_package.rb +6 -3
- data/lib/chef/resource/dsc_resource.rb +9 -1
- data/lib/chef/resource/execute.rb +66 -19
- data/lib/chef/resource/file/verification/systemd_unit.rb +67 -0
- data/lib/chef/resource/file/verification.rb +2 -7
- data/lib/chef/resource/freebsd_package.rb +1 -1
- data/lib/chef/resource/gem_package.rb +16 -2
- data/lib/chef/resource/launchd.rb +3 -3
- data/lib/chef/resource/lwrp_base.rb +0 -2
- data/lib/chef/resource/mount.rb +5 -12
- data/lib/chef/resource/package.rb +2 -2
- data/lib/chef/resource/powershell_script.rb +1 -1
- data/lib/chef/resource/registry_key.rb +1 -1
- data/lib/chef/resource/script.rb +8 -34
- data/lib/chef/resource/service.rb +15 -13
- data/lib/chef/resource/systemd_unit.rb +5 -0
- data/lib/chef/resource/user/aix_user.rb +1 -1
- data/lib/chef/resource/user/dscl_user.rb +1 -1
- data/lib/chef/resource/user/linux_user.rb +1 -10
- data/lib/chef/resource/user/pw_user.rb +1 -1
- data/lib/chef/resource/user/solaris_user.rb +1 -1
- data/lib/chef/resource/user/windows_user.rb +1 -1
- data/lib/chef/resource/user.rb +1 -19
- data/lib/chef/resource/windows_package.rb +4 -1
- data/lib/chef/resource/windows_task.rb +237 -0
- data/lib/chef/resource/yum_package.rb +13 -4
- data/lib/chef/resource/yum_repository.rb +0 -1
- data/lib/chef/resource/zypper_package.rb +2 -0
- data/lib/chef/resource.rb +90 -202
- data/lib/chef/resource_builder.rb +1 -65
- data/lib/chef/resource_collection/resource_collection_serialization.rb +11 -4
- data/lib/chef/resource_collection/resource_list.rb +6 -0
- data/lib/chef/resource_collection/resource_set.rb +44 -17
- data/lib/chef/resource_collection.rb +10 -0
- data/lib/chef/resource_reporter.rb +1 -1
- data/lib/chef/resource_resolver.rb +1 -25
- data/lib/chef/resources.rb +1 -1
- data/lib/chef/role.rb +0 -6
- data/lib/chef/run_context/cookbook_compiler.rb +49 -5
- data/lib/chef/run_context.rb +4 -25
- data/lib/chef/run_list/run_list_item.rb +1 -1
- data/lib/chef/run_list/versioned_recipe_list.rb +14 -12
- data/lib/chef/search/query.rb +26 -31
- data/lib/chef/server_api.rb +2 -0
- data/lib/chef/{resource/easy_install_package.rb → server_api_versions.rb} +18 -10
- data/lib/chef/shell/ext.rb +3 -3
- data/lib/chef/shell/shell_session.rb +14 -4
- data/lib/chef/shell.rb +32 -7
- data/lib/chef/user.rb +9 -16
- data/lib/chef/user_v1.rb +9 -16
- data/lib/chef/util/diff.rb +1 -1
- data/lib/chef/util/dsc/lcm_output_parser.rb +1 -1
- data/lib/chef/util/selinux.rb +1 -1
- data/lib/chef/util/windows/net_group.rb +18 -30
- data/lib/chef/util/windows/net_use.rb +7 -11
- data/lib/chef/util/windows/net_user.rb +12 -18
- data/lib/chef/util/windows/volume.rb +9 -15
- data/lib/chef/version.rb +1 -1
- data/lib/chef/version_class.rb +1 -1
- data/lib/chef/win32/api/file.rb +25 -31
- data/lib/chef/win32/api/installer.rb +2 -2
- data/lib/chef/win32/api.rb +4 -6
- data/lib/chef/win32/file.rb +4 -6
- data/lib/chef/win32/registry.rb +9 -9
- data/lib/chef/win32/security/acl.rb +2 -2
- data/lib/chef/win32/security/sid.rb +5 -0
- data/lib/chef/win32/security.rb +2 -2
- data/lib/chef/win32/unicode.rb +2 -2
- data/lib/chef/win32/version.rb +1 -1
- data/lib/chef.rb +1 -2
- data/spec/data/cookbooks/openldap/templates/default/openldap_nested_variable_stuff.erb +1 -0
- data/spec/data/lwrp/providers/buck_passer.rb +1 -1
- data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
- data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
- data/spec/data/lwrp/providers/inline_compiler.rb +0 -2
- data/spec/data/lwrp/resources/buck_passer.rb +5 -0
- data/spec/data/lwrp/resources/buck_passer_2.rb +3 -0
- data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +3 -0
- data/spec/data/lwrp/resources/inline_compiler.rb +3 -0
- data/spec/data/lwrp/resources/monkey_name_printer.rb +5 -0
- data/spec/data/lwrp/resources/paint_drying_watcher.rb +3 -0
- data/spec/data/lwrp/resources/thumb_twiddler.rb +3 -0
- data/spec/data/prefer_metadata_json/metadata.json +51 -0
- data/spec/data/prefer_metadata_json/metadata.rb +6 -0
- data/spec/data/prefer_metadata_json/recipes/default.rb +0 -0
- data/spec/data/root_alias_cookbooks/dup_attr/attributes/default.rb +1 -0
- data/spec/data/root_alias_cookbooks/dup_attr/attributes.rb +1 -0
- data/spec/data/root_alias_cookbooks/dup_attr/metadata.rb +2 -0
- data/spec/data/root_alias_cookbooks/dup_attr/recipe.rb +3 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/attributes.rb +1 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/metadata.rb +2 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/recipe.rb +3 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/recipes/default.rb +3 -0
- data/spec/data/root_alias_cookbooks/simple/attributes.rb +1 -0
- data/spec/data/root_alias_cookbooks/simple/metadata.rb +2 -0
- data/spec/data/root_alias_cookbooks/simple/recipe.rb +3 -0
- data/spec/data/shef-config.rb +11 -10
- data/spec/functional/knife/ssh_spec.rb +34 -6
- data/spec/functional/rebooter_spec.rb +1 -0
- data/spec/functional/resource/bash_spec.rb +11 -45
- data/spec/functional/resource/batch_spec.rb +5 -1
- data/spec/functional/resource/cron_spec.rb +2 -2
- data/spec/functional/resource/dsc_script_spec.rb +2 -4
- data/spec/functional/resource/execute_spec.rb +17 -0
- data/spec/functional/resource/link_spec.rb +3 -3
- data/spec/functional/resource/template_spec.rb +33 -0
- data/spec/functional/resource/user/dscl_spec.rb +2 -4
- data/spec/functional/root_alias_spec.rb +78 -0
- data/spec/functional/shell_spec.rb +38 -40
- data/spec/integration/client/client_spec.rb +109 -16
- data/spec/integration/client/exit_code_spec.rb +1 -105
- data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -97
- data/spec/integration/knife/cookbook_download_spec.rb +0 -24
- data/spec/integration/knife/cookbook_show_spec.rb +12 -23
- data/spec/integration/knife/deps_spec.rb +5 -9
- data/spec/integration/knife/search_node_spec.rb +39 -0
- data/spec/integration/knife/serve_spec.rb +58 -22
- data/spec/integration/knife/upload_spec.rb +3 -11
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +7 -11
- data/spec/integration/recipes/notifies_spec.rb +60 -0
- data/spec/integration/recipes/recipe_dsl_spec.rb +76 -226
- data/spec/integration/recipes/resource_action_spec.rb +37 -30
- data/spec/spec_helper.rb +7 -0
- data/spec/support/chef_helpers.rb +5 -7
- data/spec/support/platform_helpers.rb +10 -3
- data/spec/support/platforms/prof/gc.rb +4 -6
- data/spec/support/shared/context/client.rb +9 -2
- data/spec/support/shared/functional/execute_resource.rb +150 -0
- data/spec/support/shared/functional/windows_script.rb +74 -4
- data/spec/support/shared/integration/knife_support.rb +1 -1
- data/spec/support/shared/unit/execute_resource.rb +37 -9
- data/spec/support/shared/unit/provider/file.rb +10 -0
- data/spec/support/shared/unit/script_resource.rb +1 -9
- data/spec/unit/application/exit_code_spec.rb +4 -89
- data/spec/unit/application_spec.rb +39 -29
- data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +1 -1
- data/spec/unit/client_spec.rb +72 -31
- data/spec/unit/config_fetcher_spec.rb +2 -2
- data/spec/unit/cookbook/cookbook_version_loader_spec.rb +31 -19
- data/spec/unit/cookbook/file_vendor_spec.rb +20 -9
- data/spec/unit/cookbook/gem_installer_spec.rb +85 -0
- data/spec/unit/cookbook/manifest_v0_spec.rb +133 -0
- data/spec/unit/cookbook/manifest_v2_spec.rb +70 -0
- data/spec/unit/cookbook/metadata_spec.rb +29 -108
- data/spec/unit/cookbook/synchronizer_spec.rb +5 -6
- data/spec/unit/cookbook/syntax_check_spec.rb +9 -2
- data/spec/unit/cookbook_loader_spec.rb +17 -19
- data/spec/unit/cookbook_manifest_spec.rb +12 -44
- data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -4
- data/spec/unit/cookbook_spec.rb +10 -14
- data/spec/unit/cookbook_uploader_spec.rb +1 -1
- data/spec/unit/cookbook_version_file_specificity_spec.rb +55 -28
- data/spec/unit/cookbook_version_spec.rb +19 -128
- data/spec/unit/data_bag_item_spec.rb +4 -0
- data/spec/unit/data_collector/messages_spec.rb +137 -0
- data/spec/unit/data_collector/resource_report_spec.rb +145 -0
- data/spec/unit/deprecation_spec.rb +0 -14
- data/spec/unit/encrypted_data_bag_item_spec.rb +6 -6
- data/spec/unit/formatters/error_description_spec.rb +52 -7
- data/spec/unit/http/api_versions_spec.rb +79 -0
- data/spec/unit/http/authenticator_spec.rb +20 -0
- data/spec/unit/http/socketless_chef_zero_client_spec.rb +2 -1
- data/spec/unit/json_compat_spec.rb +0 -32
- data/spec/unit/knife/bootstrap_spec.rb +34 -0
- data/spec/unit/knife/configure_client_spec.rb +0 -2
- data/spec/unit/knife/cookbook_create_spec.rb +1 -220
- data/spec/unit/knife/cookbook_download_spec.rb +46 -28
- data/spec/unit/knife/cookbook_show_spec.rb +42 -9
- data/spec/unit/knife/core/bootstrap_context_spec.rb +17 -0
- data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +1 -1
- data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -6
- data/spec/unit/knife/core/ui_spec.rb +21 -11
- data/spec/unit/knife/data_bag_create_spec.rb +65 -45
- data/spec/unit/knife/ssh_spec.rb +34 -36
- data/spec/unit/knife_spec.rb +2 -2
- data/spec/unit/lwrp_spec.rb +38 -127
- data/spec/unit/mixin/path_sanity_spec.rb +7 -7
- data/spec/unit/mixin/shell_out_spec.rb +18 -84
- data/spec/unit/mixin/versioned_api_spec.rb +128 -0
- data/spec/unit/mixin/which.rb +160 -0
- data/spec/unit/node/attribute_spec.rb +65 -33
- data/spec/unit/node/immutable_collections_spec.rb +104 -1
- data/spec/unit/node_map_spec.rb +1 -23
- data/spec/unit/node_spec.rb +81 -98
- data/spec/unit/policy_builder/expand_node_object_spec.rb +2 -27
- data/spec/unit/policy_builder/policyfile_spec.rb +12 -12
- data/spec/unit/property/validation_spec.rb +51 -69
- data/spec/unit/property_spec.rb +105 -125
- data/spec/unit/provider/apt_repository_spec.rb +33 -27
- data/spec/unit/provider/cron_spec.rb +15 -39
- data/spec/unit/provider/deploy_spec.rb +1 -1
- data/spec/unit/provider/directory_spec.rb +10 -0
- data/spec/unit/provider/dsc_resource_spec.rb +175 -0
- data/spec/unit/provider/erl_call_spec.rb +5 -13
- data/spec/unit/provider/execute_spec.rb +3 -14
- data/spec/unit/provider/launchd_spec.rb +2 -2
- data/spec/unit/provider/package/aix_spec.rb +22 -22
- data/spec/unit/provider/package/apt_spec.rb +37 -27
- data/spec/unit/provider/package/cab_spec.rb +59 -5
- data/{lib-backcompat/chef/chef_fs/file_system/repository/file_system_root_dir.rb → spec/unit/provider/package/dnf/python_helper_spec.rb} +10 -15
- data/spec/unit/provider/package/dpkg_spec.rb +16 -16
- data/spec/unit/provider/package/freebsd/pkg_spec.rb +15 -15
- data/spec/unit/provider/package/freebsd/pkgng_spec.rb +9 -9
- data/spec/unit/provider/package/freebsd/port_spec.rb +9 -9
- data/spec/unit/provider/package/homebrew_spec.rb +9 -9
- data/spec/unit/provider/package/ips_spec.rb +37 -31
- data/spec/unit/provider/package/macports_spec.rb +10 -10
- data/spec/unit/provider/package/openbsd_spec.rb +10 -10
- data/spec/unit/provider/package/pacman_spec.rb +6 -6
- data/spec/unit/provider/package/paludis_spec.rb +7 -7
- data/spec/unit/provider/package/portage_spec.rb +6 -7
- data/spec/unit/provider/package/rpm_spec.rb +23 -23
- data/spec/unit/provider/package/rubygems_spec.rb +135 -46
- data/spec/unit/provider/package/solaris_spec.rb +15 -15
- data/spec/unit/provider/package/windows/msi_spec.rb +1 -1
- data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +25 -0
- data/spec/unit/provider/package/windows_spec.rb +2 -1
- data/spec/unit/provider/package/yum_spec.rb +58 -50
- data/spec/unit/provider/package/zypper_spec.rb +54 -97
- data/spec/unit/provider/package_spec.rb +8 -0
- data/spec/unit/provider/powershell_script_spec.rb +14 -4
- data/spec/unit/provider/remote_file/sftp_spec.rb +3 -3
- data/spec/unit/provider/route_spec.rb +7 -1
- data/spec/unit/provider/script_spec.rb +49 -6
- data/spec/unit/provider/service/debian_service_spec.rb +14 -20
- data/spec/unit/provider/service/solaris_smf_service_spec.rb +37 -1
- data/spec/unit/provider/service/upstart_service_spec.rb +12 -25
- data/spec/unit/provider/subversion_spec.rb +2 -2
- data/spec/unit/provider/user/linux_spec.rb +5 -43
- data/spec/unit/provider/user/pw_spec.rb +7 -27
- data/spec/unit/provider/windows_task_spec.rb +392 -0
- data/spec/unit/provider_resolver_spec.rb +0 -1
- data/spec/unit/provider_spec.rb +10 -3
- data/spec/unit/recipe_spec.rb +3 -172
- data/spec/unit/resource/chef_gem_spec.rb +16 -62
- data/spec/unit/resource/conditional_spec.rb +4 -4
- data/spec/unit/resource/cookbook_file_spec.rb +2 -2
- data/spec/unit/resource/cron_spec.rb +1 -1
- data/spec/unit/resource/deploy_spec.rb +4 -4
- data/spec/unit/resource/directory_spec.rb +2 -2
- data/spec/unit/resource/dsc_resource_spec.rb +6 -0
- data/spec/unit/resource/env_spec.rb +1 -1
- data/spec/unit/resource/execute_spec.rb +215 -1
- data/spec/unit/resource/file/verification/systemd_unit_spec.rb +103 -0
- data/spec/unit/resource/file/verification_spec.rb +8 -14
- data/spec/unit/resource/file_spec.rb +3 -3
- data/spec/unit/resource/freebsd_package_spec.rb +2 -2
- data/spec/unit/resource/group_spec.rb +2 -2
- data/spec/unit/resource/ifconfig_spec.rb +1 -1
- data/spec/unit/resource/link_spec.rb +2 -2
- data/spec/unit/resource/mdadm_spec.rb +1 -1
- data/spec/unit/resource/mount_spec.rb +3 -3
- data/spec/unit/resource/ohai_spec.rb +1 -1
- data/spec/unit/resource/package_spec.rb +14 -4
- data/spec/unit/resource/registry_key_spec.rb +2 -2
- data/spec/unit/resource/remote_directory_spec.rb +2 -2
- data/spec/unit/resource/remote_file_spec.rb +2 -2
- data/spec/unit/resource/route_spec.rb +1 -1
- data/spec/unit/resource/scm_spec.rb +2 -2
- data/spec/unit/resource/script_spec.rb +1 -1
- data/spec/unit/resource/service_spec.rb +25 -5
- data/spec/unit/resource/systemd_unit_spec.rb +1 -1
- data/spec/unit/resource/template_spec.rb +2 -2
- data/spec/unit/resource/user_spec.rb +6 -6
- data/spec/unit/resource/windows_task_spec.rb +213 -0
- data/spec/unit/resource/yum_package_spec.rb +42 -1
- data/spec/unit/resource_collection/resource_set_spec.rb +46 -1
- data/spec/unit/resource_collection_spec.rb +4 -3
- data/spec/unit/resource_reporter_spec.rb +6 -6
- data/spec/unit/resource_spec.rb +55 -71
- data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -3
- data/spec/unit/run_list/versioned_recipe_list_spec.rb +7 -4
- data/spec/unit/runner_spec.rb +10 -28
- data/spec/unit/search/query_spec.rb +32 -34
- data/spec/unit/server_api_versions_spec.rb +44 -0
- data/spec/unit/shell/shell_session_spec.rb +33 -2
- data/spec/unit/util/selinux_spec.rb +3 -14
- data/spec/unit/win32/error_spec.rb +67 -0
- data/spec/unit/win32/security_spec.rb +66 -0
- data/tasks/bundle.rb +36 -52
- data/tasks/changelog.rb +1 -1
- data/tasks/dependencies.rb +54 -52
- data/tasks/version.rb +41 -0
- metadata +91 -76
- data/lib/chef/deprecation/mixin/template.rb +0 -48
- data/lib/chef/deprecation/provider/cookbook_file.rb +0 -54
- data/lib/chef/deprecation/provider/file.rb +0 -198
- data/lib/chef/deprecation/provider/remote_directory.rb +0 -52
- data/lib/chef/deprecation/provider/remote_file.rb +0 -85
- data/lib/chef/deprecation/provider/template.rb +0 -63
- data/lib/chef/dsl/method_missing.rb +0 -75
- data/lib/chef/knife/cookbook_site_vendor.rb +0 -46
- data/lib/chef/knife/core/custom_manifest_loader.rb +0 -69
- data/lib/chef/mixin/command/unix.rb +0 -220
- data/lib/chef/mixin/command/windows.rb +0 -71
- data/lib/chef/mixin/command.rb +0 -194
- data/lib/chef/monkey_patches/net-ssh-multi.rb +0 -141
- data/lib/chef/provider/package/easy_install.rb +0 -135
- data/lib/chef/rest.rb +0 -210
- data/lib/chef/shell_out.rb +0 -13
- data/lib/chef/tasks/chef_repo.rake +0 -200
- data/lib-backcompat/chef/chef_fs/file_system/acl_entry.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/already_exists_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/chef_server_root_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/cookbook_frozen_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/default_environment_cannot_be_modified_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/file_system_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/must_delete_recursively_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/not_found_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/operation_failed_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/operation_not_allowed_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_acls_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_client_keys_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_entry.rb +0 -6
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_policies_dir.rb +0 -5
- data/spec/functional/rest_spec.rb +0 -95
- data/spec/unit/knife/core/custom_manifest_loader_spec.rb +0 -41
- data/spec/unit/lib_backcompat_spec.rb +0 -34
- data/spec/unit/mixin/command_spec.rb +0 -107
- data/spec/unit/platform_spec.rb +0 -242
- data/spec/unit/provider/package/easy_install_spec.rb +0 -114
- data/spec/unit/resource/easy_install_package_spec.rb +0 -39
- data/spec/unit/rest/auth_credentials_spec.rb +0 -292
- data/spec/unit/rest_spec.rb +0 -753
- data/spec/unit/shell_out_spec.rb +0 -18
- data/tasks/bin/bundle-platform +0 -20
- data/tasks/bin/bundle-platform.bat +0 -2
- data/tasks/bin/bundler_patch.rb +0 -27
- data/tasks/bin/gem-version-diff +0 -37
- data/tasks/bundle_util.rb +0 -110
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Seth Chisamore (<schisamo@chef.io>)
|
|
3
|
-
# Copyright:: Copyright 2011-
|
|
3
|
+
# Copyright:: Copyright 2011-2017, Chef Software Inc.
|
|
4
4
|
# License:: Apache License, Version 2.0
|
|
5
5
|
#
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -41,19 +41,19 @@ describe Chef::Mixin::PathSanity do
|
|
|
41
41
|
it "adds all useful PATHs even if environment is an empty hash" do
|
|
42
42
|
env = {}
|
|
43
43
|
@sanity.enforce_path_sanity(env)
|
|
44
|
-
expect(env["PATH"]).to eq("#{@
|
|
44
|
+
expect(env["PATH"]).to eq("#{@gem_bindir}:#{@ruby_bindir}:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin")
|
|
45
45
|
end
|
|
46
46
|
|
|
47
47
|
it "adds all useful PATHs that are not yet in PATH to PATH" do
|
|
48
48
|
env = { "PATH" => "" }
|
|
49
49
|
@sanity.enforce_path_sanity(env)
|
|
50
|
-
expect(env["PATH"]).to eq("#{@
|
|
50
|
+
expect(env["PATH"]).to eq("#{@gem_bindir}:#{@ruby_bindir}:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin")
|
|
51
51
|
end
|
|
52
52
|
|
|
53
53
|
it "does not re-add paths that already exist in PATH" do
|
|
54
54
|
env = { "PATH" => "/usr/bin:/sbin:/bin" }
|
|
55
55
|
@sanity.enforce_path_sanity(env)
|
|
56
|
-
expect(env["PATH"]).to eq("
|
|
56
|
+
expect(env["PATH"]).to eq("#{@gem_bindir}:#{@ruby_bindir}:/usr/bin:/sbin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin")
|
|
57
57
|
end
|
|
58
58
|
|
|
59
59
|
it "creates path with utf-8 encoding" do
|
|
@@ -65,7 +65,7 @@ describe Chef::Mixin::PathSanity do
|
|
|
65
65
|
it "adds the current executing Ruby's bindir and Gem bindir to the PATH" do
|
|
66
66
|
env = { "PATH" => "" }
|
|
67
67
|
@sanity.enforce_path_sanity(env)
|
|
68
|
-
expect(env["PATH"]).to eq("#{@
|
|
68
|
+
expect(env["PATH"]).to eq("#{@gem_bindir}:#{@ruby_bindir}:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin")
|
|
69
69
|
end
|
|
70
70
|
|
|
71
71
|
it "does not create entries for Ruby/Gem bindirs if they exist in SANE_PATH or PATH" do
|
|
@@ -75,7 +75,7 @@ describe Chef::Mixin::PathSanity do
|
|
|
75
75
|
allow(RbConfig::CONFIG).to receive(:[]).with("bindir").and_return(ruby_bindir)
|
|
76
76
|
env = { "PATH" => gem_bindir }
|
|
77
77
|
@sanity.enforce_path_sanity(env)
|
|
78
|
-
expect(env["PATH"]).to eq("/yo/gabba/gabba:/usr/local/sbin:/usr/local/bin:/usr/sbin:/
|
|
78
|
+
expect(env["PATH"]).to eq("/usr/bin:/yo/gabba/gabba:/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/bin")
|
|
79
79
|
end
|
|
80
80
|
|
|
81
81
|
it "builds a valid windows path" do
|
|
@@ -86,7 +86,7 @@ describe Chef::Mixin::PathSanity do
|
|
|
86
86
|
allow(ChefConfig).to receive(:windows?).and_return(true)
|
|
87
87
|
env = { "PATH" => 'C:\Windows\system32;C:\mr\softie' }
|
|
88
88
|
@sanity.enforce_path_sanity(env)
|
|
89
|
-
expect(env["PATH"]).to eq("C:\\Windows\\system32;C:\\mr\\softie
|
|
89
|
+
expect(env["PATH"]).to eq("#{gem_bindir};#{ruby_bindir};C:\\Windows\\system32;C:\\mr\\softie")
|
|
90
90
|
end
|
|
91
91
|
end
|
|
92
92
|
end
|
|
@@ -21,91 +21,19 @@
|
|
|
21
21
|
#
|
|
22
22
|
|
|
23
23
|
require "spec_helper"
|
|
24
|
+
require "chef/mixin/path_sanity"
|
|
24
25
|
|
|
25
26
|
describe Chef::Mixin::ShellOut do
|
|
27
|
+
include Chef::Mixin::PathSanity
|
|
28
|
+
|
|
26
29
|
let(:shell_out_class) { Class.new { include Chef::Mixin::ShellOut } }
|
|
27
30
|
subject(:shell_out_obj) { shell_out_class.new }
|
|
28
|
-
describe "#run_command_compatible_options" do
|
|
29
|
-
subject { shell_out_obj.run_command_compatible_options(command_args) }
|
|
30
|
-
let(:command_args) { [ cmd, options ] }
|
|
31
|
-
let(:cmd) { "echo '#{rand(1000)}'" }
|
|
32
|
-
|
|
33
|
-
let(:output) { StringIO.new }
|
|
34
|
-
let!(:capture_log_output) { Chef::Log.logger = Logger.new(output) }
|
|
35
|
-
let(:assume_deprecation_log_level) { allow(Chef::Log).to receive(:level).and_return(:warn) }
|
|
36
|
-
|
|
37
|
-
before do
|
|
38
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
context "without options" do
|
|
42
|
-
let(:command_args) { [ cmd ] }
|
|
43
|
-
|
|
44
|
-
it "should not edit command args" do
|
|
45
|
-
is_expected.to eql(command_args)
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
context "without deprecated options" do
|
|
50
|
-
let(:options) { { :environment => environment } }
|
|
51
|
-
let(:environment) { { "LC_ALL" => "C", "LANG" => "C", "LANGUAGE" => "C" } }
|
|
52
|
-
|
|
53
|
-
it "should not edit command args" do
|
|
54
|
-
is_expected.to eql(command_args)
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
def self.should_emit_deprecation_warning_about(old_option, new_option)
|
|
59
|
-
it "should emit a deprecation warning" do
|
|
60
|
-
assume_deprecation_log_level && capture_log_output
|
|
61
|
-
subject
|
|
62
|
-
expect(output.string).to match Regexp.escape(old_option.to_s)
|
|
63
|
-
expect(output.string).to match Regexp.escape(new_option.to_s)
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
context "with :command_log_level option" do
|
|
68
|
-
let(:options) { { :command_log_level => command_log_level } }
|
|
69
|
-
let(:command_log_level) { :warn }
|
|
70
|
-
|
|
71
|
-
it "should convert :command_log_level to :log_level" do
|
|
72
|
-
is_expected.to eql [ cmd, { :log_level => command_log_level } ]
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
should_emit_deprecation_warning_about :command_log_level, :log_level
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
context "with :command_log_prepend option" do
|
|
79
|
-
let(:options) { { :command_log_prepend => command_log_prepend } }
|
|
80
|
-
let(:command_log_prepend) { "PROVIDER:" }
|
|
81
|
-
|
|
82
|
-
it "should convert :command_log_prepend to :log_tag" do
|
|
83
|
-
is_expected.to eql [ cmd, { :log_tag => command_log_prepend } ]
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
should_emit_deprecation_warning_about :command_log_prepend, :log_tag
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
context "with 'command_log_level' option" do
|
|
90
|
-
let(:options) { { "command_log_level" => command_log_level } }
|
|
91
|
-
let(:command_log_level) { :warn }
|
|
92
|
-
|
|
93
|
-
it "should convert 'command_log_level' to :log_level" do
|
|
94
|
-
is_expected.to eql [ cmd, { :log_level => command_log_level } ]
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
should_emit_deprecation_warning_about :command_log_level, :log_level
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
context "with 'command_log_prepend' option" do
|
|
101
|
-
let(:options) { { "command_log_prepend" => command_log_prepend } }
|
|
102
|
-
let(:command_log_prepend) { "PROVIDER:" }
|
|
103
|
-
|
|
104
|
-
it "should convert 'command_log_prepend' to :log_tag" do
|
|
105
|
-
is_expected.to eql [ cmd, { :log_tag => command_log_prepend } ]
|
|
106
|
-
end
|
|
107
31
|
|
|
108
|
-
|
|
32
|
+
def env_path
|
|
33
|
+
if Chef::Platform.windows?
|
|
34
|
+
"Path"
|
|
35
|
+
else
|
|
36
|
+
"PATH"
|
|
109
37
|
end
|
|
110
38
|
end
|
|
111
39
|
|
|
@@ -127,13 +55,13 @@ describe Chef::Mixin::ShellOut do
|
|
|
127
55
|
describe "when the last argument is a Hash" do
|
|
128
56
|
describe "and environment is an option" do
|
|
129
57
|
it "should not change environment language settings when they are set to nil" do
|
|
130
|
-
options = { :environment => { "LC_ALL" => nil, "LANGUAGE" => nil, "LANG" => nil } }
|
|
58
|
+
options = { :environment => { "LC_ALL" => nil, "LANGUAGE" => nil, "LANG" => nil, env_path => nil } }
|
|
131
59
|
expect(shell_out_obj).to receive(:shell_out_command).with(cmd, options).and_return(true)
|
|
132
60
|
shell_out_obj.shell_out(cmd, options)
|
|
133
61
|
end
|
|
134
62
|
|
|
135
63
|
it "should not change environment language settings when they are set to non-nil" do
|
|
136
|
-
options = { :environment => { "LC_ALL" => "en_US.UTF-8", "LANGUAGE" => "en_US.UTF-8", "LANG" => "en_US.UTF-8" } }
|
|
64
|
+
options = { :environment => { "LC_ALL" => "en_US.UTF-8", "LANGUAGE" => "en_US.UTF-8", "LANG" => "en_US.UTF-8", env_path => "foo:bar:baz" } }
|
|
137
65
|
expect(shell_out_obj).to receive(:shell_out_command).with(cmd, options).and_return(true)
|
|
138
66
|
shell_out_obj.shell_out(cmd, options)
|
|
139
67
|
end
|
|
@@ -146,6 +74,7 @@ describe Chef::Mixin::ShellOut do
|
|
|
146
74
|
"LC_ALL" => Chef::Config[:internal_locale],
|
|
147
75
|
"LANG" => Chef::Config[:internal_locale],
|
|
148
76
|
"LANGUAGE" => Chef::Config[:internal_locale],
|
|
77
|
+
env_path => sanitized_path,
|
|
149
78
|
},
|
|
150
79
|
}).and_return(true)
|
|
151
80
|
shell_out_obj.shell_out(cmd, options)
|
|
@@ -159,6 +88,7 @@ describe Chef::Mixin::ShellOut do
|
|
|
159
88
|
"LC_ALL" => Chef::Config[:internal_locale],
|
|
160
89
|
"LANG" => Chef::Config[:internal_locale],
|
|
161
90
|
"LANGUAGE" => Chef::Config[:internal_locale],
|
|
91
|
+
env_path => sanitized_path,
|
|
162
92
|
},
|
|
163
93
|
}).and_return(true)
|
|
164
94
|
shell_out_obj.shell_out(cmd, options)
|
|
@@ -168,13 +98,13 @@ describe Chef::Mixin::ShellOut do
|
|
|
168
98
|
|
|
169
99
|
describe "and env is an option" do
|
|
170
100
|
it "should not change env when langauge options are set to nil" do
|
|
171
|
-
options = { :env => { "LC_ALL" => nil, "LANG" => nil, "LANGUAGE" => nil } }
|
|
101
|
+
options = { :env => { "LC_ALL" => nil, "LANG" => nil, "LANGUAGE" => nil, env_path => nil } }
|
|
172
102
|
expect(shell_out_obj).to receive(:shell_out_command).with(cmd, options).and_return(true)
|
|
173
103
|
shell_out_obj.shell_out(cmd, options)
|
|
174
104
|
end
|
|
175
105
|
|
|
176
106
|
it "should not change env when language options are set to non-nil" do
|
|
177
|
-
options = { :env => { "LC_ALL" => "de_DE.UTF-8", "LANG" => "de_DE.UTF-8", "LANGUAGE" => "de_DE.UTF-8" } }
|
|
107
|
+
options = { :env => { "LC_ALL" => "de_DE.UTF-8", "LANG" => "de_DE.UTF-8", "LANGUAGE" => "de_DE.UTF-8", env_path => "foo:bar:baz" } }
|
|
178
108
|
expect(shell_out_obj).to receive(:shell_out_command).with(cmd, options).and_return(true)
|
|
179
109
|
shell_out_obj.shell_out(cmd, options)
|
|
180
110
|
end
|
|
@@ -187,6 +117,7 @@ describe Chef::Mixin::ShellOut do
|
|
|
187
117
|
"LC_ALL" => Chef::Config[:internal_locale],
|
|
188
118
|
"LANG" => Chef::Config[:internal_locale],
|
|
189
119
|
"LANGUAGE" => Chef::Config[:internal_locale],
|
|
120
|
+
env_path => sanitized_path,
|
|
190
121
|
},
|
|
191
122
|
}).and_return(true)
|
|
192
123
|
shell_out_obj.shell_out(cmd, options)
|
|
@@ -200,6 +131,7 @@ describe Chef::Mixin::ShellOut do
|
|
|
200
131
|
"LC_ALL" => Chef::Config[:internal_locale],
|
|
201
132
|
"LANG" => Chef::Config[:internal_locale],
|
|
202
133
|
"LANGUAGE" => Chef::Config[:internal_locale],
|
|
134
|
+
env_path => sanitized_path,
|
|
203
135
|
},
|
|
204
136
|
}).and_return(true)
|
|
205
137
|
shell_out_obj.shell_out(cmd, options)
|
|
@@ -216,6 +148,7 @@ describe Chef::Mixin::ShellOut do
|
|
|
216
148
|
"LC_ALL" => Chef::Config[:internal_locale],
|
|
217
149
|
"LANG" => Chef::Config[:internal_locale],
|
|
218
150
|
"LANGUAGE" => Chef::Config[:internal_locale],
|
|
151
|
+
env_path => sanitized_path,
|
|
219
152
|
},
|
|
220
153
|
}).and_return(true)
|
|
221
154
|
shell_out_obj.shell_out(cmd, options)
|
|
@@ -230,6 +163,7 @@ describe Chef::Mixin::ShellOut do
|
|
|
230
163
|
"LC_ALL" => Chef::Config[:internal_locale],
|
|
231
164
|
"LANG" => Chef::Config[:internal_locale],
|
|
232
165
|
"LANGUAGE" => Chef::Config[:internal_locale],
|
|
166
|
+
env_path => sanitized_path,
|
|
233
167
|
},
|
|
234
168
|
}).and_return(true)
|
|
235
169
|
shell_out_obj.shell_out(cmd)
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright:: Copyright 2015-2017, 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/mixin/versioned_api"
|
|
20
|
+
|
|
21
|
+
describe Chef::Mixin::VersionedAPI do
|
|
22
|
+
let(:dummy_class) { Class.new { extend Chef::Mixin::VersionedAPI } }
|
|
23
|
+
|
|
24
|
+
it "allows a class to declare the minimum supported API version" do
|
|
25
|
+
dummy_class.minimum_api_version 3
|
|
26
|
+
expect(dummy_class.minimum_api_version).to eq(3)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe Chef::Mixin::VersionedAPIFactory do
|
|
31
|
+
class V1Class; extend Chef::Mixin::VersionedAPI; minimum_api_version 1; end
|
|
32
|
+
class V2Class; extend Chef::Mixin::VersionedAPI; minimum_api_version 2; end
|
|
33
|
+
class V3Class; extend Chef::Mixin::VersionedAPI; minimum_api_version 3; end
|
|
34
|
+
|
|
35
|
+
let(:factory_class) { Class.new { extend Chef::Mixin::VersionedAPIFactory } }
|
|
36
|
+
|
|
37
|
+
before do
|
|
38
|
+
Chef::ServerAPIVersions.instance.reset!
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
describe "#add_versioned_api_class" do
|
|
42
|
+
it "adds a target class" do
|
|
43
|
+
factory_class.add_versioned_api_class V1Class
|
|
44
|
+
expect(factory_class.versioned_interfaces).to eq([V1Class])
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it "can be called many times" do
|
|
48
|
+
factory_class.add_versioned_api_class V1Class
|
|
49
|
+
factory_class.add_versioned_api_class V2Class
|
|
50
|
+
expect(factory_class.versioned_interfaces).to eq([V1Class, V2Class])
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
describe "#versioned_api_class" do
|
|
55
|
+
describe "with no known versions" do
|
|
56
|
+
it "with one class it returns that class" do
|
|
57
|
+
factory_class.add_versioned_api_class V2Class
|
|
58
|
+
expect(factory_class.versioned_api_class.minimum_api_version).to eq(2)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it "with many classes it returns the highest minimum version" do
|
|
62
|
+
factory_class.add_versioned_api_class V1Class
|
|
63
|
+
factory_class.add_versioned_api_class V2Class
|
|
64
|
+
factory_class.add_versioned_api_class V3Class
|
|
65
|
+
expect(factory_class.versioned_api_class.minimum_api_version).to eq(3)
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
describe "with a known version" do
|
|
70
|
+
it "with one class it returns that class" do
|
|
71
|
+
Chef::ServerAPIVersions.instance.set_versions({ "min_version" => 0, "max_version" => 2 })
|
|
72
|
+
factory_class.add_versioned_api_class V2Class
|
|
73
|
+
expect(factory_class.versioned_api_class.minimum_api_version).to eq(2)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
it "with a maximum version it returns the highest possible versioned class" do
|
|
77
|
+
Chef::ServerAPIVersions.instance.set_versions({ "min_version" => 0, "max_version" => 2 })
|
|
78
|
+
factory_class.add_versioned_api_class V1Class
|
|
79
|
+
factory_class.add_versioned_api_class V2Class
|
|
80
|
+
factory_class.add_versioned_api_class V3Class
|
|
81
|
+
expect(factory_class.versioned_api_class.minimum_api_version).to eq(2)
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
it "with no classes it returns nil" do
|
|
86
|
+
expect(factory_class.versioned_api_class).to be_nil
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
describe "#best_request_version" do
|
|
91
|
+
it "returns a String" do
|
|
92
|
+
factory_class.add_versioned_api_class V2Class
|
|
93
|
+
expect(factory_class.best_request_version).to be_a(String)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
it "returns the most relevant version" do
|
|
97
|
+
factory_class.add_versioned_api_class V2Class
|
|
98
|
+
factory_class.add_versioned_api_class V3Class
|
|
99
|
+
expect(factory_class.best_request_version).to eq("3")
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
describe "#possible_requests" do
|
|
104
|
+
it "returns the number of registered classes" do
|
|
105
|
+
factory_class.add_versioned_api_class V2Class
|
|
106
|
+
factory_class.add_versioned_api_class V3Class
|
|
107
|
+
expect(factory_class.possible_requests).to eq(2)
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
describe "#new" do
|
|
112
|
+
it "creates an instance of the versioned class" do
|
|
113
|
+
factory_class.add_versioned_api_class V2Class
|
|
114
|
+
expect { factory_class.new }.to_not raise_error
|
|
115
|
+
expect(factory_class.new.class).to eq(V2Class)
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
describe "#def_versioned_delegator" do
|
|
120
|
+
it "delegates the method to the correct class" do
|
|
121
|
+
factory_class.add_versioned_api_class V2Class
|
|
122
|
+
factory_class.def_versioned_delegator("test_method")
|
|
123
|
+
expect(V2Class).to receive(:test_method).with("test message").and_return(true)
|
|
124
|
+
|
|
125
|
+
factory_class.test_method("test message")
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
end
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright:: Copyright 2011-2017, 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
|
+
|
|
20
|
+
class TestClass
|
|
21
|
+
include Chef::Mixin::Which
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
describe Chef::Mixin::Which do
|
|
25
|
+
|
|
26
|
+
let(:test) { TestClass.new }
|
|
27
|
+
|
|
28
|
+
describe "#which" do
|
|
29
|
+
def self.test_which(description, *args, finds: nil, others: [], directory: false, &block)
|
|
30
|
+
it description do
|
|
31
|
+
# stub the ENV['PATH']
|
|
32
|
+
expect(test).to receive(:env_path).and_return(["/dir1", "/dir2" ].join(File::PATH_SEPARATOR))
|
|
33
|
+
|
|
34
|
+
# most files should not be found
|
|
35
|
+
allow(File).to receive(:executable?).and_return(false)
|
|
36
|
+
allow(File).to receive(:directory?).and_return(false)
|
|
37
|
+
|
|
38
|
+
# stub the expectation
|
|
39
|
+
expect(File).to receive(:executable?).with(finds).and_return(true) if finds
|
|
40
|
+
|
|
41
|
+
# if the file we find is a directory
|
|
42
|
+
expect(File).to receive(:directory?).with(finds).and_return(true) if finds && directory
|
|
43
|
+
|
|
44
|
+
# allow for stubbing other paths to exist that we should not find
|
|
45
|
+
others.each do |other|
|
|
46
|
+
allow(File).to receive(:executable?).with(other).and_return(true)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# setup the actual expectation on the return value
|
|
50
|
+
if finds && !directory
|
|
51
|
+
expect(test.which(*args, &block)).to eql(finds)
|
|
52
|
+
else
|
|
53
|
+
expect(test.which(*args, &block)).to eql(false)
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
context "simple usage" do
|
|
59
|
+
test_which("returns false when it does not find anything", "foo1")
|
|
60
|
+
|
|
61
|
+
["/dir1", "/dir2", "/bin", "/usr/bin", "/sbin", "/usr/sbin" ].each do |dir|
|
|
62
|
+
test_which("finds `foo1` in #{dir} when it is stubbed", "foo1", finds: "#{dir}/foo1")
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
test_which("does not find an executable directory", "foo1", finds: "/dir1/foo1", directory: true)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
context "with an array of args" do
|
|
69
|
+
test_which("finds the first arg", "foo1", "foo2", finds: "/dir2/foo1")
|
|
70
|
+
|
|
71
|
+
test_which("finds the second arg", "foo1", "foo2", finds: "/dir2/foo2")
|
|
72
|
+
|
|
73
|
+
test_which("finds the first arg when there's both", "foo1", "foo2", finds: "/dir2/foo1", others: [ "/dir1/foo2" ])
|
|
74
|
+
|
|
75
|
+
test_which("and the directory order can be reversed", "foo1", "foo2", finds: "/dir1/foo1", others: [ "/dir2/foo2" ])
|
|
76
|
+
|
|
77
|
+
test_which("or be the same", "foo1", "foo2", finds: "/dir1/foo1", others: [ "/dir1/foo2" ])
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
context "with a block" do
|
|
81
|
+
test_which("doesnt find it if its false", "foo1", others: [ "/dir1/foo1" ]) do |f|
|
|
82
|
+
false
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
test_which("finds it if its true", "foo1", finds: "/dir1/foo1") do |f|
|
|
86
|
+
true
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
test_which("passes in the filename as the arg", "foo1", finds: "/dir1/foo1") do |f|
|
|
90
|
+
raise "bad arg to block" unless f == "/dir1/foo1"
|
|
91
|
+
true
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
test_which("arrays with blocks", "foo1", "foo2", finds: "/dir2/foo1", others: [ "/dir1/foo2" ]) do |f|
|
|
95
|
+
raise "bad arg to block" unless f == "/dir2/foo1" || f == "/dir1/foo2"
|
|
96
|
+
true
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
describe "#where" do
|
|
102
|
+
def self.test_where(description, *args, finds: [], others: [], &block)
|
|
103
|
+
it description do
|
|
104
|
+
# stub the ENV['PATH']
|
|
105
|
+
expect(test).to receive(:env_path).and_return(["/dir1", "/dir2" ].join(File::PATH_SEPARATOR))
|
|
106
|
+
|
|
107
|
+
# most files should not be found
|
|
108
|
+
allow(File).to receive(:executable?).and_return(false)
|
|
109
|
+
allow(File).to receive(:directory?).and_return(false)
|
|
110
|
+
|
|
111
|
+
# allow for stubbing other paths to exist that we should not return
|
|
112
|
+
others.each do |other|
|
|
113
|
+
allow(File).to receive(:executable?).with(other).and_return(true)
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
# stub the expectation
|
|
117
|
+
finds.each do |path|
|
|
118
|
+
expect(File).to receive(:executable?).with(path).and_return(true)
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
# setup the actual expectation on the return value
|
|
122
|
+
expect(test.where(*args, &block)).to eql(finds)
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
context "simple usage" do
|
|
127
|
+
test_where("returns empty array when it doesn't find anything", "foo1")
|
|
128
|
+
|
|
129
|
+
["/dir1", "/dir2", "/bin", "/usr/bin", "/sbin", "/usr/sbin" ].each do |dir|
|
|
130
|
+
test_where("finds `foo1` in #{dir} when it is stubbed", "foo1", finds: [ "#{dir}/foo1" ])
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
test_where("finds `foo1` in all directories", "foo1", finds: [ "/dir1/foo1", "/dir2/foo1" ])
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
context "with an array of args" do
|
|
137
|
+
test_where("finds the first arg", "foo1", "foo2", finds: [ "/dir2/foo1" ])
|
|
138
|
+
|
|
139
|
+
test_where("finds the second arg", "foo1", "foo2", finds: [ "/dir2/foo2" ])
|
|
140
|
+
|
|
141
|
+
test_where("finds foo1 before foo2", "foo1", "foo2", finds: [ "/dir2/foo1", "/dir1/foo2" ])
|
|
142
|
+
|
|
143
|
+
test_where("finds foo1 before foo2 if the dirs are reversed", "foo1", "foo2", finds: [ "/dir1/foo1", "/dir2/foo2" ])
|
|
144
|
+
|
|
145
|
+
test_where("finds them both in the same directory", "foo1", "foo2", finds: [ "/dir1/foo1", "/dir1/foo2" ])
|
|
146
|
+
|
|
147
|
+
test_where("finds foo2 first if they're reversed", "foo2", "foo1", finds: [ "/dir1/foo2", "/dir1/foo1" ])
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
context "with a block do" do
|
|
151
|
+
test_where("finds foo1 and foo2 if they exist and the block is true", "foo1", "foo2", finds: [ "/dir1/foo2", "/dir2/foo2" ]) do
|
|
152
|
+
true
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
test_where("does not finds foo1 and foo2 if they exist and the block is false", "foo1", "foo2", others: [ "/dir1/foo2", "/dir2/foo2" ]) do
|
|
156
|
+
false
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
end
|
|
160
|
+
end
|