chef 12.0.0.alpha.2-x86-mingw32 → 12.0.0.rc.0-x86-mingw32
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.
- data/CONTRIBUTING.md +9 -0
- data/README.md +1 -1
- data/Rakefile +12 -0
- data/bin/chef-service-manager +1 -1
- data/bin/chef-windows-service +35 -0
- data/distro/common/html/_sources/ctl_chef_server.txt +307 -10
- data/distro/common/html/ctl_chef_client.html +3 -7
- data/distro/common/html/ctl_chef_server.html +609 -41
- data/distro/common/html/ctl_chef_shell.html +2 -2
- data/distro/common/html/ctl_chef_solo.html +1 -1
- data/distro/common/html/index.html +13 -13
- data/distro/common/html/knife.html +10 -10
- data/distro/common/html/knife_bootstrap.html +8 -8
- data/distro/common/html/knife_client.html +12 -12
- data/distro/common/html/knife_common_options.html +7 -7
- data/distro/common/html/knife_configure.html +3 -3
- data/distro/common/html/knife_cookbook.html +19 -19
- data/distro/common/html/knife_cookbook_site.html +28 -28
- data/distro/common/html/knife_data_bag.html +28 -13
- data/distro/common/html/knife_delete.html +2 -2
- data/distro/common/html/knife_deps.html +3 -3
- data/distro/common/html/knife_diff.html +4 -4
- data/distro/common/html/knife_download.html +3 -3
- data/distro/common/html/knife_edit.html +2 -2
- data/distro/common/html/knife_environment.html +14 -14
- data/distro/common/html/knife_exec.html +11 -11
- data/distro/common/html/knife_index_rebuild.html +2 -2
- data/distro/common/html/knife_list.html +3 -3
- data/distro/common/html/knife_node.html +23 -23
- data/distro/common/html/knife_raw.html +4 -4
- data/distro/common/html/knife_recipe_list.html +3 -3
- data/distro/common/html/knife_role.html +11 -11
- data/distro/common/html/knife_search.html +4 -4
- data/distro/common/html/knife_serve.html +3 -3
- data/distro/common/html/knife_show.html +3 -3
- data/distro/common/html/knife_ssh.html +7 -7
- data/distro/common/html/knife_ssl_check.html +7 -7
- data/distro/common/html/knife_ssl_fetch.html +9 -9
- data/distro/common/html/knife_status.html +3 -3
- data/distro/common/html/knife_tag.html +9 -9
- data/distro/common/html/knife_upload.html +3 -3
- data/distro/common/html/knife_user.html +9 -9
- data/distro/common/html/knife_using.html +11 -11
- data/distro/common/html/knife_xargs.html +14 -5
- data/distro/common/html/search.html +2 -2
- data/distro/common/html/searchindex.js +1 -1
- data/distro/common/man/man1/chef-shell.1 +2 -2
- data/distro/common/man/man1/knife-bootstrap.1 +7 -7
- data/distro/common/man/man1/knife-client.1 +10 -10
- data/distro/common/man/man1/knife-configure.1 +5 -5
- data/distro/common/man/man1/knife-cookbook-site.1 +24 -24
- data/distro/common/man/man1/knife-cookbook.1 +12 -12
- data/distro/common/man/man1/knife-data-bag.1 +34 -10
- data/distro/common/man/man1/knife-delete.1 +5 -5
- data/distro/common/man/man1/knife-deps.1 +5 -5
- data/distro/common/man/man1/knife-diff.1 +7 -7
- data/distro/common/man/man1/knife-download.1 +5 -5
- data/distro/common/man/man1/knife-edit.1 +5 -5
- data/distro/common/man/man1/knife-environment.1 +11 -11
- data/distro/common/man/man1/knife-exec.1 +11 -11
- data/distro/common/man/man1/knife-index-rebuild.1 +1 -1
- data/distro/common/man/man1/knife-list.1 +5 -5
- data/distro/common/man/man1/knife-node.1 +16 -16
- data/distro/common/man/man1/knife-raw.1 +6 -6
- data/distro/common/man/man1/knife-recipe-list.1 +1 -1
- data/distro/common/man/man1/knife-role.1 +7 -7
- data/distro/common/man/man1/knife-search.1 +6 -6
- data/distro/common/man/man1/knife-serve.1 +6 -6
- data/distro/common/man/man1/knife-show.1 +5 -5
- data/distro/common/man/man1/knife-ssh.1 +9 -9
- data/distro/common/man/man1/knife-ssl-check.1 +7 -7
- data/distro/common/man/man1/knife-ssl-fetch.1 +9 -9
- data/distro/common/man/man1/knife-status.1 +5 -5
- data/distro/common/man/man1/knife-tag.1 +8 -8
- data/distro/common/man/man1/knife-upload.1 +5 -5
- data/distro/common/man/man1/knife-user.1 +8 -8
- data/distro/common/man/man1/knife-xargs.1 +36 -10
- data/distro/common/man/man1/knife.1 +14 -14
- data/distro/common/man/man8/chef-client.8 +3 -10
- data/distro/common/man/man8/chef-solo.8 +1 -1
- data/ext/win32-eventlog/Rakefile +50 -0
- data/ext/win32-eventlog/chef-log.man +26 -0
- data/lib/chef/application.rb +313 -241
- data/lib/chef/application/apply.rb +10 -8
- data/lib/chef/application/client.rb +58 -33
- data/lib/chef/application/solo.rb +33 -12
- data/lib/chef/chef_fs/chef_fs_data_store.rb +1 -1
- data/lib/chef/chef_fs/command_line.rb +1 -1
- data/lib/chef/chef_fs/file_system/organization_invites_entry.rb +2 -1
- data/lib/chef/chef_fs/file_system/organization_members_entry.rb +2 -1
- data/lib/chef/chef_fs/file_system/rest_list_entry.rb +2 -1
- data/lib/chef/client.rb +18 -48
- data/lib/chef/config.rb +43 -11
- data/lib/chef/cookbook/cookbook_version_loader.rb +14 -7
- data/lib/chef/cookbook/metadata.rb +81 -38
- data/lib/chef/cookbook/syntax_check.rb +18 -52
- data/lib/chef/cookbook_loader.rb +1 -1
- data/lib/chef/cookbook_version.rb +58 -39
- data/lib/chef/data_bag.rb +2 -2
- data/lib/chef/deprecation/provider/file.rb +2 -1
- data/lib/chef/dsl/data_query.rb +2 -29
- data/lib/chef/dsl/recipe.rb +8 -22
- data/lib/chef/encrypted_data_bag_item/assertions.rb +1 -1
- data/lib/chef/encrypted_data_bag_item/check_encrypted.rb +56 -0
- data/lib/chef/encrypted_data_bag_item/encrypted_data_bag_item_assertions.rb +1 -1
- data/lib/chef/event_loggers/base.rb +62 -0
- data/lib/chef/event_loggers/windows_eventlog.rb +104 -0
- data/lib/chef/exceptions.rb +18 -1
- data/lib/chef/file_cache.rb +3 -2
- data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +15 -6
- data/lib/chef/http.rb +20 -13
- data/lib/chef/http/ssl_policies.rb +2 -1
- data/lib/chef/json_compat.rb +9 -3
- data/lib/chef/knife.rb +2 -1
- data/lib/chef/knife/bootstrap.rb +12 -18
- data/lib/chef/knife/bootstrap/archlinux-gems.erb +2 -2
- data/lib/chef/knife/bootstrap/chef-aix.erb +2 -2
- data/lib/chef/knife/bootstrap/chef-full.erb +2 -2
- data/lib/chef/knife/cookbook_create.rb +1 -1
- data/lib/chef/knife/cookbook_site_share.rb +43 -8
- data/lib/chef/knife/core/bootstrap_context.rb +6 -11
- data/lib/chef/knife/core/object_loader.rb +5 -5
- data/lib/chef/knife/core/status_presenter.rb +156 -0
- data/lib/chef/knife/core/subcommand_loader.rb +6 -5
- data/lib/chef/knife/core/ui.rb +4 -4
- data/lib/chef/knife/data_bag_create.rb +7 -32
- data/lib/chef/knife/data_bag_edit.rb +24 -43
- data/lib/chef/knife/data_bag_from_file.rb +6 -31
- data/lib/chef/knife/data_bag_secret_options.rb +142 -0
- data/lib/chef/knife/data_bag_show.rb +19 -33
- data/lib/chef/knife/node_from_file.rb +9 -8
- data/lib/chef/knife/ssh.rb +0 -7
- data/lib/chef/knife/ssl_check.rb +70 -6
- data/lib/chef/knife/status.rb +11 -58
- data/lib/chef/mixin/command/unix.rb +2 -2
- data/lib/chef/mixin/convert_to_class_name.rb +54 -0
- data/lib/chef/mixin/descendants_tracker.rb +82 -0
- data/lib/chef/mixin/homebrew_user.rb +68 -0
- data/lib/chef/mixin/shell_out.rb +0 -4
- data/lib/chef/mixin/windows_architecture_helper.rb +16 -0
- data/lib/chef/mixin/windows_env_helper.rb +56 -0
- data/lib/chef/node.rb +2 -2
- data/lib/chef/node_map.rb +146 -0
- data/lib/chef/platform/provider_mapping.rb +11 -39
- data/lib/chef/platform/provider_priority_map.rb +80 -0
- data/lib/chef/platform/query_helpers.rb +5 -1
- data/lib/chef/platform/service_helpers.rb +113 -0
- data/lib/chef/provider.rb +24 -0
- data/lib/chef/provider/breakpoint.rb +2 -0
- data/lib/chef/provider/cookbook_file.rb +2 -0
- data/lib/chef/provider/cron.rb +1 -1
- data/lib/chef/provider/cron/unix.rb +13 -9
- data/lib/chef/provider/deploy.rb +3 -2
- data/lib/chef/provider/deploy/revision.rb +4 -2
- data/lib/chef/provider/deploy/timestamped.rb +2 -0
- data/lib/chef/provider/directory.rb +2 -0
- data/lib/chef/provider/dsc_script.rb +179 -0
- data/lib/chef/provider/env.rb +25 -10
- data/lib/chef/provider/env/windows.rb +9 -16
- data/lib/chef/provider/erl_call.rb +2 -0
- data/lib/chef/provider/execute.rb +5 -2
- data/lib/chef/provider/file.rb +2 -0
- data/lib/chef/provider/git.rb +51 -23
- data/lib/chef/provider/group/dscl.rb +2 -2
- data/lib/chef/provider/group/pw.rb +9 -13
- data/lib/chef/provider/http_request.rb +2 -0
- data/lib/chef/provider/link.rb +3 -0
- data/lib/chef/provider/log.rb +2 -0
- data/lib/chef/provider/lwrp_base.rb +11 -9
- data/lib/chef/provider/mount/mount.rb +1 -1
- data/lib/chef/provider/package/aix.rb +2 -0
- data/lib/chef/provider/package/apt.rb +2 -0
- data/lib/chef/provider/package/dpkg.rb +2 -0
- data/lib/chef/provider/package/easy_install.rb +2 -0
- data/lib/chef/provider/package/freebsd/pkg.rb +2 -1
- data/lib/chef/provider/package/freebsd/pkgng.rb +1 -1
- data/lib/chef/provider/package/freebsd/port.rb +1 -9
- data/lib/chef/provider/package/homebrew.rb +127 -0
- data/lib/chef/provider/package/ips.rb +2 -0
- data/lib/chef/provider/package/macports.rb +3 -0
- data/lib/chef/provider/package/pacman.rb +5 -4
- data/lib/chef/provider/package/paludis.rb +4 -2
- data/lib/chef/provider/package/portage.rb +4 -1
- data/lib/chef/provider/package/rpm.rb +2 -0
- data/lib/chef/provider/package/rubygems.rb +4 -0
- data/lib/chef/provider/package/smartos.rb +2 -0
- data/lib/chef/provider/package/solaris.rb +2 -0
- data/lib/chef/provider/package/windows.rb +5 -2
- data/lib/chef/provider/package/yum.rb +2 -0
- data/lib/chef/provider/powershell_script.rb +3 -1
- data/lib/chef/provider/remote_directory.rb +25 -10
- data/lib/chef/provider/route.rb +2 -0
- data/lib/chef/provider/ruby_block.rb +2 -0
- data/lib/chef/provider/script.rb +6 -0
- data/lib/chef/provider/service/aix.rb +128 -0
- data/lib/chef/provider/service/aixinit.rb +117 -0
- data/lib/chef/provider/service/arch.rb +6 -0
- data/lib/chef/provider/service/debian.rb +35 -29
- data/lib/chef/provider/service/freebsd.rb +7 -1
- data/lib/chef/provider/service/gentoo.rb +5 -1
- data/lib/chef/provider/service/init.rb +2 -0
- data/lib/chef/provider/service/insserv.rb +15 -8
- data/lib/chef/provider/service/invokercd.rb +6 -0
- data/lib/chef/provider/service/macosx.rb +4 -1
- data/lib/chef/provider/service/redhat.rb +9 -3
- data/lib/chef/provider/service/simple.rb +2 -0
- data/lib/chef/provider/service/solaris.rb +2 -0
- data/lib/chef/provider/service/systemd.rb +7 -0
- data/lib/chef/provider/service/upstart.rb +7 -0
- data/lib/chef/provider/service/windows.rb +5 -0
- data/lib/chef/provider/subversion.rb +2 -0
- data/lib/chef/provider/template.rb +1 -0
- data/lib/chef/provider/user/dscl.rb +3 -2
- data/lib/chef/provider/whyrun_safe_ruby_block.rb +2 -0
- data/lib/chef/provider_resolver.rb +103 -0
- data/lib/chef/providers.rb +6 -2
- data/lib/chef/recipe.rb +2 -0
- data/lib/chef/resource.rb +69 -78
- data/lib/chef/resource/apt_package.rb +3 -1
- data/lib/chef/resource/bash.rb +1 -0
- data/lib/chef/resource/bff_package.rb +0 -1
- data/lib/chef/resource/breakpoint.rb +1 -1
- data/lib/chef/resource/chef_gem.rb +1 -2
- data/lib/chef/resource/conditional.rb +26 -6
- data/lib/chef/resource/cookbook_file.rb +2 -3
- data/lib/chef/resource/csh.rb +1 -0
- data/lib/chef/resource/deploy.rb +0 -1
- data/lib/chef/resource/deploy_revision.rb +6 -1
- data/lib/chef/resource/directory.rb +1 -2
- data/lib/chef/resource/dpkg_package.rb +2 -1
- data/lib/chef/resource/dsc_script.rb +125 -0
- data/lib/chef/resource/easy_install_package.rb +2 -1
- data/lib/chef/resource/erl_call.rb +1 -0
- data/lib/chef/resource/execute.rb +26 -9
- data/lib/chef/resource/file.rb +1 -3
- data/lib/chef/resource/freebsd_package.rb +10 -23
- data/lib/chef/resource/gem_package.rb +2 -1
- data/lib/chef/resource/git.rb +2 -1
- data/lib/chef/resource/homebrew_package.rb +46 -0
- data/lib/chef/resource/http_request.rb +1 -0
- data/lib/chef/resource/ips_package.rb +3 -1
- data/lib/chef/resource/link.rb +1 -2
- data/lib/chef/resource/log.rb +4 -0
- data/lib/chef/resource/lwrp_base.rb +24 -15
- data/lib/chef/resource/macports_package.rb +3 -1
- data/lib/chef/resource/pacman_package.rb +2 -1
- data/lib/chef/resource/paludis_package.rb +3 -1
- data/lib/chef/resource/perl.rb +1 -0
- data/lib/chef/resource/powershell_script.rb +0 -2
- data/lib/chef/resource/python.rb +1 -1
- data/lib/chef/resource/remote_directory.rb +1 -2
- data/lib/chef/resource/remote_file.rb +1 -1
- data/lib/chef/resource/rpm_package.rb +2 -1
- data/lib/chef/resource/ruby.rb +1 -0
- data/lib/chef/resource/ruby_block.rb +3 -0
- data/lib/chef/resource/script.rb +2 -25
- data/lib/chef/resource/service.rb +0 -4
- data/lib/chef/resource/smartos_package.rb +3 -4
- data/lib/chef/resource/solaris_package.rb +7 -1
- data/lib/chef/resource/subversion.rb +0 -1
- data/lib/chef/resource/template.rb +2 -3
- data/lib/chef/resource/timestamped_deploy.rb +1 -2
- data/lib/chef/resource/whyrun_safe_ruby_block.rb +0 -1
- data/lib/chef/resource/windows_package.rb +3 -4
- data/lib/chef/resource/windows_script.rb +3 -0
- data/lib/chef/resource/windows_service.rb +2 -2
- data/lib/chef/resource/yum_package.rb +3 -1
- data/lib/chef/resource_collection.rb +50 -227
- data/lib/chef/resource_collection/resource_collection_serialization.rb +59 -0
- data/lib/chef/resource_collection/resource_list.rb +89 -0
- data/lib/chef/resource_collection/resource_set.rb +170 -0
- data/lib/chef/resources.rb +2 -0
- data/lib/chef/role.rb +1 -1
- data/lib/chef/run_context.rb +5 -1
- data/lib/chef/shell/ext.rb +1 -1
- data/lib/chef/util/backup.rb +3 -2
- data/lib/chef/util/dsc/configuration_generator.rb +115 -0
- data/lib/chef/util/dsc/lcm_output_parser.rb +133 -0
- data/lib/chef/util/dsc/local_configuration_manager.rb +141 -0
- data/lib/chef/util/dsc/resource_info.rb +26 -0
- data/lib/chef/util/path_helper.rb +12 -0
- data/lib/chef/util/powershell/cmdlet.rb +136 -0
- data/lib/chef/util/powershell/cmdlet_result.rb +46 -0
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api/system.rb +9 -0
- data/lib/chef/win32/version.rb +2 -0
- data/spec/.DS_Store +0 -0
- data/spec/data/.DS_Store +0 -0
- data/spec/data/bootstrap/test-hints.erb +1 -1
- data/spec/data/bootstrap/test.erb +1 -1
- data/spec/data/cb_version_cookbooks/cookbook2/files/test.txt +0 -0
- data/spec/data/cb_version_cookbooks/cookbook2/templates/test.erb +0 -0
- data/spec/data/cookbooks/ignorken/files/default/not_me.rb +2 -0
- data/spec/data/cookbooks/ignorken/templates/ubuntu-12.10/not_me.rb +2 -0
- data/spec/data/cookbooks/openldap/libraries/openldap.rb +4 -0
- data/spec/data/cookbooks/openldap/libraries/openldap/version.rb +3 -0
- data/spec/data/lwrp/.DS_Store +0 -0
- data/spec/data/lwrp/providers/.DS_Store +0 -0
- data/spec/data/lwrp/providers/buck_passer.rb +9 -2
- data/spec/data/lwrp/resources/.DS_Store +0 -0
- data/spec/data/lwrp/resources/foo.rb +3 -2
- data/spec/data/lwrp_override/.DS_Store +0 -0
- data/spec/data/lwrp_override/providers/.DS_Store +0 -0
- data/spec/data/lwrp_override/providers/buck_passer.rb +5 -10
- data/spec/data/lwrp_override/resources/.DS_Store +0 -0
- data/spec/data/lwrp_override/resources/foo.rb +4 -3
- data/spec/functional/assets/chefinittest +34 -0
- data/spec/functional/assets/testchefsubsys +11 -0
- data/spec/functional/dsl/reboot_pending_spec.rb +19 -16
- data/spec/functional/event_loggers/windows_eventlog_spec.rb +82 -0
- data/spec/functional/knife/cookbook_delete_spec.rb +3 -3
- data/spec/functional/knife/exec_spec.rb +1 -1
- data/spec/functional/resource/aix_service_spec.rb +136 -0
- data/spec/functional/resource/aixinit_service_spec.rb +211 -0
- data/spec/functional/resource/base.rb +1 -0
- data/spec/functional/resource/batch_spec.rb +4 -11
- data/spec/functional/resource/cron_spec.rb +7 -1
- data/spec/functional/resource/dsc_script_spec.rb +382 -0
- data/spec/functional/resource/env_spec.rb +54 -0
- data/spec/functional/resource/execute_spec.rb +113 -0
- data/spec/functional/resource/file_spec.rb +2 -0
- data/spec/functional/resource/group_spec.rb +7 -4
- data/spec/functional/resource/powershell_spec.rb +198 -185
- data/spec/functional/resource/rpm_spec.rb +5 -4
- data/spec/functional/resource/user/dscl_spec.rb +2 -1
- data/spec/functional/util/path_helper_spec.rb +37 -0
- data/spec/functional/util/powershell/cmdlet_spec.rb +114 -0
- data/spec/integration/client/client_spec.rb +1 -1
- data/spec/integration/client/ipv6_spec.rb +1 -1
- data/spec/integration/knife/chef_fs_data_store_spec.rb +1 -1
- data/spec/integration/knife/chef_repo_path_spec.rb +1 -1
- data/spec/integration/knife/chef_repository_file_system_spec.rb +1 -1
- data/spec/integration/knife/chefignore_spec.rb +1 -1
- data/spec/integration/knife/common_options_spec.rb +1 -1
- data/spec/integration/knife/cookbook_api_ipv6_spec.rb +2 -2
- data/spec/integration/knife/delete_spec.rb +1 -1
- data/spec/integration/knife/deps_spec.rb +1 -1
- data/spec/integration/knife/diff_spec.rb +1 -1
- data/spec/integration/knife/download_spec.rb +1 -1
- data/spec/integration/knife/list_spec.rb +1 -1
- data/spec/integration/knife/raw_spec.rb +1 -1
- data/spec/integration/knife/redirection_spec.rb +1 -1
- data/spec/integration/knife/serve_spec.rb +1 -1
- data/spec/integration/knife/show_spec.rb +1 -1
- data/spec/integration/knife/upload_spec.rb +4 -3
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
- data/spec/spec_helper.rb +15 -0
- data/spec/support/chef_helpers.rb +1 -0
- data/spec/support/lib/chef/provider/snakeoil.rb +1 -0
- data/spec/support/lib/chef/resource/zen_follower.rb +1 -7
- data/spec/support/platform_helpers.rb +28 -0
- data/spec/support/shared/functional/file_resource.rb +6 -0
- data/spec/support/shared/functional/windows_script.rb +118 -0
- data/spec/support/shared/integration/integration_helper.rb +5 -2
- data/spec/support/shared/matchers/exit_with_code.rb +28 -0
- data/spec/support/shared/matchers/match_environment_variable.rb +17 -0
- data/spec/support/shared/shared_examples.rb +14 -0
- data/spec/support/shared/unit/execute_resource.rb +0 -7
- data/spec/support/shared/unit/resource/static_provider_resolution.rb +71 -0
- data/spec/support/shared/unit/script_resource.rb +1 -1
- data/spec/support/shared/unit/windows_script_resource.rb +35 -2
- data/spec/tiny_server.rb +1 -2
- data/spec/unit/api_client_spec.rb +5 -1
- data/spec/unit/application/{apply.rb → apply_spec.rb} +13 -5
- data/spec/unit/application/client_spec.rb +106 -13
- data/spec/unit/application/solo_spec.rb +25 -1
- data/spec/unit/client_spec.rb +1 -26
- data/spec/unit/config_fetcher_spec.rb +2 -1
- data/spec/unit/config_spec.rb +91 -2
- data/spec/unit/cookbook/cookbook_version_loader_spec.rb +8 -0
- data/spec/unit/cookbook/metadata_spec.rb +43 -6
- data/spec/unit/cookbook/syntax_check_spec.rb +8 -2
- data/spec/unit/cookbook_loader_spec.rb +4 -2
- data/spec/unit/cookbook_version_spec.rb +83 -2
- data/spec/unit/data_bag_item_spec.rb +5 -1
- data/spec/unit/data_bag_spec.rb +6 -1
- data/spec/unit/dsl/data_query_spec.rb +8 -110
- data/spec/unit/encrypted_data_bag_item/check_encrypted_spec.rb +95 -0
- data/spec/unit/encrypted_data_bag_item_spec.rb +16 -23
- data/spec/unit/environment_spec.rb +6 -2
- data/spec/unit/exceptions_spec.rb +6 -0
- data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +16 -15
- data/spec/unit/json_compat_spec.rb +12 -2
- data/spec/unit/knife/bootstrap_spec.rb +16 -63
- data/spec/unit/knife/cookbook_site_share_spec.rb +59 -6
- data/spec/unit/knife/core/bootstrap_context_spec.rb +8 -37
- data/spec/unit/knife/core/subcommand_loader_spec.rb +1 -1
- data/spec/unit/knife/core/ui_spec.rb +28 -0
- data/spec/unit/knife/data_bag_create_spec.rb +63 -71
- data/spec/unit/knife/data_bag_edit_spec.rb +83 -49
- data/spec/unit/knife/data_bag_from_file_spec.rb +104 -126
- data/spec/unit/knife/data_bag_secret_options_spec.rb +165 -0
- data/spec/unit/knife/data_bag_show_spec.rb +74 -72
- data/spec/unit/knife/environment_from_file_spec.rb +3 -2
- data/spec/unit/knife/ssl_check_spec.rb +46 -1
- data/spec/unit/knife/status_spec.rb +1 -2
- data/spec/unit/knife_spec.rb +18 -1
- data/spec/unit/lwrp_spec.rb +29 -8
- data/spec/unit/mixin/homebrew_user_spec.rb +100 -0
- data/spec/unit/node_map_spec.rb +155 -0
- data/spec/unit/node_spec.rb +11 -0
- data/spec/unit/platform/query_helpers_spec.rb +23 -0
- data/spec/unit/platform_spec.rb +23 -0
- data/spec/unit/provider/breakpoint_spec.rb +9 -9
- data/spec/unit/provider/cookbook_file/content_spec.rb +3 -3
- data/spec/unit/provider/cookbook_file_spec.rb +1 -1
- data/spec/unit/provider/cron/unix_spec.rb +78 -60
- data/spec/unit/provider/cron_spec.rb +175 -175
- data/spec/unit/provider/deploy/revision_spec.rb +22 -21
- data/spec/unit/provider/deploy/timestamped_spec.rb +3 -3
- data/spec/unit/provider/deploy_spec.rb +231 -230
- data/spec/unit/provider/directory_spec.rb +55 -55
- data/spec/unit/provider/dsc_script_spec.rb +174 -0
- data/spec/unit/provider/env/windows_spec.rb +70 -34
- data/spec/unit/provider/env_spec.rb +95 -49
- data/spec/unit/provider/erl_call_spec.rb +9 -9
- data/spec/unit/provider/execute_spec.rb +43 -27
- data/spec/unit/provider/file/content_spec.rb +9 -9
- data/spec/unit/provider/file_spec.rb +1 -1
- data/spec/unit/provider/git_spec.rb +221 -159
- data/spec/unit/provider/group/dscl_spec.rb +64 -63
- data/spec/unit/provider/group/gpasswd_spec.rb +14 -14
- data/spec/unit/provider/group/groupadd_spec.rb +33 -33
- data/spec/unit/provider/group/groupmod_spec.rb +23 -23
- data/spec/unit/provider/group/pw_spec.rb +21 -21
- data/spec/unit/provider/group/usermod_spec.rb +20 -20
- data/spec/unit/provider/group/windows_spec.rb +15 -15
- data/spec/unit/provider/group_spec.rb +76 -76
- data/spec/unit/provider/http_request_spec.rb +30 -30
- data/spec/unit/provider/ifconfig/aix_spec.rb +20 -20
- data/spec/unit/provider/ifconfig/debian_spec.rb +25 -9
- data/spec/unit/provider/ifconfig/redhat_spec.rb +13 -13
- data/spec/unit/provider/ifconfig_spec.rb +43 -43
- data/spec/unit/provider/link_spec.rb +60 -60
- data/spec/unit/provider/log_spec.rb +0 -4
- data/spec/unit/provider/mdadm_spec.rb +23 -23
- data/spec/unit/provider/mount/aix_spec.rb +17 -17
- data/spec/unit/provider/mount/mount_spec.rb +115 -119
- data/spec/unit/provider/mount/solaris_spec.rb +72 -72
- data/spec/unit/provider/mount/windows_spec.rb +24 -24
- data/spec/unit/provider/ohai_spec.rb +11 -11
- data/spec/unit/provider/package/aix_spec.rb +34 -34
- data/spec/unit/provider/package/apt_spec.rb +36 -36
- data/spec/unit/provider/package/dpkg_spec.rb +27 -27
- data/spec/unit/provider/package/easy_install_spec.rb +16 -16
- data/spec/unit/provider/package/freebsd/pkg_spec.rb +53 -53
- data/spec/unit/provider/package/freebsd/pkgng_spec.rb +24 -24
- data/spec/unit/provider/package/freebsd/port_spec.rb +45 -35
- data/spec/unit/provider/package/homebrew_spec.rb +266 -0
- data/spec/unit/provider/package/ips_spec.rb +34 -34
- data/spec/unit/provider/package/macports_spec.rb +49 -49
- data/spec/unit/provider/package/pacman_spec.rb +35 -39
- data/spec/unit/provider/package/paludis_spec.rb +20 -20
- data/spec/unit/provider/package/portage_spec.rb +38 -38
- data/spec/unit/provider/package/rpm_spec.rb +29 -29
- data/spec/unit/provider/package/rubygems_spec.rb +284 -270
- data/spec/unit/provider/package/smartos_spec.rb +15 -15
- data/spec/unit/provider/package/solaris_spec.rb +35 -35
- data/spec/unit/provider/package/windows/msi_spec.rb +3 -3
- data/spec/unit/provider/package/windows_spec.rb +6 -6
- data/spec/unit/provider/package/yum_spec.rb +416 -416
- data/spec/unit/provider/package/zypper_spec.rb +47 -47
- data/spec/unit/provider/package_spec.rb +107 -107
- data/spec/unit/provider/powershell_spec.rb +1 -1
- data/spec/unit/provider/registry_key_spec.rb +61 -61
- data/spec/unit/provider/remote_directory_spec.rb +36 -36
- data/spec/unit/provider/remote_file/cache_control_data_spec.rb +24 -24
- data/spec/unit/provider/remote_file/content_spec.rb +45 -45
- data/spec/unit/provider/remote_file/fetcher_spec.rb +9 -9
- data/spec/unit/provider/remote_file/ftp_spec.rb +32 -32
- data/spec/unit/provider/remote_file/http_spec.rb +44 -44
- data/spec/unit/provider/remote_file/local_file_spec.rb +9 -9
- data/spec/unit/provider/remote_file_spec.rb +3 -3
- data/spec/unit/provider/route_spec.rb +63 -63
- data/spec/unit/provider/ruby_block_spec.rb +4 -4
- data/spec/unit/provider/script_spec.rb +12 -12
- data/spec/unit/provider/service/aix_service_spec.rb +181 -0
- data/spec/unit/provider/service/aixinit_service_spec.rb +269 -0
- data/spec/unit/provider/service/arch_service_spec.rb +48 -48
- data/spec/unit/provider/service/debian_service_spec.rb +40 -40
- data/spec/unit/provider/service/gentoo_service_spec.rb +28 -28
- data/spec/unit/provider/service/init_service_spec.rb +39 -39
- data/spec/unit/provider/service/insserv_service_spec.rb +8 -8
- data/spec/unit/provider/service/invokercd_service_spec.rb +35 -35
- data/spec/unit/provider/service/macosx_spec.rb +49 -49
- data/spec/unit/provider/service/redhat_spec.rb +27 -27
- data/spec/unit/provider/service/simple_service_spec.rb +28 -28
- data/spec/unit/provider/service/solaris_smf_service_spec.rb +43 -46
- data/spec/unit/provider/service/systemd_service_spec.rb +63 -63
- data/spec/unit/provider/service/upstart_service_spec.rb +78 -78
- data/spec/unit/provider/service/windows_spec.rb +92 -92
- data/spec/unit/provider/service_spec.rb +40 -40
- data/spec/unit/provider/subversion_spec.rb +80 -80
- data/spec/unit/provider/template/content_spec.rb +9 -9
- data/spec/unit/provider/template_spec.rb +6 -6
- data/spec/unit/provider/user/dscl_spec.rb +170 -167
- data/spec/unit/provider/user/pw_spec.rb +48 -48
- data/spec/unit/provider/user/solaris_spec.rb +8 -8
- data/spec/unit/provider/user/useradd_spec.rb +1 -1
- data/spec/unit/provider/user/windows_spec.rb +26 -26
- data/spec/unit/provider/user_spec.rb +72 -72
- data/spec/unit/provider/whyrun_safe_ruby_block_spec.rb +4 -4
- data/spec/unit/provider_resolver_spec.rb +387 -0
- data/spec/unit/recipe_spec.rb +33 -12
- data/spec/unit/resource/apt_package_spec.rb +10 -13
- data/spec/unit/resource/bash_spec.rb +4 -4
- data/spec/unit/resource/batch_spec.rb +1 -1
- data/spec/unit/resource/breakpoint_spec.rb +11 -7
- data/spec/unit/resource/chef_gem_spec.rb +8 -15
- data/spec/unit/resource/conditional_action_not_nothing_spec.rb +2 -2
- data/spec/unit/resource/conditional_spec.rb +35 -16
- data/spec/unit/resource/cookbook_file_spec.rb +13 -13
- data/spec/unit/resource/cron_spec.rb +37 -37
- data/spec/unit/resource/csh_spec.rb +4 -4
- data/spec/unit/resource/deploy_revision_spec.rb +13 -18
- data/spec/unit/resource/deploy_spec.rb +60 -55
- data/spec/unit/resource/directory_spec.rb +18 -18
- data/spec/unit/resource/dpkg_package_spec.rb +8 -14
- data/spec/unit/resource/dsc_script_spec.rb +98 -0
- data/spec/unit/resource/easy_install_package_spec.rb +9 -18
- data/spec/unit/resource/env_spec.rb +12 -12
- data/spec/unit/resource/erl_call_spec.rb +11 -11
- data/spec/unit/resource/execute_spec.rb +5 -0
- data/spec/unit/resource/file_spec.rb +29 -29
- data/spec/unit/resource/freebsd_package_spec.rb +11 -12
- data/spec/unit/resource/gem_package_spec.rb +8 -15
- data/spec/unit/resource/git_spec.rb +12 -8
- data/spec/unit/resource/group_spec.rb +27 -27
- data/spec/unit/resource/homebrew_package_spec.rb +50 -0
- data/spec/unit/resource/http_request_spec.rb +6 -6
- data/spec/unit/resource/ifconfig_spec.rb +8 -8
- data/spec/unit/resource/ips_package_spec.rb +10 -13
- data/spec/unit/resource/link_spec.rb +25 -25
- data/spec/unit/resource/log_spec.rb +9 -9
- data/spec/unit/resource/macports_package_spec.rb +8 -13
- data/spec/unit/resource/mdadm_spec.rb +18 -18
- data/spec/unit/resource/mount_spec.rb +45 -45
- data/spec/unit/resource/ohai_spec.rb +7 -7
- data/spec/unit/resource/package_spec.rb +12 -12
- data/spec/unit/resource/pacman_package_spec.rb +8 -14
- data/spec/unit/resource/perl_spec.rb +4 -4
- data/spec/unit/resource/portage_package_spec.rb +3 -3
- data/spec/unit/resource/powershell_spec.rb +7 -7
- data/spec/unit/resource/python_spec.rb +4 -4
- data/spec/unit/resource/registry_key_spec.rb +32 -32
- data/spec/unit/resource/remote_directory_spec.rb +17 -17
- data/spec/unit/resource/remote_file_spec.rb +41 -41
- data/spec/unit/resource/route_spec.rb +19 -19
- data/spec/unit/resource/rpm_package_spec.rb +9 -13
- data/spec/unit/resource/ruby_block_spec.rb +8 -8
- data/spec/unit/resource/ruby_spec.rb +4 -4
- data/spec/unit/resource/scm_spec.rb +40 -40
- data/spec/unit/resource/script_spec.rb +2 -2
- data/spec/unit/resource/service_spec.rb +37 -47
- data/spec/unit/resource/smartos_package_spec.rb +10 -15
- data/spec/unit/resource/solaris_package_spec.rb +13 -28
- data/spec/unit/resource/subversion_spec.rb +16 -12
- data/spec/unit/resource/template_spec.rb +35 -35
- data/spec/unit/resource/timestamped_deploy_spec.rb +30 -4
- data/spec/unit/resource/user_spec.rb +23 -23
- data/spec/unit/resource/windows_package_spec.rb +17 -10
- data/spec/unit/resource/windows_service_spec.rb +9 -6
- data/spec/unit/resource/yum_package_spec.rb +16 -21
- data/spec/unit/resource_collection/resource_list_spec.rb +137 -0
- data/spec/unit/resource_collection/resource_set_spec.rb +199 -0
- data/spec/unit/resource_collection_spec.rb +73 -92
- data/spec/unit/resource_definition_spec.rb +38 -40
- data/spec/unit/resource_reporter_spec.rb +3 -3
- data/spec/unit/resource_spec.rb +68 -33
- data/spec/unit/rest_spec.rb +83 -76
- data/spec/unit/role_spec.rb +5 -0
- data/spec/unit/run_list_spec.rb +5 -1
- data/spec/unit/runner_spec.rb +245 -238
- data/spec/unit/shell/shell_ext_spec.rb +1 -1
- data/spec/unit/user_spec.rb +5 -1
- data/spec/unit/util/dsc/configuration_generator_spec.rb +171 -0
- data/spec/unit/util/dsc/lcm_output_parser_spec.rb +169 -0
- data/spec/unit/util/dsc/local_configuration_manager_spec.rb +139 -0
- data/spec/unit/util/path_helper_spec.rb +23 -1
- data/spec/unit/util/powershell/cmdlet_spec.rb +106 -0
- data/spec/unit/workstation_config_loader_spec.rb +1 -1
- metadata +303 -196
- checksums.yaml +0 -7
- data/distro/README +0 -2
- data/distro/arch/etc/conf.d/chef-client.conf +0 -5
- data/distro/arch/etc/conf.d/chef-expander.conf +0 -8
- data/distro/arch/etc/conf.d/chef-server-webui.conf +0 -10
- data/distro/arch/etc/conf.d/chef-server.conf +0 -10
- data/distro/arch/etc/conf.d/chef-solr.conf +0 -8
- data/distro/arch/etc/rc.d/chef-client +0 -90
- data/distro/arch/etc/rc.d/chef-expander +0 -78
- data/distro/arch/etc/rc.d/chef-server +0 -78
- data/distro/arch/etc/rc.d/chef-server-webui +0 -78
- data/distro/arch/etc/rc.d/chef-solr +0 -78
- data/distro/debian/etc/default/chef-client +0 -4
- data/distro/debian/etc/default/chef-expander +0 -8
- data/distro/debian/etc/default/chef-server +0 -9
- data/distro/debian/etc/default/chef-server-webui +0 -9
- data/distro/debian/etc/default/chef-solr +0 -8
- data/distro/debian/etc/init.d/chef-client +0 -212
- data/distro/debian/etc/init.d/chef-expander +0 -176
- data/distro/debian/etc/init.d/chef-server +0 -122
- data/distro/debian/etc/init.d/chef-server-webui +0 -123
- data/distro/debian/etc/init.d/chef-solr +0 -176
- data/distro/debian/etc/init/chef-client.conf +0 -17
- data/distro/debian/etc/init/chef-expander.conf +0 -17
- data/distro/debian/etc/init/chef-server-webui.conf +0 -17
- data/distro/debian/etc/init/chef-server.conf +0 -17
- data/distro/debian/etc/init/chef-solr.conf +0 -17
- data/distro/redhat/etc/init.d/chef-client +0 -121
- data/distro/redhat/etc/init.d/chef-expander +0 -104
- data/distro/redhat/etc/init.d/chef-server +0 -112
- data/distro/redhat/etc/init.d/chef-server-webui +0 -112
- data/distro/redhat/etc/init.d/chef-solr +0 -104
- data/distro/redhat/etc/logrotate.d/chef-client +0 -8
- data/distro/redhat/etc/logrotate.d/chef-expander +0 -8
- data/distro/redhat/etc/logrotate.d/chef-server +0 -8
- data/distro/redhat/etc/logrotate.d/chef-server-webui +0 -8
- data/distro/redhat/etc/logrotate.d/chef-solr +0 -8
- data/distro/redhat/etc/sysconfig/chef-client +0 -15
- data/distro/redhat/etc/sysconfig/chef-expander +0 -7
- data/distro/redhat/etc/sysconfig/chef-server +0 -14
- data/distro/redhat/etc/sysconfig/chef-server-webui +0 -14
- data/distro/redhat/etc/sysconfig/chef-solr +0 -8
- data/distro/windows/service_manager.rb +0 -20
- data/lib/chef/resource_platform_map.rb +0 -151
- data/spec/support/shared/matchers.rb +0 -17
- data/spec/unit/resource_platform_map_spec.rb +0 -164
@@ -14,6 +14,7 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
CHEF_SPEC_DATA = File.expand_path(File.dirname(__FILE__) + "/../data/")
|
17
|
+
CHEF_SPEC_ASSETS = File.expand_path(File.dirname(__FILE__) + "/../functional/assets/")
|
17
18
|
CHEF_SPEC_BACKUP_PATH = File.join(Dir.tmpdir, 'test-backup-path')
|
18
19
|
|
19
20
|
Chef::Config[:log_level] = :fatal
|
@@ -21,20 +21,14 @@ require 'chef/json_compat'
|
|
21
21
|
class Chef
|
22
22
|
class Resource
|
23
23
|
class ZenFollower < Chef::Resource
|
24
|
-
attr_accessor :created_as_type
|
25
24
|
|
26
|
-
provides :follower, :
|
25
|
+
provides :follower, platform: "zen"
|
27
26
|
|
28
27
|
def initialize(name, run_context=nil)
|
29
28
|
@resource_name = :zen_follower
|
30
|
-
@created_as_type = "zen_follower"
|
31
29
|
super
|
32
30
|
end
|
33
31
|
|
34
|
-
def to_s
|
35
|
-
"#{created_as_type}[#{name}]"
|
36
|
-
end
|
37
|
-
|
38
32
|
def master(arg=nil)
|
39
33
|
if !arg.nil?
|
40
34
|
@master = arg
|
@@ -52,6 +52,30 @@ def windows_win2k3?
|
|
52
52
|
(host['version'] && host['version'].start_with?("5.2"))
|
53
53
|
end
|
54
54
|
|
55
|
+
def windows_2008r2_or_later?
|
56
|
+
return false unless windows?
|
57
|
+
wmi = WmiLite::Wmi.new
|
58
|
+
host = wmi.first_of('Win32_OperatingSystem')
|
59
|
+
version = host['version']
|
60
|
+
return false unless version
|
61
|
+
components = version.split('.').map do | component |
|
62
|
+
component.to_i
|
63
|
+
end
|
64
|
+
components.length >=2 && components[0] >= 6 && components[1] >= 1
|
65
|
+
end
|
66
|
+
|
67
|
+
def windows_powershell_dsc?
|
68
|
+
return false unless windows?
|
69
|
+
supports_dsc = false
|
70
|
+
begin
|
71
|
+
wmi = WmiLite::Wmi.new('root/microsoft/windows/desiredstateconfiguration')
|
72
|
+
lcm = wmi.query("SELECT * FROM meta_class WHERE __this ISA 'MSFT_DSCLocalConfigurationManager'")
|
73
|
+
supports_dsc = !! lcm
|
74
|
+
rescue WmiLite::WmiException
|
75
|
+
end
|
76
|
+
supports_dsc
|
77
|
+
end
|
78
|
+
|
55
79
|
def mac_osx_106?
|
56
80
|
if File.exists? "/usr/bin/sw_vers"
|
57
81
|
result = shell_out("/usr/bin/sw_vers")
|
@@ -141,3 +165,7 @@ end
|
|
141
165
|
def openssl_lt_101?
|
142
166
|
!openssl_gte_101?
|
143
167
|
end
|
168
|
+
|
169
|
+
def aes_256_gcm?
|
170
|
+
OpenSSL::Cipher.ciphers.include?("aes-256-gcm")
|
171
|
+
end
|
@@ -284,6 +284,7 @@ shared_examples_for "a file resource" do
|
|
284
284
|
|
285
285
|
before do
|
286
286
|
Chef::Config[:why_run] = true
|
287
|
+
Chef::Config[:ssl_verify_mode] = :verify_none
|
287
288
|
end
|
288
289
|
|
289
290
|
after do
|
@@ -333,6 +334,10 @@ shared_examples_for "file resource not pointing to a real file" do
|
|
333
334
|
!symlink?(file_path) && File.file?(file_path)
|
334
335
|
end
|
335
336
|
|
337
|
+
before do
|
338
|
+
Chef::Config[:ssl_verify_mode] = :verify_none
|
339
|
+
end
|
340
|
+
|
336
341
|
describe "when force_unlink is set to true" do
|
337
342
|
it ":create unlinks the target" do
|
338
343
|
real_file?(path).should be_false
|
@@ -363,6 +368,7 @@ shared_examples_for "a configured file resource" do
|
|
363
368
|
|
364
369
|
before do
|
365
370
|
Chef::Log.level = :info
|
371
|
+
Chef::Config[:ssl_verify_mode] = :verify_none
|
366
372
|
end
|
367
373
|
|
368
374
|
# note the stripping of the drive letter from the tmpdir on windows
|
@@ -44,4 +44,122 @@ shared_context Chef::Resource::WindowsScript do
|
|
44
44
|
after(:each) do
|
45
45
|
File.delete(script_output_path) if File.exists?(script_output_path)
|
46
46
|
end
|
47
|
+
|
48
|
+
let!(:resource) do
|
49
|
+
Chef::Resource::WindowsScript::Batch.new("Batch resource functional test", @run_context)
|
50
|
+
end
|
51
|
+
|
52
|
+
shared_examples_for "a script resource with architecture attribute" do
|
53
|
+
context "with the given architecture attribute value" do
|
54
|
+
let(:resource_architecture) { architecture }
|
55
|
+
let(:expected_architecture) do
|
56
|
+
if architecture
|
57
|
+
expected_architecture = architecture
|
58
|
+
else
|
59
|
+
expected_architecture = :i386
|
60
|
+
end
|
61
|
+
end
|
62
|
+
let(:expected_architecture_output) do
|
63
|
+
expected_architecture == :i386 ? 'X86' : 'AMD64'
|
64
|
+
end
|
65
|
+
let(:guard_script_suffix) do
|
66
|
+
"guard"
|
67
|
+
end
|
68
|
+
let(:guard_script_output_path) do
|
69
|
+
"#{script_output_path}#{guard_script_suffix}"
|
70
|
+
end
|
71
|
+
let(:resource_command) do
|
72
|
+
"#{architecture_command} #{output_command} #{script_output_path}"
|
73
|
+
end
|
74
|
+
let(:resource_guard_command) do
|
75
|
+
"#{architecture_command} #{output_command} #{guard_script_output_path}"
|
76
|
+
end
|
77
|
+
|
78
|
+
before(:each) do
|
79
|
+
resource.code resource_command
|
80
|
+
(resource.architecture architecture) if architecture
|
81
|
+
resource.returns(0)
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should create a process with the expected architecture" do
|
85
|
+
resource.run_action(:run)
|
86
|
+
get_process_architecture.should == expected_architecture_output.downcase
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should execute guards with the same architecture as the resource" do
|
90
|
+
resource.only_if resource_guard_command
|
91
|
+
resource.run_action(:run)
|
92
|
+
get_process_architecture.should == expected_architecture_output.downcase
|
93
|
+
get_guard_process_architecture.should == expected_architecture_output.downcase
|
94
|
+
get_guard_process_architecture.should == get_process_architecture
|
95
|
+
end
|
96
|
+
|
97
|
+
let (:architecture) { :x86_64 }
|
98
|
+
it "should execute a 64-bit guard if the guard's architecture is specified as 64-bit", :windows64_only do
|
99
|
+
resource.only_if resource_guard_command, :architecture => :x86_64
|
100
|
+
resource.run_action(:run)
|
101
|
+
get_guard_process_architecture.should == 'amd64'
|
102
|
+
end
|
103
|
+
|
104
|
+
let (:architecture) { :i386 }
|
105
|
+
it "should execute a 32-bit guard if the guard's architecture is specified as 32-bit" do
|
106
|
+
resource.only_if resource_guard_command, :architecture => :i386
|
107
|
+
resource.run_action(:run)
|
108
|
+
get_guard_process_architecture.should == 'x86'
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
shared_examples_for "a Windows script running on Windows" do
|
114
|
+
|
115
|
+
describe "when the run action is invoked on Windows" do
|
116
|
+
it "executes the script code" do
|
117
|
+
resource.code("@whoami > #{script_output_path}")
|
118
|
+
resource.returns(0)
|
119
|
+
resource.run_action(:run)
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
context "when evaluating guards" do
|
124
|
+
it "has a guard_interpreter attribute set to the short name of the resource" do
|
125
|
+
resource.guard_interpreter.should == resource.resource_name
|
126
|
+
resource.not_if "findstr.exe /thiscommandhasnonzeroexitstatus"
|
127
|
+
expect(Chef::Resource).to receive(:resource_for_node).and_call_original
|
128
|
+
expect(resource.class).to receive(:new).and_call_original
|
129
|
+
resource.should_skip?(:run).should be_false
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
context "when the architecture attribute is not set" do
|
134
|
+
let(:architecture) { nil }
|
135
|
+
it_behaves_like "a script resource with architecture attribute"
|
136
|
+
end
|
137
|
+
|
138
|
+
context "when the architecture attribute is :i386" do
|
139
|
+
let(:architecture) { :i386 }
|
140
|
+
it_behaves_like "a script resource with architecture attribute"
|
141
|
+
end
|
142
|
+
|
143
|
+
context "when the architecture attribute is :x86_64" do
|
144
|
+
let(:architecture) { :x86_64 }
|
145
|
+
it_behaves_like "a script resource with architecture attribute"
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
def get_windows_script_output(suffix = '')
|
150
|
+
File.read("#{script_output_path}#{suffix}")
|
151
|
+
end
|
152
|
+
|
153
|
+
def source_contains_case_insensitive_content?( source, content )
|
154
|
+
source.downcase.include?(content.downcase)
|
155
|
+
end
|
156
|
+
|
157
|
+
def get_guard_process_architecture
|
158
|
+
get_process_architecture(guard_script_suffix)
|
159
|
+
end
|
160
|
+
|
161
|
+
def get_process_architecture(suffix = '')
|
162
|
+
get_windows_script_output(suffix).strip.downcase
|
163
|
+
end
|
164
|
+
|
47
165
|
end
|
@@ -72,7 +72,7 @@ module IntegrationSupport
|
|
72
72
|
File.open(filename, 'w') do |file|
|
73
73
|
raw = case contents
|
74
74
|
when Hash, Array
|
75
|
-
|
75
|
+
Chef::JSONCompat.to_json_pretty(contents)
|
76
76
|
else
|
77
77
|
contents
|
78
78
|
end
|
@@ -118,7 +118,10 @@ module IntegrationSupport
|
|
118
118
|
Chef::Config.delete("#{object_name}_path".to_sym)
|
119
119
|
end
|
120
120
|
Chef::Config.delete(:chef_repo_path)
|
121
|
-
|
121
|
+
# TODO: "force" actually means "silence all exceptions". this
|
122
|
+
# silences a weird permissions error on Windows that we should track
|
123
|
+
# down, but for now there's no reason for it to blow up our CI.
|
124
|
+
FileUtils.remove_entry_secure(@repository_dir, force=Chef::Platform.windows?)
|
122
125
|
ensure
|
123
126
|
@repository_dir = nil
|
124
127
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'rspec/expectations'
|
2
|
+
|
3
|
+
# Lifted from http://stackoverflow.com/questions/1480537/how-can-i-validate-exits-and-aborts-in-rspec
|
4
|
+
RSpec::Matchers.define :exit_with_code do |exp_code|
|
5
|
+
actual = nil
|
6
|
+
match do |block|
|
7
|
+
begin
|
8
|
+
block.call
|
9
|
+
rescue SystemExit => e
|
10
|
+
actual = e.status
|
11
|
+
end
|
12
|
+
actual and actual == exp_code
|
13
|
+
end
|
14
|
+
|
15
|
+
failure_message_for_should do |block|
|
16
|
+
"expected block to call exit(#{exp_code}) but exit" +
|
17
|
+
(actual.nil? ? " not called" : "(#{actual}) was called")
|
18
|
+
end
|
19
|
+
|
20
|
+
failure_message_for_should_not do |block|
|
21
|
+
"expected block not to call exit(#{exp_code})"
|
22
|
+
end
|
23
|
+
|
24
|
+
description do
|
25
|
+
"expect block to call exit(#{exp_code})"
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
|
2
|
+
require 'rspec/expectations'
|
3
|
+
require 'spec/support/platform_helpers'
|
4
|
+
|
5
|
+
RSpec::Matchers.define :match_environment_variable do |varname|
|
6
|
+
match do |actual|
|
7
|
+
expected = if windows? && ENV[varname].nil?
|
8
|
+
# On Windows, if an environment variable is not set, the command
|
9
|
+
# `echo %VARNAME%` outputs %VARNAME%
|
10
|
+
"%#{varname}%"
|
11
|
+
else
|
12
|
+
ENV[varname].to_s
|
13
|
+
end
|
14
|
+
|
15
|
+
actual == expected
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# For storing any examples shared between multiple tests
|
2
|
+
|
3
|
+
# Any object which defines a .to_json should import this test
|
4
|
+
shared_examples "to_json equalivent to Chef::JSONCompat.to_json" do
|
5
|
+
|
6
|
+
let(:jsonable) {
|
7
|
+
raise "You must define the subject when including this test"
|
8
|
+
}
|
9
|
+
|
10
|
+
it "should allow consumers to call #to_json or Chef::JSONCompat.to_json" do
|
11
|
+
expect(jsonable.to_json).to eq(Chef::JSONCompat.to_json(jsonable))
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
@@ -76,11 +76,6 @@ shared_examples_for "an execute resource" do
|
|
76
76
|
@resource.group.should eql(1)
|
77
77
|
end
|
78
78
|
|
79
|
-
it "should accept an array for the execution path" do
|
80
|
-
@resource.path ["woot"]
|
81
|
-
@resource.path.should eql(["woot"])
|
82
|
-
end
|
83
|
-
|
84
79
|
it "should accept an integer for the return code" do
|
85
80
|
@resource.returns 1
|
86
81
|
@resource.returns.should eql(1)
|
@@ -112,7 +107,6 @@ shared_examples_for "an execute resource" do
|
|
112
107
|
@resource.cwd("/tmp/")
|
113
108
|
@resource.environment({ :one => :two })
|
114
109
|
@resource.group("legos")
|
115
|
-
@resource.path(["/var/local/"])
|
116
110
|
@resource.returns(1)
|
117
111
|
@resource.user("root")
|
118
112
|
end
|
@@ -122,4 +116,3 @@ shared_examples_for "an execute resource" do
|
|
122
116
|
end
|
123
117
|
end
|
124
118
|
end
|
125
|
-
|
@@ -0,0 +1,71 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Lamont Granquist (<lamont@chef.io>)
|
3
|
+
# Copyright:: Copyright (c) 2014 Chef Software, Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
#
|
22
|
+
# This is for typical "static" provider resolution which maps resources onto
|
23
|
+
# providers based only on the node data. Its not really 'static' because it
|
24
|
+
# all goes through the Chef::ProviderResolver, but the effective result is
|
25
|
+
# a static mapping for the node (unlike the service resource which is
|
26
|
+
# complicated).
|
27
|
+
#
|
28
|
+
def static_provider_resolution(opts={})
|
29
|
+
action = opts[:action]
|
30
|
+
provider_class = opts[:provider]
|
31
|
+
resource_class = opts[:resource]
|
32
|
+
name = opts[:name]
|
33
|
+
os = opts[:os]
|
34
|
+
platform_family = opts[:platform_family]
|
35
|
+
platform_version = opts[:platform_version]
|
36
|
+
|
37
|
+
describe resource_class, "static provider initialization" do
|
38
|
+
let(:node) {
|
39
|
+
node = Chef::Node.new
|
40
|
+
node.automatic_attrs[:os] = os
|
41
|
+
node.automatic_attrs[:platform_family] = platform_family
|
42
|
+
node.automatic_attrs[:platform_version] = platform_version
|
43
|
+
node
|
44
|
+
}
|
45
|
+
let(:events) { Chef::EventDispatch::Dispatcher.new }
|
46
|
+
let(:provider_resolver) { Chef::ProviderResolver.new(node) }
|
47
|
+
let(:run_context) {
|
48
|
+
run_context = Chef::RunContext.new(node, {}, events)
|
49
|
+
run_context.provider_resolver = provider_resolver
|
50
|
+
run_context
|
51
|
+
}
|
52
|
+
let(:resource) { resource_class.new("foo", run_context) }
|
53
|
+
|
54
|
+
it "should return a #{resource_class}" do
|
55
|
+
expect(resource).to be_a_kind_of(resource_class)
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should set the resource_name to #{name}" do
|
59
|
+
expect(resource.resource_name).to eql(name)
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should leave the provider nil" do
|
63
|
+
expect(resource.provider).to eql(nil)
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should resolve to a #{provider_class}" do
|
67
|
+
expect(resource.provider_for_action(action)).to be_a(provider_class)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
@@ -72,8 +72,8 @@ shared_examples_for "a script resource" do
|
|
72
72
|
|
73
73
|
it "when guard_interpreter is set to the default value, the guard command string should be evaluated by command execution and not through a resource" do
|
74
74
|
Chef::Resource::Conditional.any_instance.should_not_receive(:evaluate_block)
|
75
|
-
Chef::Resource::Conditional.any_instance.should_receive(:evaluate_command).and_return(true)
|
76
75
|
Chef::GuardInterpreter::ResourceGuardInterpreter.any_instance.should_not_receive(:evaluate_action)
|
76
|
+
Chef::GuardInterpreter::DefaultGuardInterpreter.any_instance.should_receive(:evaluate).and_return(true)
|
77
77
|
resource.only_if 'echo hi'
|
78
78
|
resource.should_skip?(:run).should == nil
|
79
79
|
end
|
@@ -39,8 +39,41 @@ shared_examples_for "a Windows script resource" do
|
|
39
39
|
@resource.should be_a_kind_of(Chef::Resource::WindowsScript)
|
40
40
|
end
|
41
41
|
|
42
|
-
context "
|
43
|
-
|
42
|
+
context "when evaluating guards" do
|
43
|
+
it "should have a default_guard_interpreter attribute that is the same as the resource" do
|
44
|
+
@resource.default_guard_interpreter.should == @resource.resource_name
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should default to using guard_interpreter attribute that is the same as the resource" do
|
48
|
+
@resource.guard_interpreter.should == @resource.resource_name
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should use a resource to evaluate the guard when guard_interpreter is not specified" do
|
52
|
+
Chef::GuardInterpreter::ResourceGuardInterpreter.any_instance.should_receive(:evaluate_action).and_return(true)
|
53
|
+
Chef::GuardInterpreter::DefaultGuardInterpreter.any_instance.should_not_receive(:evaluate)
|
54
|
+
@resource.only_if 'echo hi'
|
55
|
+
@resource.should_skip?(:run).should == nil
|
56
|
+
end
|
57
|
+
|
58
|
+
describe "when the guard is given a ruby block" do
|
59
|
+
it "should evaluate the guard if the guard_interpreter is set to its default value" do
|
60
|
+
@resource.only_if { true }
|
61
|
+
@resource.should_skip?(:run).should == nil
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should raise an exception if the guard_interpreter is overridden from its default value" do
|
65
|
+
@resource.guard_interpreter :bash
|
66
|
+
@resource.only_if { true }
|
67
|
+
expect { @resource.should_skip?(:run) }.to raise_error
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
context "script with a default guard interpreter" do
|
73
|
+
let(:script_resource) do
|
74
|
+
resource_instance.guard_interpreter :default
|
75
|
+
resource_instance
|
76
|
+
end
|
44
77
|
it_should_behave_like "a script resource"
|
45
78
|
end
|
46
79
|
|