chef 14.14.29-universal-mingw32 → 14.15.6-universal-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/README.md +18 -7
- data/Rakefile +7 -4
- data/chef.gemspec +1 -1
- data/lib/chef/knife/ssh.rb +6 -0
- data/lib/chef/provider/ifconfig.rb +14 -5
- data/lib/chef/provider/windows_task.rb +9 -5
- data/lib/chef/resource/kernel_module.rb +61 -0
- data/lib/chef/resource/windows_task.rb +4 -0
- data/lib/chef/version.rb +1 -1
- data/spec/data/cookbooks/openldap/metadata.rb +2 -2
- data/spec/data/metadata/quick_start/metadata.rb +2 -7
- data/spec/functional/audit/runner_spec.rb +1 -1
- data/spec/functional/dsl/reboot_pending_spec.rb +7 -25
- data/spec/functional/event_loggers/windows_eventlog_spec.rb +6 -4
- data/spec/functional/file_content_management/deploy_strategies_spec.rb +21 -21
- data/spec/functional/knife/exec_spec.rb +1 -1
- data/spec/functional/knife/ssh_spec.rb +3 -3
- data/spec/functional/mixin/user_context_spec.rb +3 -1
- data/spec/functional/rebooter_spec.rb +1 -1
- data/spec/functional/resource/aix_service_spec.rb +1 -1
- data/spec/functional/resource/aixinit_service_spec.rb +1 -1
- data/spec/functional/resource/apt_package_spec.rb +1 -1
- data/spec/functional/resource/chocolatey_package_spec.rb +2 -2
- data/spec/functional/resource/cookbook_file_spec.rb +1 -3
- data/spec/functional/resource/cron_spec.rb +4 -3
- data/spec/functional/resource/dpkg_package_spec.rb +4 -4
- data/spec/functional/resource/dsc_resource_spec.rb +2 -1
- data/spec/functional/resource/dsc_script_spec.rb +16 -20
- data/spec/functional/resource/execute_spec.rb +2 -2
- data/spec/functional/resource/git_spec.rb +6 -6
- data/spec/functional/resource/group_spec.rb +8 -6
- data/spec/functional/resource/ifconfig_spec.rb +3 -5
- data/spec/functional/resource/link_spec.rb +2 -2
- data/spec/functional/resource/mount_spec.rb +3 -7
- data/spec/functional/resource/powershell_script_spec.rb +9 -8
- data/spec/functional/resource/reboot_spec.rb +1 -1
- data/spec/functional/resource/remote_file_spec.rb +2 -2
- data/spec/functional/resource/template_spec.rb +1 -1
- data/spec/functional/resource/user/windows_spec.rb +2 -2
- data/spec/functional/resource/windows_certificate_spec.rb +3 -3
- data/spec/functional/resource/windows_service_spec.rb +3 -3
- data/spec/functional/resource/windows_task_spec.rb +51 -0
- data/spec/functional/run_lock_spec.rb +10 -3
- data/spec/functional/shell_spec.rb +1 -1
- data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
- data/spec/functional/version_spec.rb +1 -1
- data/spec/functional/win32/security_spec.rb +12 -7
- data/spec/functional/win32/service_manager_spec.rb +1 -1
- data/spec/functional/win32/version_info_spec.rb +4 -4
- data/spec/integration/client/client_spec.rb +114 -132
- data/spec/integration/client/exit_code_spec.rb +8 -8
- data/spec/integration/client/ipv6_spec.rb +5 -5
- data/spec/integration/knife/chef_fs_data_store_spec.rb +38 -38
- data/spec/integration/knife/chef_repo_path_spec.rb +42 -42
- data/spec/integration/knife/chef_repository_file_system_spec.rb +9 -9
- data/spec/integration/knife/chefignore_spec.rb +13 -13
- data/spec/integration/knife/client_bulk_delete_spec.rb +8 -8
- data/spec/integration/knife/client_create_spec.rb +1 -1
- data/spec/integration/knife/client_delete_spec.rb +4 -4
- data/spec/integration/knife/client_key_delete_spec.rb +1 -1
- data/spec/integration/knife/client_key_list_spec.rb +1 -1
- data/spec/integration/knife/client_list_spec.rb +1 -1
- data/spec/integration/knife/common_options_spec.rb +1 -1
- data/spec/integration/knife/config_get_spec.rb +1 -1
- data/spec/integration/knife/config_list_profiles_spec.rb +2 -1
- data/spec/integration/knife/cookbook_api_ipv6_spec.rb +3 -3
- data/spec/integration/knife/cookbook_bulk_delete_spec.rb +3 -3
- data/spec/integration/knife/cookbook_download_spec.rb +4 -4
- data/spec/integration/knife/cookbook_list_spec.rb +2 -2
- data/spec/integration/knife/cookbook_show_spec.rb +3 -3
- data/spec/integration/knife/cookbook_upload_spec.rb +6 -6
- data/spec/integration/knife/data_bag_delete_spec.rb +4 -4
- data/spec/integration/knife/data_bag_from_file_spec.rb +7 -7
- data/spec/integration/knife/data_bag_list_spec.rb +1 -1
- data/spec/integration/knife/delete_spec.rb +37 -37
- data/spec/integration/knife/deps_spec.rb +23 -23
- data/spec/integration/knife/diff_spec.rb +23 -23
- data/spec/integration/knife/download_spec.rb +79 -79
- data/spec/integration/knife/environment_compare_spec.rb +3 -3
- data/spec/integration/knife/environment_from_file_spec.rb +6 -6
- data/spec/integration/knife/environment_list_spec.rb +1 -1
- data/spec/integration/knife/environment_show_spec.rb +4 -4
- data/spec/integration/knife/list_spec.rb +25 -25
- data/spec/integration/knife/node_bulk_delete_spec.rb +2 -2
- data/spec/integration/knife/node_delete_spec.rb +2 -2
- data/spec/integration/knife/node_environment_set_spec.rb +1 -1
- data/spec/integration/knife/node_from_file_spec.rb +2 -2
- data/spec/integration/knife/node_list_spec.rb +1 -1
- data/spec/integration/knife/raw_spec.rb +12 -12
- data/spec/integration/knife/redirection_spec.rb +1 -1
- data/spec/integration/knife/role_bulk_delete_spec.rb +2 -2
- data/spec/integration/knife/role_delete_spec.rb +2 -2
- data/spec/integration/knife/role_from_file_spec.rb +5 -5
- data/spec/integration/knife/role_list_spec.rb +1 -1
- data/spec/integration/knife/role_show_spec.rb +1 -1
- data/spec/integration/knife/show_spec.rb +10 -10
- data/spec/integration/knife/upload_spec.rb +85 -85
- data/spec/integration/recipes/accumulator_spec.rb +4 -4
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +6 -6
- data/spec/integration/recipes/lwrp_spec.rb +6 -6
- data/spec/integration/recipes/notifies_spec.rb +45 -45
- data/spec/integration/recipes/notifying_block_spec.rb +4 -4
- data/spec/integration/recipes/provider_choice.rb +1 -2
- data/spec/integration/recipes/recipe_dsl_spec.rb +9 -9
- data/spec/integration/recipes/remote_directory.rb +2 -2
- data/spec/integration/recipes/resource_action_spec.rb +1 -1
- data/spec/integration/recipes/resource_converge_if_changed_spec.rb +19 -19
- data/spec/integration/solo/solo_spec.rb +29 -29
- data/spec/scripts/ssl-serve.rb +1 -1
- data/spec/spec_helper.rb +11 -14
- data/spec/stress/win32/security_spec.rb +1 -1
- data/spec/support/lib/chef/resource/zen_follower.rb +1 -1
- data/spec/support/lib/chef/resource/zen_master.rb +1 -1
- data/spec/support/mock/platform.rb +2 -2
- data/spec/support/platform_helpers.rb +12 -3
- data/spec/support/platforms/win32/spec_service.rb +6 -10
- data/spec/support/shared/context/client.rb +2 -1
- data/spec/support/shared/functional/execute_resource.rb +4 -4
- data/spec/support/shared/functional/file_resource.rb +1 -3
- data/spec/support/shared/functional/http.rb +20 -44
- data/spec/support/shared/functional/securable_resource.rb +4 -8
- data/spec/support/shared/functional/win32_service.rb +1 -1
- data/spec/support/shared/functional/windows_script.rb +2 -1
- data/spec/support/shared/integration/app_server_support.rb +3 -4
- data/spec/support/shared/integration/integration_helper.rb +1 -0
- data/spec/support/shared/integration/knife_support.rb +5 -5
- data/spec/support/shared/unit/application_dot_d.rb +10 -4
- data/spec/support/shared/unit/file_system_support.rb +3 -2
- data/spec/support/shared/unit/platform_introspector.rb +12 -12
- data/spec/support/shared/unit/provider/file.rb +1 -1
- data/spec/support/shared/unit/script_resource.rb +1 -1
- data/spec/support/shared/unit/windows_script_resource.rb +1 -1
- data/spec/tiny_server.rb +1 -1
- data/spec/unit/api_client/registration_spec.rb +1 -1
- data/spec/unit/api_client_spec.rb +5 -5
- data/spec/unit/api_client_v1_spec.rb +6 -6
- data/spec/unit/application/client_spec.rb +8 -8
- data/spec/unit/application/exit_code_spec.rb +3 -2
- data/spec/unit/application/knife_spec.rb +1 -2
- data/spec/unit/audit/audit_event_proxy_spec.rb +14 -7
- data/spec/unit/audit/audit_reporter_spec.rb +20 -11
- data/spec/unit/audit/control_group_data_spec.rb +17 -12
- data/spec/unit/chef_fs/config_spec.rb +3 -3
- data/spec/unit/chef_fs/file_system/repository/directory_spec.rb +1 -1
- data/spec/unit/chef_fs/parallelizer.rb +1 -1
- data/spec/unit/client_spec.rb +3 -3
- data/spec/unit/config_fetcher_spec.rb +1 -1
- data/spec/unit/cookbook/metadata_spec.rb +13 -13
- data/spec/unit/cookbook/synchronizer_spec.rb +6 -6
- data/spec/unit/cookbook_loader_spec.rb +17 -17
- data/spec/unit/cookbook_manifest_spec.rb +9 -9
- data/spec/unit/cookbook_site_streaming_uploader_spec.rb +1 -2
- data/spec/unit/cookbook_uploader_spec.rb +2 -2
- data/spec/unit/cookbook_version_file_specificity_spec.rb +9 -9
- data/spec/unit/cookbook_version_spec.rb +2 -2
- data/spec/unit/data_bag_item_spec.rb +7 -7
- data/spec/unit/data_bag_spec.rb +1 -1
- data/spec/unit/data_collector_spec.rb +23 -23
- data/spec/unit/decorator_spec.rb +2 -2
- data/spec/unit/deprecated_spec.rb +2 -2
- data/spec/unit/dsl/data_query_spec.rb +3 -2
- data/spec/unit/dsl/declare_resource_spec.rb +1 -1
- data/spec/unit/dsl/platform_introspection_spec.rb +2 -2
- data/spec/unit/encrypted_data_bag_item/check_encrypted_spec.rb +2 -1
- data/spec/unit/encrypted_data_bag_item_spec.rb +2 -1
- data/spec/unit/environment_spec.rb +13 -13
- data/spec/unit/event_dispatch/dsl_spec.rb +1 -1
- data/spec/unit/file_content_management/deploy/mv_unix_spec.rb +3 -3
- data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +2 -2
- data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +3 -3
- data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +1 -1
- data/spec/unit/http/authenticator_spec.rb +4 -3
- data/spec/unit/http/json_input_spec.rb +1 -1
- data/spec/unit/http/socketless_chef_zero_client_spec.rb +15 -15
- data/spec/unit/key_spec.rb +8 -8
- data/spec/unit/knife/bootstrap_spec.rb +14 -10
- data/spec/unit/knife/client_bulk_delete_spec.rb +4 -4
- data/spec/unit/knife/configure_client_spec.rb +1 -1
- data/spec/unit/knife/configure_spec.rb +1 -1
- data/spec/unit/knife/cookbook_bulk_delete_spec.rb +1 -1
- data/spec/unit/knife/cookbook_delete_spec.rb +2 -2
- data/spec/unit/knife/cookbook_download_spec.rb +2 -2
- data/spec/unit/knife/cookbook_metadata_spec.rb +4 -4
- data/spec/unit/knife/cookbook_upload_spec.rb +7 -5
- data/spec/unit/knife/core/bootstrap_context_spec.rb +1 -1
- data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +2 -2
- data/spec/unit/knife/core/gem_glob_loader_spec.rb +4 -4
- data/spec/unit/knife/core/hashed_command_loader_spec.rb +4 -2
- data/spec/unit/knife/core/node_editor_spec.rb +12 -12
- data/spec/unit/knife/core/ui_spec.rb +11 -11
- data/spec/unit/knife/data_bag_from_file_spec.rb +2 -1
- data/spec/unit/knife/data_bag_show_spec.rb +2 -1
- data/spec/unit/knife/key_create_spec.rb +1 -1
- data/spec/unit/knife/key_delete_spec.rb +3 -3
- data/spec/unit/knife/key_edit_spec.rb +4 -4
- data/spec/unit/knife/key_list_spec.rb +1 -1
- data/spec/unit/knife/key_show_spec.rb +3 -3
- data/spec/unit/knife/node_bulk_delete_spec.rb +3 -3
- data/spec/unit/knife/node_delete_spec.rb +2 -2
- data/spec/unit/knife/node_edit_spec.rb +1 -1
- data/spec/unit/knife/node_environment_set_spec.rb +1 -1
- data/spec/unit/knife/node_from_file_spec.rb +1 -1
- data/spec/unit/knife/node_policy_set_spec.rb +1 -1
- data/spec/unit/knife/node_run_list_add_spec.rb +1 -1
- data/spec/unit/knife/node_run_list_remove_spec.rb +1 -1
- data/spec/unit/knife/node_run_list_set_spec.rb +1 -1
- data/spec/unit/knife/node_show_spec.rb +1 -1
- data/spec/unit/knife/raw_spec.rb +2 -2
- data/spec/unit/knife/role_bulk_delete_spec.rb +2 -2
- data/spec/unit/knife/role_create_spec.rb +1 -1
- data/spec/unit/knife/role_delete_spec.rb +1 -1
- data/spec/unit/knife/role_edit_spec.rb +1 -1
- data/spec/unit/knife/role_env_run_list_add_spec.rb +1 -1
- data/spec/unit/knife/role_env_run_list_clear_spec.rb +1 -1
- data/spec/unit/knife/role_env_run_list_remove_spec.rb +1 -1
- data/spec/unit/knife/role_env_run_list_replace_spec.rb +1 -1
- data/spec/unit/knife/role_env_run_list_set_spec.rb +1 -1
- data/spec/unit/knife/role_from_file_spec.rb +1 -1
- data/spec/unit/knife/role_run_list_add_spec.rb +1 -1
- data/spec/unit/knife/role_run_list_clear_spec.rb +1 -1
- data/spec/unit/knife/role_run_list_remove_spec.rb +1 -1
- data/spec/unit/knife/role_run_list_replace_spec.rb +1 -1
- data/spec/unit/knife/role_run_list_set_spec.rb +1 -1
- data/spec/unit/knife/ssh_spec.rb +27 -17
- data/spec/unit/knife/ssl_check_spec.rb +4 -4
- data/spec/unit/knife/ssl_fetch_spec.rb +5 -5
- data/spec/unit/knife/status_spec.rb +3 -2
- data/spec/unit/knife/supermarket_download_spec.rb +4 -4
- data/spec/unit/knife/supermarket_install_spec.rb +5 -4
- data/spec/unit/knife/supermarket_share_spec.rb +1 -1
- data/spec/unit/knife_spec.rb +34 -33
- data/spec/unit/lwrp_spec.rb +19 -19
- data/spec/unit/mixin/homebrew_user_spec.rb +1 -1
- data/spec/unit/mixin/params_validate_spec.rb +10 -10
- data/spec/unit/mixin/properties_spec.rb +4 -4
- data/spec/unit/mixin/shell_out_spec.rb +27 -27
- data/spec/unit/mixin/template_spec.rb +4 -8
- data/spec/unit/mixin/unformatter_spec.rb +1 -2
- data/spec/unit/mixin/user_context_spec.rb +1 -2
- data/spec/unit/mixin/which.rb +2 -0
- data/spec/unit/mixin/windows_architecture_helper_spec.rb +3 -3
- data/spec/unit/node/attribute_spec.rb +79 -79
- data/spec/unit/node/immutable_collections_spec.rb +50 -50
- data/spec/unit/node_spec.rb +16 -16
- data/spec/unit/org_spec.rb +3 -3
- data/spec/unit/policy_builder/policyfile_spec.rb +2 -2
- data/spec/unit/property/state_spec.rb +26 -25
- data/spec/unit/property/validation_spec.rb +14 -13
- data/spec/unit/property_spec.rb +10 -9
- data/spec/unit/provider/apt_update_spec.rb +6 -6
- data/spec/unit/provider/cron_spec.rb +15 -15
- data/spec/unit/provider/dsc_resource_spec.rb +6 -3
- data/spec/unit/provider/dsc_script_spec.rb +1 -1
- data/spec/unit/provider/execute_spec.rb +5 -5
- data/spec/unit/provider/git_spec.rb +39 -39
- data/spec/unit/provider/group/dscl_spec.rb +3 -3
- data/spec/unit/provider/group/groupadd_spec.rb +1 -1
- data/spec/unit/provider/group_spec.rb +2 -3
- data/spec/unit/provider/ifconfig/aix_spec.rb +1 -1
- data/spec/unit/provider/ifconfig/debian_spec.rb +2 -2
- data/spec/unit/provider/ifconfig_spec.rb +45 -16
- data/spec/unit/provider/launchd_spec.rb +23 -15
- data/spec/unit/provider/link_spec.rb +22 -11
- data/spec/unit/provider/mount/aix_spec.rb +6 -6
- data/spec/unit/provider/mount/mount_spec.rb +31 -31
- data/spec/unit/provider/mount/solaris_spec.rb +11 -11
- data/spec/unit/provider/ohai_spec.rb +1 -1
- data/spec/unit/provider/osx_profile_spec.rb +5 -7
- data/spec/unit/provider/package/apt_spec.rb +5 -5
- data/spec/unit/provider/package/bff_spec.rb +1 -1
- data/spec/unit/provider/package/cab_spec.rb +1 -1
- data/spec/unit/provider/package/chocolatey_spec.rb +8 -8
- data/spec/unit/provider/package/freebsd/pkg_spec.rb +1 -1
- data/spec/unit/provider/package/ips_spec.rb +6 -6
- data/spec/unit/provider/package/macports_spec.rb +1 -1
- data/spec/unit/provider/package/msu_spec.rb +1 -1
- data/spec/unit/provider/package/openbsd_spec.rb +15 -11
- data/spec/unit/provider/package/pacman_spec.rb +3 -3
- data/spec/unit/provider/package/paludis_spec.rb +4 -4
- data/spec/unit/provider/package/portage_spec.rb +1 -1
- data/spec/unit/provider/package/powershell_spec.rb +1 -1
- data/spec/unit/provider/package/smartos_spec.rb +3 -3
- data/spec/unit/provider/package/solaris_spec.rb +1 -1
- data/spec/unit/provider/package/windows/exe_spec.rb +9 -9
- data/spec/unit/provider/package/windows/msi_spec.rb +7 -7
- data/spec/unit/provider/package/windows_spec.rb +2 -1
- data/spec/unit/provider/package/yum/yum_cache_spec.rb +1 -1
- data/spec/unit/provider/package/zypper_spec.rb +4 -4
- data/spec/unit/provider/package_spec.rb +1 -1
- data/spec/unit/provider/powershell_script_spec.rb +7 -7
- data/spec/unit/provider/registry_key_spec.rb +1 -1
- data/spec/unit/provider/remote_directory_spec.rb +6 -6
- data/spec/unit/provider/route_spec.rb +11 -11
- data/spec/unit/provider/service/arch_service_spec.rb +13 -13
- data/spec/unit/provider/service/debian_service_spec.rb +2 -1
- data/spec/unit/provider/service/freebsd_service_spec.rb +28 -24
- data/spec/unit/provider/service/gentoo_service_spec.rb +2 -2
- data/spec/unit/provider/service/init_service_spec.rb +11 -11
- data/spec/unit/provider/service/invokercd_service_spec.rb +11 -11
- data/spec/unit/provider/service/macosx_spec.rb +5 -5
- data/spec/unit/provider/service/openbsd_service_spec.rb +15 -11
- data/spec/unit/provider/service/simple_service_spec.rb +7 -7
- data/spec/unit/provider/service/upstart_service_spec.rb +14 -14
- data/spec/unit/provider/service/windows_spec.rb +53 -35
- data/spec/unit/provider/subversion_spec.rb +8 -4
- data/spec/unit/provider/systemd_unit_spec.rb +142 -142
- data/spec/unit/provider/template/content_spec.rb +29 -29
- data/spec/unit/provider/windows_task_spec.rb +1 -1
- data/spec/unit/provider_resolver_spec.rb +75 -75
- data/spec/unit/provider_spec.rb +2 -4
- data/spec/unit/recipe_spec.rb +4 -4
- data/spec/unit/resource/batch_spec.rb +1 -1
- data/spec/unit/resource/chef_gem_spec.rb +1 -1
- data/spec/unit/resource/chocolatey_config_spec.rb +1 -1
- data/spec/unit/resource/chocolatey_source_spec.rb +1 -1
- data/spec/unit/resource/directory_spec.rb +1 -1
- data/spec/unit/resource/dnf_package_spec.rb +1 -1
- data/spec/unit/resource/dsc_resource_spec.rb +1 -1
- data/spec/unit/resource/file/verification_spec.rb +1 -2
- data/spec/unit/resource/file_spec.rb +1 -1
- data/spec/unit/resource/group_spec.rb +1 -1
- data/spec/unit/resource/link_spec.rb +1 -1
- data/spec/unit/resource/osx_profile_spec.rb +2 -1
- data/spec/unit/resource/powershell_script_spec.rb +12 -7
- data/spec/unit/resource/registry_key_spec.rb +3 -3
- data/spec/unit/resource/rhsm_subscription_spec.rb +1 -1
- data/spec/unit/resource/service_spec.rb +1 -1
- data/spec/unit/resource/template_spec.rb +2 -2
- data/spec/unit/resource/windows_env_spec.rb +1 -1
- data/spec/unit/resource/windows_service_spec.rb +5 -5
- data/spec/unit/resource/windows_task_spec.rb +6 -2
- data/spec/unit/resource/yum_package_spec.rb +1 -1
- data/spec/unit/resource_collection/resource_list_spec.rb +1 -1
- data/spec/unit/resource_collection/resource_set_spec.rb +7 -7
- data/spec/unit/resource_collection/stepable_iterator_spec.rb +2 -2
- data/spec/unit/resource_collection_spec.rb +4 -4
- data/spec/unit/resource_definition_spec.rb +2 -2
- data/spec/unit/resource_inspector_spec.rb +1 -1
- data/spec/unit/resource_reporter_spec.rb +4 -4
- data/spec/unit/resource_spec.rb +22 -22
- data/spec/unit/role_spec.rb +3 -3
- data/spec/unit/run_context/cookbook_compiler_spec.rb +23 -23
- data/spec/unit/run_list/run_list_expansion_spec.rb +9 -6
- data/spec/unit/run_list_spec.rb +1 -1
- data/spec/unit/runner_spec.rb +3 -3
- data/spec/unit/search/query_spec.rb +3 -2
- data/spec/unit/shell/model_wrapper_spec.rb +1 -1
- data/spec/unit/shell/shell_session_spec.rb +8 -11
- data/spec/unit/shell_spec.rb +1 -2
- data/spec/unit/user_spec.rb +4 -4
- data/spec/unit/user_v1_spec.rb +3 -3
- data/spec/unit/util/backup_spec.rb +1 -1
- data/spec/unit/util/dsc/lcm_output_parser_spec.rb +13 -13
- data/spec/unit/util/dsc/local_configuration_manager_spec.rb +3 -3
- data/spec/unit/util/editor_spec.rb +1 -1
- data/spec/unit/util/powershell/ps_credential_spec.rb +3 -2
- data/spec/unit/util/threaded_job_queue_spec.rb +2 -2
- data/spec/unit/version_class_spec.rb +4 -4
- data/spec/unit/win32/registry_spec.rb +5 -5
- data/spec/unit/win32/security_spec.rb +2 -1
- data/tasks/announce.rb +4 -11
- metadata +10 -6
- data/tasks/maintainers.rb +0 -211
- data/tasks/templates/prerelease.md.erb +0 -35
@@ -19,7 +19,7 @@ def platform_mock(platform = :unix)
|
|
19
19
|
mock_constants({ "RUBY_PLATFORM" => (platform == :windows ? "i386-mingw32" : "x86_64-darwin11.2.0"),
|
20
20
|
"File::PATH_SEPARATOR" => (platform == :windows ? ";" : ":"),
|
21
21
|
"File::ALT_SEPARATOR" => (platform == :windows ? "\\" : nil) }) do
|
22
|
-
|
23
|
-
|
22
|
+
yield
|
23
|
+
end
|
24
24
|
end
|
25
25
|
end
|
@@ -46,6 +46,7 @@ require "wmi-lite/wmi" if windows?
|
|
46
46
|
|
47
47
|
def windows_domain_joined?
|
48
48
|
return false unless windows?
|
49
|
+
|
49
50
|
wmi = WmiLite::Wmi.new
|
50
51
|
computer_system = wmi.first_of("Win32_ComputerSystem")
|
51
52
|
computer_system["partofdomain"]
|
@@ -54,19 +55,20 @@ end
|
|
54
55
|
def windows_2008r2_or_later?
|
55
56
|
return false unless windows?
|
56
57
|
return false unless host_version
|
57
|
-
|
58
|
-
|
59
|
-
end
|
58
|
+
|
59
|
+
components = host_version.split(".").map(&:to_i)
|
60
60
|
components.length >= 2 && components[0] >= 6 && components[1] >= 1
|
61
61
|
end
|
62
62
|
|
63
63
|
def windows_2012r2?
|
64
64
|
return false unless windows?
|
65
|
+
|
65
66
|
(host_version && host_version.start_with?("6.3"))
|
66
67
|
end
|
67
68
|
|
68
69
|
def windows_gte_10?
|
69
70
|
return false unless windows?
|
71
|
+
|
70
72
|
Gem::Requirement.new(">= 10").satisfied_by?(Gem::Version.new(host_version))
|
71
73
|
end
|
72
74
|
|
@@ -80,6 +82,7 @@ end
|
|
80
82
|
|
81
83
|
def windows_powershell_dsc?
|
82
84
|
return false unless windows?
|
85
|
+
|
83
86
|
supports_dsc = false
|
84
87
|
begin
|
85
88
|
wmi = WmiLite::Wmi.new("root/microsoft/windows/desiredstateconfiguration")
|
@@ -97,6 +100,7 @@ end
|
|
97
100
|
|
98
101
|
def windows_user_right?(right)
|
99
102
|
return false unless windows?
|
103
|
+
|
100
104
|
require "chef/win32/security"
|
101
105
|
Chef::ReservedNames::Win32::Security.get_account_right(ENV["USERNAME"]).include?(right)
|
102
106
|
end
|
@@ -238,6 +242,7 @@ end
|
|
238
242
|
|
239
243
|
def root?
|
240
244
|
return false if windows?
|
245
|
+
|
241
246
|
Process.euid == 0
|
242
247
|
end
|
243
248
|
|
@@ -270,6 +275,10 @@ rescue SocketError
|
|
270
275
|
false
|
271
276
|
end
|
272
277
|
|
278
|
+
def ifconfig?
|
279
|
+
which("ifconfig")
|
280
|
+
end
|
281
|
+
|
273
282
|
def choco_installed?
|
274
283
|
result = ShellHelpers.powershell_out("choco --version")
|
275
284
|
result.stderr.empty? ? true : false
|
@@ -20,12 +20,12 @@ require "win32/daemon"
|
|
20
20
|
|
21
21
|
class SpecService < ::Win32::Daemon
|
22
22
|
def service_init
|
23
|
-
@test_service_file = "#{ENV[
|
23
|
+
@test_service_file = "#{ENV["TMP"]}/spec_service_file"
|
24
24
|
end
|
25
25
|
|
26
26
|
def service_main(*startup_parameters)
|
27
27
|
while running?
|
28
|
-
|
28
|
+
unless File.exists?(@test_service_file)
|
29
29
|
File.open(@test_service_file, "wb") do |f|
|
30
30
|
f.write("This file is created by SpecService")
|
31
31
|
end
|
@@ -39,17 +39,13 @@ class SpecService < ::Win32::Daemon
|
|
39
39
|
# Control Signal Callback Methods
|
40
40
|
################################################################################
|
41
41
|
|
42
|
-
def service_stop
|
43
|
-
end
|
42
|
+
def service_stop; end
|
44
43
|
|
45
|
-
def service_pause
|
46
|
-
end
|
44
|
+
def service_pause; end
|
47
45
|
|
48
|
-
def service_resume
|
49
|
-
end
|
46
|
+
def service_resume; end
|
50
47
|
|
51
|
-
def service_shutdown
|
52
|
-
end
|
48
|
+
def service_shutdown; end
|
53
49
|
end
|
54
50
|
|
55
51
|
# To run this file as a service, it must be called as a script from within
|
@@ -251,7 +251,8 @@ end
|
|
251
251
|
shared_context "audit phase completed with failed controls" do
|
252
252
|
let(:audit_runner) do
|
253
253
|
instance_double("Chef::Audit::Runner", failed?: true,
|
254
|
-
num_failed: 1, num_total: 3)
|
254
|
+
num_failed: 1, num_total: 3)
|
255
|
+
end
|
255
256
|
|
256
257
|
let(:audit_error) do
|
257
258
|
err = Chef::Exceptions::AuditsFailed.new(audit_runner.num_failed, audit_runner.num_total)
|
@@ -21,7 +21,7 @@ shared_context "a non-admin Windows user" do
|
|
21
21
|
|
22
22
|
let(:windows_nonadmin_user_domain) { ENV["COMPUTERNAME"] }
|
23
23
|
let(:windows_nonadmin_user_qualified) { "#{windows_nonadmin_user_domain}\\#{windows_nonadmin_user}" }
|
24
|
-
let(:temp_profile_path) { "#{ENV[
|
24
|
+
let(:temp_profile_path) { "#{ENV["USERPROFILE"]}\\..\\cheftesttempuser" }
|
25
25
|
before do
|
26
26
|
shell_out!("net.exe user /delete #{windows_nonadmin_user}", returns: [0, 2])
|
27
27
|
|
@@ -40,7 +40,7 @@ end
|
|
40
40
|
shared_context "alternate user identity" do
|
41
41
|
let(:windows_alternate_user) { "chef%02d%02d%02d" % [Time.now.year % 100, Time.now.month, Time.now.day] }
|
42
42
|
let(:windows_alternate_user_password) { "lj28;fx3T!x,2" }
|
43
|
-
let(:windows_alternate_user_qualified) { "#{ENV[
|
43
|
+
let(:windows_alternate_user_qualified) { "#{ENV["COMPUTERNAME"]}\\#{windows_alternate_user}" }
|
44
44
|
|
45
45
|
let(:windows_nonadmin_user) { windows_alternate_user }
|
46
46
|
let(:windows_nonadmin_user_password) { windows_alternate_user_password }
|
@@ -58,7 +58,7 @@ shared_context "a command that can be executed as an alternate user" do
|
|
58
58
|
include Chef::Mixin::ShellOut
|
59
59
|
|
60
60
|
before do
|
61
|
-
shell_out!("icacls \"#{script_output_dir.gsub(
|
61
|
+
shell_out!("icacls \"#{script_output_dir.gsub(%r{/}, '\\')}\" /grant \"authenticated users:(F)\"")
|
62
62
|
end
|
63
63
|
|
64
64
|
after do
|
@@ -73,7 +73,7 @@ shared_examples_for "an execute resource that supports alternate user identity"
|
|
73
73
|
include_context "a command that can be executed as an alternate user"
|
74
74
|
|
75
75
|
let(:windows_current_user) { ENV["USERNAME"] }
|
76
|
-
let(:windows_current_user_qualified) { "#{ENV[
|
76
|
+
let(:windows_current_user_qualified) { "#{ENV["USERDOMAIN"] || ENV["COMPUTERNAME"]}\\#{windows_current_user}" }
|
77
77
|
let(:resource_identity_command) { "powershell.exe -noprofile -command \"import-module microsoft.powershell.utility;([Security.Principal.WindowsPrincipal]([Security.Principal.WindowsIdentity]::GetCurrent())).identity.name | out-file -encoding ASCII '#{script_output_path}'\"" }
|
78
78
|
|
79
79
|
let(:execute_resource) do
|
@@ -392,9 +392,7 @@ shared_examples_for "a configured file resource" do
|
|
392
392
|
end
|
393
393
|
|
394
394
|
def binread(file)
|
395
|
-
content = File.open(file, "rb")
|
396
|
-
f.read
|
397
|
-
end
|
395
|
+
content = File.open(file, "rb", &:read)
|
398
396
|
content.force_encoding(Encoding::BINARY) if "".respond_to?(:force_encoding)
|
399
397
|
content
|
400
398
|
end
|
@@ -30,9 +30,7 @@ module ChefHTTPShared
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def binread(file)
|
33
|
-
content = File.open(file, "rb")
|
34
|
-
f.read
|
35
|
-
end
|
33
|
+
content = File.open(file, "rb", &:read)
|
36
34
|
content.force_encoding(Encoding::BINARY) if "".respond_to?(:force_encoding)
|
37
35
|
content
|
38
36
|
end
|
@@ -53,25 +51,19 @@ module ChefHTTPShared
|
|
53
51
|
# just a normal file
|
54
52
|
# (expected_content should be uncompressed)
|
55
53
|
@api.get("/nyan_cat.png", 200) do
|
56
|
-
File.open(nyan_uncompressed_filename, "rb")
|
57
|
-
f.read
|
58
|
-
end
|
54
|
+
File.open(nyan_uncompressed_filename, "rb", &:read)
|
59
55
|
end
|
60
56
|
|
61
57
|
# this ends in .gz, we do not uncompress it and drop it on the filesystem as a .gz file (the internet often lies)
|
62
58
|
# (expected_content should be compressed)
|
63
59
|
@api.get("/nyan_cat.png.gz", 200, nil, { "Content-Type" => "application/gzip", "Content-Encoding" => "gzip" } ) do
|
64
|
-
File.open(nyan_compressed_filename, "rb")
|
65
|
-
f.read
|
66
|
-
end
|
60
|
+
File.open(nyan_compressed_filename, "rb", &:read)
|
67
61
|
end
|
68
62
|
|
69
63
|
# this is an uncompressed file that was compressed by some mod_gzip-ish webserver thingy, so we will expand it
|
70
64
|
# (expected_content should be uncompressed)
|
71
65
|
@api.get("/nyan_cat_compressed.png", 200, nil, { "Content-Type" => "application/gzip", "Content-Encoding" => "gzip" } ) do
|
72
|
-
File.open(nyan_compressed_filename, "rb")
|
73
|
-
f.read
|
74
|
-
end
|
66
|
+
File.open(nyan_compressed_filename, "rb", &:read)
|
75
67
|
end
|
76
68
|
|
77
69
|
#
|
@@ -82,25 +74,19 @@ module ChefHTTPShared
|
|
82
74
|
@api.get("/nyan_cat_content_length.png", 200, nil,
|
83
75
|
{
|
84
76
|
"Content-Length" => nyan_uncompressed_size.to_s,
|
85
|
-
}
|
86
|
-
|
87
|
-
File.open(nyan_uncompressed_filename, "rb") do |f|
|
88
|
-
f.read
|
77
|
+
}) do
|
78
|
+
File.open(nyan_uncompressed_filename, "rb", &:read)
|
89
79
|
end
|
90
|
-
end
|
91
80
|
|
92
81
|
# (expected_content should be uncompressed)
|
93
82
|
@api.get("/nyan_cat_content_length_compressed.png", 200, nil,
|
94
83
|
{
|
95
|
-
"Content-Length"
|
96
|
-
"Content-Type"
|
84
|
+
"Content-Length" => nyan_compressed_size.to_s,
|
85
|
+
"Content-Type" => "application/gzip",
|
97
86
|
"Content-Encoding" => "gzip",
|
98
|
-
}
|
99
|
-
|
100
|
-
File.open(nyan_compressed_filename, "rb") do |f|
|
101
|
-
f.read
|
87
|
+
}) do
|
88
|
+
File.open(nyan_compressed_filename, "rb", &:read)
|
102
89
|
end
|
103
|
-
end
|
104
90
|
|
105
91
|
#
|
106
92
|
# endpoints that simulate truncated downloads (bad content-length header)
|
@@ -110,25 +96,19 @@ module ChefHTTPShared
|
|
110
96
|
@api.get("/nyan_cat_truncated.png", 200, nil,
|
111
97
|
{
|
112
98
|
"Content-Length" => (nyan_uncompressed_size + 1).to_s,
|
113
|
-
}
|
114
|
-
|
115
|
-
File.open(nyan_uncompressed_filename, "rb") do |f|
|
116
|
-
f.read
|
99
|
+
}) do
|
100
|
+
File.open(nyan_uncompressed_filename, "rb", &:read)
|
117
101
|
end
|
118
|
-
end
|
119
102
|
|
120
103
|
# (expected_content should be uncompressed)
|
121
104
|
@api.get("/nyan_cat_truncated_compressed.png", 200, nil,
|
122
105
|
{
|
123
|
-
"Content-Length"
|
124
|
-
"Content-Type"
|
106
|
+
"Content-Length" => (nyan_compressed_size + 1).to_s,
|
107
|
+
"Content-Type" => "application/gzip",
|
125
108
|
"Content-Encoding" => "gzip",
|
126
|
-
}
|
127
|
-
|
128
|
-
File.open(nyan_compressed_filename, "rb") do |f|
|
129
|
-
f.read
|
109
|
+
}) do
|
110
|
+
File.open(nyan_compressed_filename, "rb", &:read)
|
130
111
|
end
|
131
|
-
end
|
132
112
|
|
133
113
|
#
|
134
114
|
# in the presence of a transfer-encoding header, we must ignore the content-length (this bad content-length should work)
|
@@ -137,14 +117,11 @@ module ChefHTTPShared
|
|
137
117
|
# (expected_content should be uncompressed)
|
138
118
|
@api.get("/nyan_cat_transfer_encoding.png", 200, nil,
|
139
119
|
{
|
140
|
-
"Content-Length"
|
120
|
+
"Content-Length" => (nyan_uncompressed_size + 1).to_s,
|
141
121
|
"Transfer-Encoding" => "anything",
|
142
|
-
}
|
143
|
-
|
144
|
-
File.open(nyan_uncompressed_filename, "rb") do |f|
|
145
|
-
f.read
|
122
|
+
}) do
|
123
|
+
File.open(nyan_uncompressed_filename, "rb", &:read)
|
146
124
|
end
|
147
|
-
end
|
148
125
|
|
149
126
|
#
|
150
127
|
# 403 with a Content-Length
|
@@ -152,8 +129,7 @@ module ChefHTTPShared
|
|
152
129
|
@api.get("/forbidden", 403, "Forbidden",
|
153
130
|
{
|
154
131
|
"Content-Length" => "Forbidden".bytesize.to_s,
|
155
|
-
}
|
156
|
-
)
|
132
|
+
})
|
157
133
|
|
158
134
|
@api.post("/posty", 200, "Hi!")
|
159
135
|
|
@@ -89,7 +89,7 @@ shared_context "use Windows permissions", :windows_only do
|
|
89
89
|
end
|
90
90
|
|
91
91
|
def explicit_aces
|
92
|
-
descriptor.dacl.select
|
92
|
+
descriptor.dacl.select(&:explicit?)
|
93
93
|
end
|
94
94
|
|
95
95
|
def extract_ace_properties(aces)
|
@@ -314,7 +314,7 @@ shared_examples_for "a securable resource without existing target" do
|
|
314
314
|
end
|
315
315
|
|
316
316
|
it "sets owner when owner is specified with a \\" do
|
317
|
-
resource.owner "#{ENV[
|
317
|
+
resource.owner "#{ENV["COMPUTERNAME"]}\\Guest"
|
318
318
|
resource.run_action(:create)
|
319
319
|
expect(descriptor.owner).to eq(SID.Guest)
|
320
320
|
end
|
@@ -560,16 +560,12 @@ shared_examples_for "a securable resource without existing target" do
|
|
560
560
|
|
561
561
|
# On certain flavors of Windows the default list of ACLs sometimes includes
|
562
562
|
# non-inherited ACLs. Filter them out here.
|
563
|
-
parent_inherited_acls = parent_acls.dacl.collect
|
564
|
-
ace.inherited?
|
565
|
-
end
|
563
|
+
parent_inherited_acls = parent_acls.dacl.collect(&:inherited?)
|
566
564
|
|
567
565
|
resource.run_action(:create)
|
568
566
|
|
569
567
|
# Similarly filter out the non-inherited ACLs
|
570
|
-
resource_inherited_acls = descriptor.dacl.collect
|
571
|
-
ace.inherited?
|
572
|
-
end
|
568
|
+
resource_inherited_acls = descriptor.dacl.collect(&:inherited?)
|
573
569
|
|
574
570
|
expect(resource_inherited_acls).to eq(parent_inherited_acls)
|
575
571
|
end
|
@@ -52,6 +52,6 @@ shared_context "using Win32::Service" do
|
|
52
52
|
# for the file it creates under SYSTEM temp directory
|
53
53
|
|
54
54
|
let(:test_service_file) do
|
55
|
-
"#{ENV[
|
55
|
+
"#{ENV["SystemDrive"]}\\windows\\temp\\spec_service_file"
|
56
56
|
end
|
57
57
|
end
|
@@ -114,7 +114,8 @@ shared_context Chef::Resource::WindowsScript do
|
|
114
114
|
resource.only_if resource_guard_command, architecture: guard_architecture
|
115
115
|
expect { resource.run_action(:run) }.to raise_error(
|
116
116
|
Chef::Exceptions::Win32ArchitectureIncorrect,
|
117
|
-
/cannot execute script with requested architecture 'i386' on Windows Nano Server/
|
117
|
+
/cannot execute script with requested architecture 'i386' on Windows Nano Server/
|
118
|
+
)
|
118
119
|
end
|
119
120
|
end
|
120
121
|
end
|
@@ -27,10 +27,9 @@ module AppServerSupport
|
|
27
27
|
Rack::Handler::WEBrick.run(app,
|
28
28
|
Port: 9018,
|
29
29
|
AccessLog: [],
|
30
|
-
Logger: WEBrick::Log.new(StringIO.new, 7)
|
31
|
-
|
32
|
-
|
33
|
-
end
|
30
|
+
Logger: WEBrick::Log.new(StringIO.new, 7)) do |found_server|
|
31
|
+
server = found_server
|
32
|
+
end
|
34
33
|
end
|
35
34
|
Timeout.timeout(30) do
|
36
35
|
sleep(0.01) until server && server.status == :Running
|
@@ -111,6 +111,7 @@ module IntegrationSupport
|
|
111
111
|
RSpec.shared_context "with a chef repo" do
|
112
112
|
before :each do
|
113
113
|
raise "Can only create one directory per test" if @repository_dir
|
114
|
+
|
114
115
|
@repository_dir = Dir.mktmpdir("chef_repo")
|
115
116
|
Chef::Config.chef_repo_path = @repository_dir
|
116
117
|
%w{client cookbook data_bag environment node role user}.each do |object_name|
|
@@ -58,7 +58,7 @@ module KnifeSupport
|
|
58
58
|
old_loggers = Chef::Log.loggers
|
59
59
|
old_log_level = Chef::Log.level
|
60
60
|
begin
|
61
|
-
puts "knife: #{args.join(
|
61
|
+
puts "knife: #{args.join(" ")}" if DEBUG
|
62
62
|
subcommand_class = Chef::Knife.subcommand_class_from(args)
|
63
63
|
subcommand_class.options = Chef::Application::Knife.options.merge(subcommand_class.options)
|
64
64
|
subcommand_class.load_deps
|
@@ -150,7 +150,7 @@ module KnifeSupport
|
|
150
150
|
expected[:stderr] = arg
|
151
151
|
end
|
152
152
|
end
|
153
|
-
expected[:exit_code] = 1
|
153
|
+
expected[:exit_code] = 1 unless expected[:exit_code]
|
154
154
|
should_result_in(expected)
|
155
155
|
end
|
156
156
|
|
@@ -169,9 +169,9 @@ module KnifeSupport
|
|
169
169
|
private
|
170
170
|
|
171
171
|
def should_result_in(expected)
|
172
|
-
expected[:stdout] = ""
|
173
|
-
expected[:stderr] = ""
|
174
|
-
expected[:exit_code] = 0
|
172
|
+
expected[:stdout] = "" unless expected[:stdout]
|
173
|
+
expected[:stderr] = "" unless expected[:stderr]
|
174
|
+
expected[:exit_code] = 0 unless expected[:exit_code]
|
175
175
|
# TODO make this go away
|
176
176
|
stderr_actual = @stderr.sub(/^WARNING: No knife configuration file found\n/, "")
|
177
177
|
|
@@ -33,13 +33,15 @@ shared_examples_for "an application that loads a dot d" do
|
|
33
33
|
# make sure that we are correctly globbing.
|
34
34
|
let(:client_d_dir) do
|
35
35
|
Chef::Util::PathHelper.cleanpath(
|
36
|
-
|
36
|
+
File.join(File.dirname(__FILE__), "../../../data/client.d_00")
|
37
|
+
)
|
38
|
+
end
|
37
39
|
|
38
40
|
it "loads the configuration in order" do
|
39
41
|
expect(IO).to receive(:read).with(Pathname.new("#{client_d_dir}/00-foo.rb").cleanpath.to_s).and_return("foo 0")
|
40
42
|
expect(IO).to receive(:read).with(Pathname.new("#{client_d_dir}/01-bar.rb").cleanpath.to_s).and_return("bar 0")
|
41
43
|
expect(IO).to receive(:read).with(Pathname.new("#{client_d_dir}/02-strings.rb").cleanpath.to_s).and_return("strings 0")
|
42
|
-
allow(app).to receive(:apply_config).with(anything
|
44
|
+
allow(app).to receive(:apply_config).with(anything, Chef::Config.platform_specific_path("/etc/chef/client.rb")).and_call_original.ordered
|
43
45
|
expect(app).to receive(:apply_config).with("foo 0", Pathname.new("#{client_d_dir}/00-foo.rb").cleanpath.to_s).and_call_original.ordered
|
44
46
|
expect(app).to receive(:apply_config).with("bar 0", Pathname.new("#{client_d_dir}/01-bar.rb").cleanpath.to_s).and_call_original.ordered
|
45
47
|
expect(app).to receive(:apply_config).with("strings 0", Pathname.new("#{client_d_dir}/02-strings.rb").cleanpath.to_s).and_call_original.ordered
|
@@ -50,7 +52,9 @@ shared_examples_for "an application that loads a dot d" do
|
|
50
52
|
context "when client_d_dir is set to a directory without configuration" do
|
51
53
|
let(:client_d_dir) do
|
52
54
|
Chef::Util::PathHelper.cleanpath(
|
53
|
-
|
55
|
+
File.join(File.dirname(__FILE__), "../../data/client.d_01")
|
56
|
+
)
|
57
|
+
end
|
54
58
|
|
55
59
|
# client.d_01 has a nested folder with a rb file that if
|
56
60
|
# executed, would raise an exception. If it is executed,
|
@@ -66,7 +70,9 @@ shared_examples_for "an application that loads a dot d" do
|
|
66
70
|
# foo.rb as a directory should be ignored
|
67
71
|
let(:client_d_dir) do
|
68
72
|
Chef::Util::PathHelper.cleanpath(
|
69
|
-
|
73
|
+
File.join(File.dirname(__FILE__), "../../data/client.d_02")
|
74
|
+
)
|
75
|
+
end
|
70
76
|
|
71
77
|
it "does not raise an exception" do
|
72
78
|
expect { app.reconfigure }.not_to raise_error
|