chef 11.4.4 → 11.6.0.hotfix.1
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/README.md +1 -1
- data/Rakefile +18 -1
- data/bin/chef-service-manager +37 -0
- data/distro/common/html/chef-client.8.html +4 -4
- data/distro/common/html/chef-expander.8.html +4 -4
- data/distro/common/html/chef-expanderctl.8.html +4 -4
- data/distro/common/html/chef-server-webui.8.html +4 -4
- data/distro/common/html/chef-server.8.html +4 -4
- data/distro/common/html/chef-shell.1.html +4 -4
- data/distro/common/html/chef-solo.8.html +12 -18
- data/distro/common/html/chef-solr.8.html +4 -4
- data/distro/common/html/knife-bootstrap.1.html +4 -4
- data/distro/common/html/knife-client.1.html +4 -4
- data/distro/common/html/knife-configure.1.html +4 -4
- data/distro/common/html/knife-cookbook-site.1.html +4 -4
- data/distro/common/html/knife-cookbook.1.html +7 -10
- data/distro/common/html/knife-data-bag.1.html +7 -10
- data/distro/common/html/knife-environment.1.html +6 -8
- data/distro/common/html/knife-exec.1.html +4 -4
- data/distro/common/html/knife-index.1.html +4 -4
- data/distro/common/html/knife-node.1.html +4 -4
- data/distro/common/html/knife-role.1.html +4 -4
- data/distro/common/html/knife-search.1.html +4 -4
- data/distro/common/html/knife-ssh.1.html +4 -4
- data/distro/common/html/knife-status.1.html +4 -4
- data/distro/common/html/knife-tag.1.html +4 -4
- data/distro/common/html/knife.1.html +4 -4
- data/distro/common/man/man1/chef-shell.1 +1 -1
- data/distro/common/man/man1/knife-bootstrap.1 +1 -1
- data/distro/common/man/man1/knife-client.1 +1 -1
- data/distro/common/man/man1/knife-configure.1 +1 -1
- data/distro/common/man/man1/knife-cookbook-site.1 +1 -1
- data/distro/common/man/man1/knife-cookbook.1 +2 -15
- data/distro/common/man/man1/knife-data-bag.1 +2 -15
- data/distro/common/man/man1/knife-environment.1 +2 -12
- data/distro/common/man/man1/knife-exec.1 +1 -1
- data/distro/common/man/man1/knife-index.1 +1 -1
- data/distro/common/man/man1/knife-node.1 +1 -1
- data/distro/common/man/man1/knife-role.1 +1 -1
- data/distro/common/man/man1/knife-search.1 +1 -1
- data/distro/common/man/man1/knife-ssh.1 +1 -1
- data/distro/common/man/man1/knife-status.1 +1 -1
- data/distro/common/man/man1/knife-tag.1 +1 -1
- data/distro/common/man/man1/knife.1 +1 -1
- data/distro/common/man/man8/chef-client.8 +1 -1
- data/distro/common/man/man8/chef-expander.8 +1 -1
- data/distro/common/man/man8/chef-expanderctl.8 +1 -1
- data/distro/common/man/man8/chef-server-webui.8 +1 -1
- data/distro/common/man/man8/chef-server.8 +1 -1
- data/distro/common/man/man8/chef-solo.8 +4 -36
- data/distro/common/man/man8/chef-solr.8 +1 -1
- data/distro/debian/etc/init.d/chef-client +4 -2
- data/distro/windows/service_manager.rb +2 -146
- data/lib/chef.rb +1 -1
- data/lib/chef/application.rb +5 -12
- data/lib/chef/application/apply.rb +2 -0
- data/lib/chef/application/client.rb +12 -12
- data/lib/chef/application/knife.rb +2 -2
- data/lib/chef/application/solo.rb +4 -5
- data/lib/chef/application/windows_service.rb +113 -56
- data/lib/chef/application/windows_service_manager.rb +179 -0
- data/lib/chef/chef_fs.rb +2 -4
- data/lib/chef/chef_fs/chef_fs_data_store.rb +371 -0
- data/lib/chef/chef_fs/command_line.rb +145 -93
- data/lib/chef/chef_fs/config.rb +205 -0
- data/lib/chef/chef_fs/data_handler/acl_data_handler.rb +26 -0
- data/lib/chef/chef_fs/data_handler/client_data_handler.rb +38 -0
- data/lib/chef/chef_fs/data_handler/container_data_handler.rb +29 -0
- data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +38 -0
- data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +56 -0
- data/lib/chef/chef_fs/data_handler/data_handler_base.rb +128 -0
- data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +40 -0
- data/lib/chef/chef_fs/data_handler/group_data_handler.rb +51 -0
- data/lib/chef/chef_fs/data_handler/node_data_handler.rb +36 -0
- data/lib/chef/chef_fs/data_handler/role_data_handler.rb +40 -0
- data/lib/chef/chef_fs/data_handler/user_data_handler.rb +27 -0
- data/lib/chef/chef_fs/file_system.rb +195 -127
- data/lib/chef/chef_fs/file_system/acl_dir.rb +64 -0
- data/lib/chef/chef_fs/file_system/acl_entry.rb +58 -0
- data/lib/chef/chef_fs/file_system/acls_dir.rb +68 -0
- data/lib/chef/chef_fs/file_system/already_exists_error.rb +31 -0
- data/lib/chef/chef_fs/file_system/base_fs_object.rb +98 -39
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_dir.rb +85 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_entry.rb +71 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbooks_dir.rb +55 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_data_bags_dir.rb +36 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_entry.rb +14 -63
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +93 -3
- data/lib/chef/chef_fs/file_system/chef_server_root_dir.rb +35 -9
- data/lib/chef/chef_fs/file_system/cookbook_dir.rb +67 -32
- data/lib/chef/chef_fs/file_system/cookbook_file.rb +13 -6
- data/lib/chef/chef_fs/file_system/cookbook_frozen_error.rb +31 -0
- data/lib/chef/chef_fs/file_system/cookbooks_acl_dir.rb +41 -0
- data/lib/chef/chef_fs/file_system/cookbooks_dir.rb +102 -21
- data/lib/chef/chef_fs/file_system/data_bag_dir.rb +12 -21
- data/lib/chef/chef_fs/file_system/data_bags_dir.rb +14 -8
- data/lib/chef/chef_fs/file_system/default_environment_cannot_be_modified_error.rb +36 -0
- data/lib/chef/chef_fs/file_system/environments_dir.rb +60 -0
- data/lib/chef/chef_fs/file_system/file_system_entry.rb +8 -8
- data/lib/chef/chef_fs/file_system/file_system_error.rb +3 -1
- data/lib/chef/chef_fs/file_system/memory_dir.rb +52 -0
- data/lib/chef/chef_fs/file_system/memory_file.rb +17 -0
- data/lib/chef/chef_fs/file_system/memory_root.rb +21 -0
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +48 -0
- data/lib/chef/chef_fs/file_system/must_delete_recursively_error.rb +2 -2
- data/lib/chef/chef_fs/file_system/nodes_dir.rb +17 -9
- data/lib/chef/chef_fs/file_system/nonexistent_fs_object.rb +0 -4
- data/lib/chef/chef_fs/file_system/not_found_error.rb +2 -2
- data/lib/chef/chef_fs/file_system/operation_failed_error.rb +34 -0
- data/lib/chef/chef_fs/file_system/operation_not_allowed_error.rb +48 -0
- data/lib/chef/chef_fs/file_system/rest_list_dir.rb +42 -13
- data/lib/chef/chef_fs/file_system/rest_list_entry.rb +81 -27
- data/lib/chef/chef_fs/knife.rb +68 -29
- data/lib/chef/chef_fs/parallelizer.rb +129 -0
- data/lib/chef/chef_fs/path_utils.rb +29 -3
- data/lib/chef/chef_fs/raw_request.rb +79 -0
- data/lib/chef/client.rb +46 -20
- data/lib/chef/config.rb +59 -61
- data/lib/chef/cookbook/chefignore.rb +2 -1
- data/lib/chef/cookbook/synchronizer.rb +8 -6
- data/lib/chef/cookbook/syntax_check.rb +17 -2
- data/lib/chef/cookbook_uploader.rb +10 -1
- data/lib/chef/cookbook_version.rb +0 -109
- data/lib/chef/data_bag.rb +15 -6
- data/lib/chef/deprecation/mixin/template.rb +49 -0
- data/lib/chef/deprecation/provider/cookbook_file.rb +55 -0
- data/lib/chef/deprecation/provider/file.rb +197 -0
- data/lib/chef/deprecation/provider/remote_file.rb +86 -0
- data/lib/chef/deprecation/provider/template.rb +63 -0
- data/lib/chef/deprecation/warnings.rb +38 -0
- data/lib/chef/encrypted_data_bag_item.rb +153 -61
- data/lib/chef/environment.rb +34 -3
- data/lib/chef/event_dispatch/base.rb +3 -0
- data/lib/chef/exceptions.rb +27 -2
- data/lib/chef/file_access_control/unix.rb +64 -7
- data/lib/chef/file_access_control/windows.rb +22 -11
- data/lib/chef/file_content_management/content_base.rb +56 -0
- data/lib/chef/file_content_management/deploy.rb +38 -0
- data/lib/chef/file_content_management/deploy/cp.rb +48 -0
- data/lib/chef/file_content_management/deploy/mv_unix.rb +77 -0
- data/lib/chef/file_content_management/deploy/mv_windows.rb +95 -0
- data/lib/chef/file_content_management/tempfile.rb +61 -0
- data/lib/chef/formatters/doc.rb +1 -1
- data/lib/chef/formatters/error_descriptor.rb +5 -4
- data/lib/chef/formatters/error_inspectors/cookbook_resolve_error_inspector.rb +23 -3
- data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +4 -0
- data/lib/chef/json_compat.rb +3 -0
- data/lib/chef/knife.rb +12 -3
- data/lib/chef/knife/bootstrap.rb +46 -2
- data/lib/chef/knife/bootstrap/archlinux-gems.erb +3 -3
- data/lib/chef/knife/bootstrap/centos5-gems.erb +3 -3
- data/lib/chef/knife/bootstrap/chef-full.erb +4 -4
- data/lib/chef/knife/bootstrap/fedora13-gems.erb +3 -3
- data/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb +3 -3
- data/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb +3 -3
- data/lib/chef/knife/bootstrap/ubuntu12.04-gems.erb +3 -3
- data/lib/chef/knife/client_show.rb +2 -5
- data/lib/chef/knife/configure.rb +3 -3
- data/lib/chef/knife/cookbook_create.rb +6 -5
- data/lib/chef/knife/cookbook_download.rb +13 -5
- data/lib/chef/knife/cookbook_site_share.rb +1 -0
- data/lib/chef/knife/cookbook_test.rb +1 -0
- data/lib/chef/knife/cookbook_upload.rb +4 -9
- data/lib/chef/knife/core/bootstrap_context.rb +10 -4
- data/lib/chef/knife/core/generic_presenter.rb +16 -0
- data/lib/chef/knife/core/node_editor.rb +1 -1
- data/lib/chef/knife/core/subcommand_loader.rb +43 -12
- data/lib/chef/knife/core/ui.rb +19 -4
- data/lib/chef/knife/delete.rb +76 -9
- data/lib/chef/knife/deps.rb +139 -0
- data/lib/chef/knife/diff.rb +22 -5
- data/lib/chef/knife/download.rb +16 -3
- data/lib/chef/knife/edit.rb +76 -0
- data/lib/chef/knife/environment_show.rb +2 -7
- data/lib/chef/knife/list.rb +91 -47
- data/lib/chef/knife/node_run_list_set.rb +66 -0
- data/lib/chef/knife/node_show.rb +1 -7
- data/lib/chef/knife/raw.rb +20 -64
- data/lib/chef/knife/role_show.rb +2 -4
- data/lib/chef/knife/search.rb +5 -6
- data/lib/chef/knife/show.rb +34 -11
- data/lib/chef/knife/ssh.rb +8 -0
- data/lib/chef/knife/upload.rb +23 -4
- data/lib/chef/knife/user_show.rb +2 -5
- data/lib/chef/knife/xargs.rb +265 -0
- data/lib/chef/log.rb +2 -2
- data/lib/chef/mixin/file_class.rb +0 -9
- data/lib/chef/mixin/language_include_recipe.rb +1 -1
- data/lib/chef/mixin/params_validate.rb +19 -9
- data/lib/chef/mixin/template.rb +126 -36
- data/lib/chef/mixin/windows_architecture_helper.rb +91 -0
- data/lib/chef/monkey_patches/file.rb +26 -0
- data/lib/chef/monkey_patches/net-ssh-multi.rb +140 -0
- data/lib/chef/monkey_patches/securerandom.rb +44 -0
- data/lib/chef/monologger.rb +93 -0
- data/lib/chef/node.rb +4 -0
- data/lib/chef/platform.rb +4 -490
- data/lib/chef/platform/provider_mapping.rb +529 -0
- data/lib/chef/{monkey_patches/dir.rb → platform/query_helpers.rb} +25 -19
- data/lib/chef/provider.rb +12 -9
- data/lib/chef/provider/batch.rb +35 -0
- data/lib/chef/provider/cookbook_file.rb +9 -78
- data/lib/chef/provider/cookbook_file/content.rb +49 -0
- data/lib/chef/provider/deploy.rb +24 -20
- data/lib/chef/provider/deploy/revision.rb +27 -0
- data/lib/chef/provider/directory.rb +19 -22
- data/lib/chef/provider/execute.rb +22 -5
- data/lib/chef/provider/file.rb +299 -217
- data/lib/chef/provider/file/content.rb +39 -0
- data/lib/chef/provider/git.rb +76 -43
- data/lib/chef/provider/group/usermod.rb +2 -2
- data/lib/chef/provider/ifconfig.rb +25 -35
- data/lib/chef/provider/ifconfig/debian.rb +71 -0
- data/lib/chef/provider/ifconfig/redhat.rb +47 -0
- data/lib/chef/provider/link.rb +10 -3
- data/lib/chef/provider/mount.rb +1 -1
- data/lib/chef/provider/mount/mount.rb +8 -3
- data/lib/chef/provider/mount/windows.rb +4 -1
- data/lib/chef/provider/package/portage.rb +9 -4
- data/lib/chef/provider/package/rubygems.rb +45 -10
- data/lib/chef/provider/package/smartos.rb +47 -36
- data/lib/chef/provider/package/yum.rb +19 -12
- data/lib/chef/provider/package/zypper.rb +45 -55
- data/lib/chef/provider/powershell_script.rb +77 -0
- data/lib/chef/provider/remote_directory.rb +5 -6
- data/lib/chef/provider/remote_file.rb +12 -108
- data/lib/chef/provider/remote_file/cache_control_data.rb +165 -0
- data/lib/chef/provider/remote_file/content.rb +75 -0
- data/lib/chef/provider/remote_file/fetcher.rb +43 -0
- data/lib/chef/provider/remote_file/ftp.rb +183 -0
- data/lib/chef/provider/remote_file/http.rb +124 -0
- data/lib/chef/provider/remote_file/local_file.rb +47 -0
- data/lib/chef/provider/route.rb +6 -2
- data/lib/chef/provider/script.rb +14 -2
- data/lib/chef/provider/service/macosx.rb +16 -10
- data/lib/chef/provider/service/solaris.rb +6 -5
- data/lib/chef/provider/template.rb +16 -78
- data/lib/chef/provider/template/content.rb +61 -0
- data/lib/chef/provider/user/solaris.rb +90 -0
- data/lib/chef/provider/user/useradd.rb +76 -63
- data/lib/chef/provider/windows_script.rb +73 -0
- data/lib/chef/providers.rb +16 -0
- data/lib/chef/resource.rb +23 -2
- data/lib/chef/resource/batch.rb +31 -0
- data/lib/chef/resource/conditional.rb +4 -0
- data/lib/chef/resource/conditional_action_not_nothing.rb +48 -0
- data/lib/chef/resource/file.rb +31 -3
- data/lib/chef/resource/link.rb +17 -0
- data/lib/chef/resource/lwrp_base.rb +1 -1
- data/lib/chef/resource/mount.rb +29 -2
- data/lib/chef/resource/powershell_script.rb +31 -0
- data/lib/chef/resource/remote_file.rb +47 -1
- data/lib/chef/resource/route.rb +1 -1
- data/lib/chef/resource/template.rb +145 -0
- data/lib/chef/resource/windows_script.rb +62 -0
- data/lib/chef/resource_collection.rb +45 -11
- data/lib/chef/resource_reporter.rb +81 -52
- data/lib/chef/resources.rb +2 -0
- data/lib/chef/rest.rb +13 -4
- data/lib/chef/rest/rest_request.rb +5 -1
- data/lib/chef/run_context/cookbook_compiler.rb +3 -3
- data/lib/chef/run_list/run_list_expansion.rb +1 -1
- data/lib/chef/run_lock.rb +7 -1
- data/lib/chef/runner.rb +0 -1
- data/lib/chef/scan_access_control.rb +6 -1
- data/lib/chef/search/query.rb +2 -2
- data/lib/chef/shell/shell_session.rb +2 -2
- data/lib/chef/util/backup.rb +84 -0
- data/lib/chef/util/diff.rb +145 -0
- data/lib/chef/util/file_edit.rb +1 -1
- data/lib/chef/util/selinux.rb +100 -0
- data/lib/chef/util/windows/net_user.rb +14 -1
- data/lib/chef/util/windows/volume.rb +2 -2
- data/lib/chef/version.rb +1 -1
- data/lib/chef/version/platform.rb +42 -0
- data/lib/chef/version_class.rb +1 -1
- data/lib/chef/version_constraint.rb +6 -5
- data/lib/chef/version_constraint/platform.rb +26 -0
- data/lib/chef/win32/api/file.rb +8 -2
- data/lib/chef/win32/version.rb +25 -8
- data/spec/data/apt/chef-integration-test-1.0/debian/changelog +5 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/compat +1 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/control +13 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/copyright +34 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/files +1 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/rules +13 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/source/format +1 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/changelog +11 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/compat +1 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/control +13 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/copyright +34 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/files +1 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/rules +13 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/source/format +1 -0
- data/spec/data/apt/chef-integration-test_1.0-1_amd64.changes +22 -0
- data/spec/data/apt/chef-integration-test_1.0-1_amd64.deb +0 -0
- data/spec/data/apt/chef-integration-test_1.0.orig.tar.gz +0 -0
- data/spec/data/apt/chef-integration-test_1.1-1_amd64.changes +22 -0
- data/spec/data/apt/chef-integration-test_1.1-1_amd64.deb +0 -0
- data/spec/data/apt/chef-integration-test_1.1.orig.tar.gz +0 -0
- data/spec/data/apt/var/www/apt/conf/distributions +7 -0
- data/spec/data/apt/var/www/apt/conf/incoming +4 -0
- data/spec/data/apt/var/www/apt/conf/pulls +3 -0
- data/spec/data/apt/var/www/apt/db/checksums.db +0 -0
- data/spec/data/apt/var/www/apt/db/contents.cache.db +0 -0
- data/spec/data/apt/var/www/apt/db/packages.db +0 -0
- data/spec/data/apt/var/www/apt/db/references.db +0 -0
- data/spec/data/apt/var/www/apt/db/release.caches.db +0 -0
- data/spec/data/apt/var/www/apt/db/version +4 -0
- data/spec/data/apt/var/www/apt/dists/sid/Release +19 -0
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages +16 -0
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages.gz +0 -0
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Release +5 -0
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-i386/Packages +0 -0
- data/spec/data/apt/var/www/apt/pool/main/c/chef-integration-test/chef-integration-test_1.0-1_amd64.deb +0 -0
- data/spec/data/apt/var/www/apt/pool/main/c/chef-integration-test/chef-integration-test_1.1-1_amd64.deb +0 -0
- data/spec/data/bootstrap/encrypted_data_bag_secret +1 -0
- data/spec/data/bootstrap/secret.erb +9 -0
- data/spec/data/cookbooks/ignorken/recipes/default.rb +1 -0
- data/spec/data/cookbooks/ignorken/recipes/ignoreme.rb +2 -0
- data/spec/data/cookbooks/openldap/files/default/.dotfile +1 -0
- data/spec/data/cookbooks/openldap/files/default/.ssh/id_rsa +1 -0
- data/spec/data/cookbooks/openldap/files/default/remotedir/.a_dotdir/.a_dotfile_in_a_dotdir +1 -0
- data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/.a_dotfile +1 -0
- data/spec/data/cookbooks/openldap/templates/default/all_windows_line_endings.erb +4 -0
- data/spec/data/cookbooks/openldap/templates/default/helper_test.erb +1 -0
- data/spec/data/cookbooks/openldap/templates/default/helpers_via_partial_test.erb +1 -0
- data/spec/data/cookbooks/openldap/templates/default/no_windows_line_endings.erb +4 -0
- data/spec/data/cookbooks/openldap/templates/default/some_windows_line_endings.erb +4 -0
- data/spec/data/cookbooks/preseed/files/default/preseed-file.seed +1 -0
- data/spec/data/cookbooks/preseed/templates/default/preseed-template.seed +1 -0
- data/spec/data/file-providers-method-snapshot-chef-11-4.json +127 -0
- data/spec/data/git_bundles/example-repo.gitbundle +0 -0
- data/spec/data/knife-home/.chef/plugins/knife/example_home_subcommand.rb +0 -0
- data/spec/data/knife_subcommand/test_yourself.rb +8 -0
- data/spec/data/null_config.rb +1 -0
- data/spec/data/partial_one.erb +1 -1
- data/spec/data/remote_file/nyan_cat.png.gz +0 -0
- data/spec/functional/file_content_management/deploy_strategies_spec.rb +238 -0
- data/spec/functional/knife/exec_spec.rb +2 -2
- data/spec/functional/provider/remote_file/cache_control_data_spec.rb +101 -0
- data/spec/functional/resource/batch_spec.rb +64 -0
- data/spec/functional/resource/cookbook_file_spec.rb +2 -3
- data/spec/functional/resource/deploy_revision_spec.rb +180 -0
- data/spec/functional/resource/directory_spec.rb +2 -2
- data/spec/functional/resource/file_spec.rb +17 -1
- data/spec/functional/resource/git_spec.rb +259 -0
- data/spec/functional/resource/link_spec.rb +422 -388
- data/spec/functional/resource/package_spec.rb +297 -0
- data/spec/functional/resource/powershell_spec.rb +188 -0
- data/spec/functional/resource/registry_spec.rb +8 -4
- data/spec/functional/resource/remote_directory_spec.rb +2 -2
- data/spec/functional/resource/remote_file_spec.rb +97 -29
- data/spec/functional/resource/template_spec.rb +173 -17
- data/spec/functional/resource/user_spec.rb +547 -0
- data/spec/functional/run_lock_spec.rb +5 -0
- data/spec/functional/shell_spec.rb +2 -1
- data/spec/functional/win32/service_manager_spec.rb +269 -0
- data/spec/functional/win32/versions_spec.rb +78 -0
- data/spec/integration/knife/chef_repo_path_spec.rb +805 -0
- data/spec/integration/knife/chef_repository_file_system_spec.rb +276 -0
- data/spec/integration/knife/chefignore_spec.rb +271 -0
- data/spec/integration/knife/delete_spec.rb +944 -0
- data/spec/integration/knife/deps_spec.rb +648 -0
- data/spec/integration/knife/diff_spec.rb +536 -0
- data/spec/integration/knife/download_spec.rb +962 -0
- data/spec/integration/knife/list_spec.rb +633 -0
- data/spec/integration/knife/raw_spec.rb +166 -0
- data/spec/integration/knife/redirection_spec.rb +57 -0
- data/spec/integration/knife/show_spec.rb +158 -0
- data/spec/integration/knife/upload_spec.rb +1060 -0
- data/spec/integration/solo/solo_spec.rb +41 -0
- data/spec/spec_helper.rb +55 -1
- data/spec/support/chef_helpers.rb +32 -0
- data/spec/support/platform_helpers.rb +40 -0
- data/spec/support/platforms/win32/spec_service.rb +59 -0
- data/spec/support/shared/functional/directory_resource.rb +43 -16
- data/spec/support/shared/functional/file_resource.rb +661 -20
- data/spec/support/shared/functional/securable_resource.rb +109 -8
- data/spec/support/shared/functional/securable_resource_with_reporting.rb +39 -31
- data/spec/support/shared/integration/integration_helper.rb +166 -0
- data/spec/support/shared/integration/knife_support.rb +171 -0
- data/spec/support/shared/unit/execute_resource.rb +125 -0
- data/spec/support/shared/unit/file_system_support.rb +8 -48
- data/spec/support/shared/unit/provider/file.rb +609 -0
- data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +407 -0
- data/spec/support/shared/unit/script_resource.rb +52 -0
- data/spec/support/shared/unit/windows_script_resource.rb +48 -0
- data/spec/tiny_server.rb +13 -11
- data/spec/unit/application/client_spec.rb +39 -1
- data/spec/unit/application/knife_spec.rb +12 -0
- data/spec/unit/application/solo_spec.rb +1 -1
- data/spec/unit/application_spec.rb +57 -2
- data/spec/unit/chef_fs/diff_spec.rb +30 -31
- data/spec/unit/chef_fs/file_pattern_spec.rb +2 -2
- data/spec/unit/chef_fs/file_system_spec.rb +2 -3
- data/spec/unit/client_spec.rb +20 -1
- data/spec/unit/config_spec.rb +70 -52
- data/spec/unit/cookbook/synchronizer_spec.rb +49 -1
- data/spec/unit/cookbook/syntax_check_spec.rb +28 -3
- data/spec/unit/cookbook_loader_spec.rb +3 -2
- data/spec/unit/daemon_spec.rb +7 -7
- data/spec/unit/data_bag_spec.rb +7 -0
- data/spec/unit/deprecation_spec.rb +86 -0
- data/spec/unit/encrypted_data_bag_item_spec.rb +183 -88
- data/spec/unit/environment_spec.rb +98 -0
- data/spec/unit/exceptions_spec.rb +6 -1
- data/spec/unit/file_access_control_spec.rb +21 -1
- data/spec/unit/file_content_management/deploy/cp_spec.rb +46 -0
- data/spec/unit/file_content_management/deploy/mv_unix_spec.rb +103 -0
- data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +179 -0
- data/spec/unit/formatters/error_inspectors/cookbook_resolve_error_inspector_spec.rb +38 -2
- data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +3 -2
- data/spec/unit/knife/bootstrap_spec.rb +128 -29
- data/spec/unit/knife/configure_spec.rb +42 -26
- data/spec/unit/knife/cookbook_download_spec.rb +24 -3
- data/spec/unit/knife/cookbook_upload_spec.rb +8 -4
- data/spec/unit/knife/core/bootstrap_context_spec.rb +78 -61
- data/spec/unit/knife/core/subcommand_loader_spec.rb +20 -0
- data/spec/unit/knife/core/ui_spec.rb +41 -0
- data/spec/unit/knife/node_run_list_set_spec.rb +140 -0
- data/spec/unit/knife_spec.rb +21 -0
- data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +1 -0
- data/spec/unit/mixin/params_validate_spec.rb +35 -0
- data/spec/unit/mixin/template_spec.rb +69 -57
- data/spec/unit/mixin/windows_architecture_helper_spec.rb +83 -0
- data/spec/unit/node_spec.rb +7 -0
- data/spec/unit/platform_spec.rb +15 -1
- data/spec/unit/provider/cookbook_file/content_spec.rb +40 -0
- data/spec/unit/provider/cookbook_file_spec.rb +26 -183
- data/spec/unit/provider/cron/solaris_spec.rb +1 -1
- data/spec/unit/provider/deploy/revision_spec.rb +19 -11
- data/spec/unit/provider/deploy_spec.rb +2 -2
- data/spec/unit/provider/directory_spec.rb +23 -23
- data/spec/unit/provider/execute_spec.rb +27 -1
- data/spec/unit/provider/file/content_spec.rb +101 -0
- data/spec/unit/provider/file_spec.rb +25 -484
- data/spec/unit/provider/git_spec.rb +224 -28
- data/spec/unit/provider/group/usermod_spec.rb +3 -1
- data/spec/unit/provider/ifconfig/debian_spec.rb +89 -0
- data/spec/unit/provider/ifconfig/redhat_spec.rb +71 -0
- data/spec/unit/provider/ifconfig_spec.rb +0 -33
- data/spec/unit/provider/mount/mount_spec.rb +33 -2
- data/spec/unit/provider/mount/windows_spec.rb +4 -1
- data/spec/unit/provider/mount_spec.rb +16 -6
- data/spec/unit/provider/package/portage_spec.rb +44 -0
- data/spec/unit/provider/package/rubygems_spec.rb +44 -1
- data/spec/unit/provider/package/smartos_spec.rb +3 -2
- data/spec/unit/provider/package/yum_spec.rb +36 -39
- data/spec/unit/provider/package/zypper_spec.rb +84 -22
- data/spec/unit/provider/package_spec.rb +0 -4
- data/spec/unit/provider/powershell_spec.rb +38 -0
- data/spec/unit/provider/remote_directory_spec.rb +0 -4
- data/spec/unit/provider/remote_file/cache_control_data_spec.rb +211 -0
- data/spec/unit/provider/remote_file/content_spec.rb +230 -0
- data/spec/unit/provider/remote_file/fetcher_spec.rb +75 -0
- data/spec/unit/provider/remote_file/ftp_spec.rb +224 -0
- data/spec/unit/provider/remote_file/http_spec.rb +319 -0
- data/spec/unit/provider/remote_file/local_file_spec.rb +60 -0
- data/spec/unit/provider/remote_file_spec.rb +33 -295
- data/spec/unit/provider/route_spec.rb +25 -9
- data/spec/unit/provider/service/macosx_spec.rb +176 -152
- data/spec/unit/provider/service/solaris_smf_service_spec.rb +21 -18
- data/spec/unit/provider/service/systemd_service_spec.rb +2 -2
- data/spec/unit/provider/service/upstart_service_spec.rb +2 -2
- data/spec/unit/provider/service_spec.rb +3 -3
- data/spec/unit/provider/template/content_spec.rb +78 -0
- data/spec/unit/provider/template_spec.rb +52 -184
- data/spec/unit/provider/user/solaris_spec.rb +80 -0
- data/spec/unit/provider/user/useradd_spec.rb +12 -358
- data/spec/unit/resource/batch_spec.rb +48 -0
- data/spec/unit/resource/conditional_action_not_nothing_spec.rb +45 -0
- data/spec/unit/resource/execute_spec.rb +3 -101
- data/spec/unit/resource/file_spec.rb +0 -5
- data/spec/unit/resource/group_spec.rb +9 -0
- data/spec/unit/resource/ifconfig_spec.rb +60 -1
- data/spec/unit/resource/link_spec.rb +1 -0
- data/spec/unit/resource/mount_spec.rb +37 -0
- data/spec/unit/resource/powershell_spec.rb +48 -0
- data/spec/unit/resource/remote_file_spec.rb +44 -4
- data/spec/unit/resource/route_spec.rb +1 -1
- data/spec/unit/resource/script_spec.rb +13 -36
- data/spec/unit/resource/template_spec.rb +111 -8
- data/spec/unit/resource/user_spec.rb +7 -0
- data/spec/unit/resource_collection_spec.rb +61 -32
- data/spec/unit/resource_reporter_spec.rb +115 -102
- data/spec/unit/resource_spec.rb +170 -1
- data/spec/unit/rest/auth_credentials_spec.rb +2 -2
- data/spec/unit/rest_spec.rb +6 -2
- data/spec/unit/run_context/cookbook_compiler_spec.rb +9 -0
- data/spec/unit/runner_spec.rb +1 -1
- data/spec/unit/scan_access_control_spec.rb +4 -2
- data/spec/unit/shell/shell_session_spec.rb +15 -2
- data/spec/unit/util/backup_spec.rb +149 -0
- data/spec/unit/util/diff_spec.rb +596 -0
- data/spec/unit/util/selinux_spec.rb +172 -0
- data/spec/unit/version/platform_spec.rb +61 -0
- data/spec/unit/version_constraint/platform_spec.rb +46 -0
- data/spec/unit/version_constraint_spec.rb +5 -0
- metadata +233 -10
- data/lib/chef/chef_fs/file_system/data_bag_item.rb +0 -59
- data/spec/unit/chef_fs/file_system/chef_server_root_dir_spec.rb +0 -237
- data/spec/unit/chef_fs/file_system/cookbooks_dir_spec.rb +0 -568
- data/spec/unit/chef_fs/file_system/data_bags_dir_spec.rb +0 -220
data/spec/unit/resource_spec.rb
CHANGED
|
@@ -459,7 +459,6 @@ describe Chef::Resource do
|
|
|
459
459
|
end
|
|
460
460
|
|
|
461
461
|
describe "when invoking its action" do
|
|
462
|
-
|
|
463
462
|
before do
|
|
464
463
|
@resource = Chef::Resource.new("provided", @run_context)
|
|
465
464
|
@resource.provider = Chef::Provider::SnakeOil
|
|
@@ -529,6 +528,114 @@ describe Chef::Resource do
|
|
|
529
528
|
|
|
530
529
|
end
|
|
531
530
|
|
|
531
|
+
describe "should_skip?" do
|
|
532
|
+
before do
|
|
533
|
+
@resource = Chef::Resource::Cat.new("sugar", @run_context)
|
|
534
|
+
end
|
|
535
|
+
|
|
536
|
+
it "should return false by default" do
|
|
537
|
+
@resource.should_skip?(:purr).should be_false
|
|
538
|
+
end
|
|
539
|
+
|
|
540
|
+
it "should return false when if_only is met" do
|
|
541
|
+
@resource.only_if { true }
|
|
542
|
+
@resource.should_skip?(:purr).should be_false
|
|
543
|
+
end
|
|
544
|
+
|
|
545
|
+
it "should return true when if_only is not met" do
|
|
546
|
+
@resource.only_if { false }
|
|
547
|
+
@resource.should_skip?(:purr).should be_true
|
|
548
|
+
end
|
|
549
|
+
|
|
550
|
+
it "should return true when not_if is met" do
|
|
551
|
+
@resource.not_if { true }
|
|
552
|
+
@resource.should_skip?(:purr).should be_true
|
|
553
|
+
end
|
|
554
|
+
|
|
555
|
+
it "should return false when if_only is not met" do
|
|
556
|
+
@resource.not_if { false }
|
|
557
|
+
@resource.should_skip?(:purr).should be_false
|
|
558
|
+
end
|
|
559
|
+
|
|
560
|
+
it "should return true when if_only is met but also not_if is met" do
|
|
561
|
+
@resource.only_if { true }
|
|
562
|
+
@resource.not_if { true }
|
|
563
|
+
@resource.should_skip?(:purr).should be_true
|
|
564
|
+
end
|
|
565
|
+
|
|
566
|
+
it "should return true when one of multiple if_only's is not met" do
|
|
567
|
+
@resource.only_if { true }
|
|
568
|
+
@resource.only_if { false }
|
|
569
|
+
@resource.only_if { true }
|
|
570
|
+
@resource.should_skip?(:purr).should be_true
|
|
571
|
+
end
|
|
572
|
+
|
|
573
|
+
it "should return true when one of multiple not_if's is met" do
|
|
574
|
+
@resource.not_if { false }
|
|
575
|
+
@resource.not_if { true }
|
|
576
|
+
@resource.not_if { false }
|
|
577
|
+
@resource.should_skip?(:purr).should be_true
|
|
578
|
+
end
|
|
579
|
+
|
|
580
|
+
it "should return true when action is :nothing" do
|
|
581
|
+
@resource.should_skip?(:nothing).should be_true
|
|
582
|
+
end
|
|
583
|
+
|
|
584
|
+
it "should return true when action is :nothing ignoring only_if/not_if conditionals" do
|
|
585
|
+
@resource.only_if { true }
|
|
586
|
+
@resource.not_if { false }
|
|
587
|
+
@resource.should_skip?(:nothing).should be_true
|
|
588
|
+
end
|
|
589
|
+
|
|
590
|
+
it "should print \"skipped due to action :nothing\" message for doc formatter when action is :nothing" do
|
|
591
|
+
fdoc = Chef::Formatters.new(:doc, STDOUT, STDERR)
|
|
592
|
+
@run_context.stub!(:events).and_return(fdoc)
|
|
593
|
+
fdoc.should_receive(:puts).with(" (skipped due to action :nothing)")
|
|
594
|
+
@resource.should_skip?(:nothing)
|
|
595
|
+
end
|
|
596
|
+
|
|
597
|
+
end
|
|
598
|
+
|
|
599
|
+
describe "when resource action is :nothing" do
|
|
600
|
+
before do
|
|
601
|
+
@resource1 = Chef::Resource::Cat.new("sugar", @run_context)
|
|
602
|
+
@resource1.action = :nothing
|
|
603
|
+
|
|
604
|
+
@node.automatic_attrs[:platform] = "fubuntu"
|
|
605
|
+
@node.automatic_attrs[:platform_version] = '10.04'
|
|
606
|
+
end
|
|
607
|
+
|
|
608
|
+
it "should not run only_if/not_if conditionals (CHEF-972)" do
|
|
609
|
+
snitch_var1 = 0
|
|
610
|
+
@resource1.only_if { snitch_var1 = 1 }
|
|
611
|
+
@resource1.not_if { snitch_var1 = 2 }
|
|
612
|
+
@resource1.run_action(:nothing)
|
|
613
|
+
snitch_var1.should == 0
|
|
614
|
+
end
|
|
615
|
+
|
|
616
|
+
it "should run only_if/not_if conditionals when notified to run another action (CHEF-972)" do
|
|
617
|
+
snitch_var1 = snitch_var2 = 0
|
|
618
|
+
@runner = Chef::Runner.new(@run_context)
|
|
619
|
+
Chef::Platform.set(
|
|
620
|
+
:resource => :cat,
|
|
621
|
+
:provider => Chef::Provider::SnakeOil
|
|
622
|
+
)
|
|
623
|
+
|
|
624
|
+
@resource1.only_if { snitch_var1 = 1 }
|
|
625
|
+
@resource1.not_if { snitch_var2 = 2 }
|
|
626
|
+
@resource2 = Chef::Resource::Cat.new("coffee", @run_context)
|
|
627
|
+
@resource2.notifies :purr, @resource1
|
|
628
|
+
@resource2.action = :purr
|
|
629
|
+
|
|
630
|
+
@run_context.resource_collection << @resource1
|
|
631
|
+
@run_context.resource_collection << @resource2
|
|
632
|
+
@runner.converge
|
|
633
|
+
|
|
634
|
+
snitch_var1.should == 1
|
|
635
|
+
snitch_var2.should == 2
|
|
636
|
+
end
|
|
637
|
+
end
|
|
638
|
+
|
|
532
639
|
describe "building the platform map" do
|
|
533
640
|
|
|
534
641
|
it 'adds mappings for a single platform' do
|
|
@@ -590,6 +697,68 @@ describe Chef::Resource do
|
|
|
590
697
|
end
|
|
591
698
|
|
|
592
699
|
end
|
|
700
|
+
|
|
701
|
+
describe "when creating notifications" do
|
|
702
|
+
|
|
703
|
+
describe "with a string resource spec" do
|
|
704
|
+
|
|
705
|
+
it "creates a delayed notification when timing is not specified" do
|
|
706
|
+
@resource.notifies(:run, "execute[foo]")
|
|
707
|
+
@run_context.delayed_notification_collection.should have(1).notifications
|
|
708
|
+
end
|
|
709
|
+
|
|
710
|
+
it "creates a delayed notification when :delayed is not specified" do
|
|
711
|
+
@resource.notifies(:run, "execute[foo]", :delayed)
|
|
712
|
+
@run_context.delayed_notification_collection.should have(1).notifications
|
|
713
|
+
end
|
|
714
|
+
|
|
715
|
+
it "creates an immediate notification when :immediate is specified" do
|
|
716
|
+
@resource.notifies(:run, "execute[foo]", :immediate)
|
|
717
|
+
@run_context.immediate_notification_collection.should have(1).notifications
|
|
718
|
+
end
|
|
719
|
+
|
|
720
|
+
it "creates an immediate notification when :immediately is specified" do
|
|
721
|
+
@resource.notifies(:run, "execute[foo]", :immediately)
|
|
722
|
+
@run_context.immediate_notification_collection.should have(1).notifications
|
|
723
|
+
end
|
|
724
|
+
|
|
725
|
+
describe "with a syntax error in the resource spec" do
|
|
726
|
+
|
|
727
|
+
it "raises an exception immmediately" do
|
|
728
|
+
lambda do
|
|
729
|
+
@resource.notifies(:run, "typo[missing-closing-bracket")
|
|
730
|
+
end.should raise_error(Chef::Exceptions::InvalidResourceSpecification)
|
|
731
|
+
end
|
|
732
|
+
end
|
|
733
|
+
end
|
|
734
|
+
|
|
735
|
+
describe "with a resource reference" do
|
|
736
|
+
before do
|
|
737
|
+
@notified_resource = Chef::Resource.new("punk", @run_context)
|
|
738
|
+
end
|
|
739
|
+
|
|
740
|
+
it "creates a delayed notification when timing is not specified" do
|
|
741
|
+
@resource.notifies(:run, @notified_resource)
|
|
742
|
+
@run_context.delayed_notification_collection.should have(1).notifications
|
|
743
|
+
end
|
|
744
|
+
|
|
745
|
+
it "creates a delayed notification when :delayed is not specified" do
|
|
746
|
+
@resource.notifies(:run, @notified_resource, :delayed)
|
|
747
|
+
@run_context.delayed_notification_collection.should have(1).notifications
|
|
748
|
+
end
|
|
749
|
+
|
|
750
|
+
it "creates an immediate notification when :immediate is specified" do
|
|
751
|
+
@resource.notifies(:run, @notified_resource, :immediate)
|
|
752
|
+
@run_context.immediate_notification_collection.should have(1).notifications
|
|
753
|
+
end
|
|
754
|
+
|
|
755
|
+
it "creates an immediate notification when :immediately is specified" do
|
|
756
|
+
@resource.notifies(:run, @notified_resource, :immediately)
|
|
757
|
+
@run_context.immediate_notification_collection.should have(1).notifications
|
|
758
|
+
end
|
|
759
|
+
end
|
|
760
|
+
|
|
761
|
+
end
|
|
593
762
|
end
|
|
594
763
|
|
|
595
764
|
describe Chef::Resource::Notification do
|
|
@@ -298,7 +298,7 @@ describe Chef::REST::RESTRequest do
|
|
|
298
298
|
Chef::Config[:http_proxy] = "http://proxy.example.com:3128"
|
|
299
299
|
Chef::Config[:https_proxy] = "http://sproxy.example.com:3129"
|
|
300
300
|
Chef::Config[:http_proxy_user] = nil
|
|
301
|
-
Chef::Config[:
|
|
301
|
+
Chef::Config[:http_proxy_pass] = nil
|
|
302
302
|
Chef::Config[:https_proxy_user] = nil
|
|
303
303
|
Chef::Config[:https_proxy_pass] = nil
|
|
304
304
|
Chef::Config[:no_proxy] = nil
|
|
@@ -308,7 +308,7 @@ describe Chef::REST::RESTRequest do
|
|
|
308
308
|
Chef::Config[:http_proxy] = nil
|
|
309
309
|
Chef::Config[:https_proxy] = nil
|
|
310
310
|
Chef::Config[:http_proxy_user] = nil
|
|
311
|
-
Chef::Config[:
|
|
311
|
+
Chef::Config[:http_proxy_pass] = nil
|
|
312
312
|
Chef::Config[:https_proxy_user] = nil
|
|
313
313
|
Chef::Config[:https_proxy_pass] = nil
|
|
314
314
|
Chef::Config[:no_proxy] = nil
|
data/spec/unit/rest_spec.rb
CHANGED
|
@@ -347,8 +347,12 @@ describe Chef::REST do
|
|
|
347
347
|
@http_client.stub!(:request).and_yield(http_response).and_return(http_response)
|
|
348
348
|
|
|
349
349
|
lambda { @rest.api_request(:GET, @url) }.should raise_error(Chef::Exceptions::RedirectLimitExceeded)
|
|
350
|
+
|
|
351
|
+
[:PUT, :POST, :DELETE].each do |method|
|
|
352
|
+
lambda { @rest.api_request(method, @url) }.should raise_error(Chef::Exceptions::InvalidRedirect)
|
|
353
|
+
end
|
|
350
354
|
end
|
|
351
|
-
|
|
355
|
+
end
|
|
352
356
|
|
|
353
357
|
it "should return `false` when response is 304 NotModified" do
|
|
354
358
|
http_response = Net::HTTPNotModified.new("1.1", "304", "it's the same as when you asked 5 minutes ago")
|
|
@@ -493,7 +497,7 @@ describe Chef::REST do
|
|
|
493
497
|
|
|
494
498
|
it "closes and unlinks the tempfile when the response is a redirect" do
|
|
495
499
|
Tempfile.rspec_reset
|
|
496
|
-
tempfile = mock("die", :path => "/tmp/ragefist", :close => true, :binmode =>
|
|
500
|
+
tempfile = mock("die", :path => "/tmp/ragefist", :close => true, :binmode => true)
|
|
497
501
|
tempfile.should_receive(:close!).at_least(2).times
|
|
498
502
|
Tempfile.stub!(:new).with("chef-rest").and_return(tempfile)
|
|
499
503
|
|
|
@@ -178,4 +178,13 @@ describe Chef::RunContext::CookbookCompiler do
|
|
|
178
178
|
# Tests for this behavior are in RunContext's tests
|
|
179
179
|
end
|
|
180
180
|
|
|
181
|
+
describe "listing cookbook order" do
|
|
182
|
+
it "should return an array of cookbook names as symbols without duplicates" do
|
|
183
|
+
node.run_list("test-with-circular-deps::default", "circular-dep1::default", "circular-dep2::default")
|
|
184
|
+
|
|
185
|
+
compiler.cookbook_order.should == [:"circular-dep2",
|
|
186
|
+
:"circular-dep1",
|
|
187
|
+
:"test-with-circular-deps"]
|
|
188
|
+
end
|
|
189
|
+
end
|
|
181
190
|
end
|
data/spec/unit/runner_spec.rb
CHANGED
|
@@ -360,7 +360,7 @@ E
|
|
|
360
360
|
end
|
|
361
361
|
|
|
362
362
|
it "should check a resource's only_if and not_if if notified by another resource" do
|
|
363
|
-
@first_resource.action = :
|
|
363
|
+
@first_resource.action = :buy
|
|
364
364
|
|
|
365
365
|
only_if_called_times = 0
|
|
366
366
|
@first_resource.only_if {only_if_called_times += 1; true}
|
|
@@ -21,7 +21,8 @@ require 'chef/scan_access_control'
|
|
|
21
21
|
describe Chef::ScanAccessControl do
|
|
22
22
|
|
|
23
23
|
before do
|
|
24
|
-
@new_resource = Chef::Resource::File.new("/tmp/foo/bar/baz/
|
|
24
|
+
@new_resource = Chef::Resource::File.new("/tmp/foo/bar/baz/link")
|
|
25
|
+
@real_file = "/tmp/foo/bar/real/file"
|
|
25
26
|
@current_resource = Chef::Resource::File.new(@new_resource.path)
|
|
26
27
|
@scanner = Chef::ScanAccessControl.new(@new_resource, @current_resource)
|
|
27
28
|
end
|
|
@@ -49,7 +50,8 @@ describe Chef::ScanAccessControl do
|
|
|
49
50
|
|
|
50
51
|
before do
|
|
51
52
|
@stat = mock("File::Stat for #{@new_resource.path}", :uid => 0, :gid => 0, :mode => 00100644)
|
|
52
|
-
File.should_receive(:
|
|
53
|
+
File.should_receive(:realpath).with(@new_resource.path).and_return(@real_file)
|
|
54
|
+
File.should_receive(:stat).with(@real_file).and_return(@stat)
|
|
53
55
|
File.should_receive(:exist?).with(@new_resource.path).and_return(true)
|
|
54
56
|
end
|
|
55
57
|
|
|
@@ -47,6 +47,19 @@ describe Shell::ShellSession do
|
|
|
47
47
|
|
|
48
48
|
end
|
|
49
49
|
|
|
50
|
+
describe Shell::ClientSession do
|
|
51
|
+
it "builds the node's run_context with the proper environment" do
|
|
52
|
+
@session = Shell::ClientSession.instance
|
|
53
|
+
@node = Chef::Node.build("foo")
|
|
54
|
+
@session.node = @node
|
|
55
|
+
@session.instance_variable_set(:@client, stub(:sync_cookbooks => {}))
|
|
56
|
+
@expansion = Chef::RunList::RunListExpansion.new(@node.chef_environment, [])
|
|
57
|
+
|
|
58
|
+
@node.run_list.should_receive(:expand).with(@node.chef_environment).and_return(@expansion)
|
|
59
|
+
@session.rebuild_context
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
50
63
|
describe Shell::StandAloneSession do
|
|
51
64
|
before do
|
|
52
65
|
@session = Shell::StandAloneSession.instance
|
|
@@ -109,7 +122,7 @@ describe Shell::SoloSession do
|
|
|
109
122
|
@session.resource_collection.should include(kitteh)
|
|
110
123
|
end
|
|
111
124
|
|
|
112
|
-
it "returns definitions from
|
|
125
|
+
it "returns definitions from its compilation object" do
|
|
113
126
|
@session.definitions.should == @run_context.definitions
|
|
114
127
|
end
|
|
115
128
|
|
|
@@ -119,7 +132,7 @@ describe Shell::SoloSession do
|
|
|
119
132
|
#pending "1) keep attribs in an ivar 2) pass them to the node 3) feed them to the node on reset"
|
|
120
133
|
end
|
|
121
134
|
|
|
122
|
-
it "generates
|
|
135
|
+
it "generates its resource collection from the compiled cookbooks and the ad hoc recipe" do
|
|
123
136
|
@session.stub!(:node_built?).and_return(true)
|
|
124
137
|
kitteh_cat = Chef::Resource::Cat.new("kitteh")
|
|
125
138
|
@run_context.resource_collection << kitteh_cat
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Lamont Granquist (<lamont@opscode.com>)
|
|
3
|
+
# Copyright:: Copyright (c) 2013 Opscode, 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
|
+
require 'spec_helper'
|
|
21
|
+
require 'tmpdir'
|
|
22
|
+
|
|
23
|
+
describe Chef::Util::Backup do
|
|
24
|
+
before(:all) do
|
|
25
|
+
@original_config = Chef::Config.configuration
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
after(:all) do
|
|
29
|
+
Chef::Config.configuration.replace(@original_config)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
let (:tempfile) do
|
|
33
|
+
Tempfile.new("chef-util-backup-spec-test")
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
before(:each) do
|
|
37
|
+
@new_resource = mock("new_resource")
|
|
38
|
+
@new_resource.should_receive(:path).at_least(:once).and_return(tempfile.path)
|
|
39
|
+
@backup = Chef::Util::Backup.new(@new_resource)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it "should store the resource passed to new as new_resource" do
|
|
43
|
+
@backup.new_resource.should eql(@new_resource)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
describe "for cases when we don't want to back anything up" do
|
|
47
|
+
|
|
48
|
+
before(:each) do
|
|
49
|
+
@backup.should_not_receive(:do_backup)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
it "should not attempt to backup a file if :backup is false" do
|
|
53
|
+
@new_resource.should_receive(:backup).at_least(:once).and_return(false)
|
|
54
|
+
@backup.backup!
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it "should not attempt to backup a file if :backup == 0" do
|
|
58
|
+
@new_resource.should_receive(:backup).at_least(:once).and_return(0)
|
|
59
|
+
@backup.backup!
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it "should not attempt to backup a file if it does not exist" do
|
|
63
|
+
@new_resource.should_receive(:backup).at_least(:once).and_return(1)
|
|
64
|
+
File.should_receive(:exist?).with(tempfile.path).at_least(:once).and_return(false)
|
|
65
|
+
@backup.backup!
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
describe "for cases when we want to back things up" do
|
|
71
|
+
before(:each) do
|
|
72
|
+
@backup.should_receive(:do_backup)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
describe "when the number of backups is specified as 1" do
|
|
76
|
+
before(:each) do
|
|
77
|
+
@new_resource.should_receive(:backup).at_least(:once).and_return(1)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
it "should not delete anything if this is the only backup" do
|
|
81
|
+
@backup.should_receive(:sorted_backup_files).and_return(['a'])
|
|
82
|
+
@backup.should_not_receive(:delete_backup)
|
|
83
|
+
@backup.backup!
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it "should keep only 1 backup copy" do
|
|
87
|
+
@backup.should_receive(:sorted_backup_files).and_return(['a', 'b', 'c'])
|
|
88
|
+
@backup.should_receive(:delete_backup).with('b')
|
|
89
|
+
@backup.should_receive(:delete_backup).with('c')
|
|
90
|
+
@backup.backup!
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
describe "when the number of backups is specified as 2" do
|
|
95
|
+
before(:each) do
|
|
96
|
+
@new_resource.should_receive(:backup).at_least(:once).and_return(2)
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
it "should not delete anything if we only have one other backup" do
|
|
100
|
+
@backup.should_receive(:sorted_backup_files).and_return(['a', 'b'])
|
|
101
|
+
@backup.should_not_receive(:delete_backup)
|
|
102
|
+
@backup.backup!
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
it "should keep only 2 backup copies" do
|
|
106
|
+
@backup.should_receive(:sorted_backup_files).and_return(['a', 'b', 'c', 'd'])
|
|
107
|
+
@backup.should_receive(:delete_backup).with('c')
|
|
108
|
+
@backup.should_receive(:delete_backup).with('d')
|
|
109
|
+
@backup.backup!
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
describe "backup_filename" do
|
|
115
|
+
it "should return a timestamped path" do
|
|
116
|
+
@backup.should_receive(:path).and_return('/a/b/c.txt')
|
|
117
|
+
@backup.send(:backup_filename).should =~ %r|^/a/b/c.txt.chef-\d{14}$|
|
|
118
|
+
end
|
|
119
|
+
it "should strip the drive letter off for windows" do
|
|
120
|
+
@backup.should_receive(:path).and_return('c:\a\b\c.txt')
|
|
121
|
+
@backup.send(:backup_filename).should =~ %r|^\\a\\b\\c.txt.chef-\d{14}$|
|
|
122
|
+
end
|
|
123
|
+
it "should strip the drive letter off for windows (with forwardslashes)" do
|
|
124
|
+
@backup.should_receive(:path).and_return('c:/a/b/c.txt')
|
|
125
|
+
@backup.send(:backup_filename).should =~ %r|^/a/b/c.txt.chef-\d{14}$|
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
describe "backup_path" do
|
|
130
|
+
it "uses the file's directory when Chef::Config[:file_backup_path] is nil" do
|
|
131
|
+
@backup.should_receive(:path).and_return('/a/b/c.txt')
|
|
132
|
+
Chef::Config[:file_backup_path] = nil
|
|
133
|
+
@backup.send(:backup_path).should =~ %r|^/a/b/c.txt.chef-\d{14}$|
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
it "uses the configured Chef::Config[:file_backup_path]" do
|
|
137
|
+
@backup.should_receive(:path).and_return('/a/b/c.txt')
|
|
138
|
+
Chef::Config[:file_backup_path] = '/backupdir'
|
|
139
|
+
@backup.send(:backup_path).should =~ %r|^/backupdir[\\/]+a/b/c.txt.chef-\d{14}$|
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
it "uses the configured Chef::Config[:file_backup_path] and strips the drive on windows" do
|
|
143
|
+
@backup.should_receive(:path).and_return('c:\\a\\b\\c.txt')
|
|
144
|
+
Chef::Config[:file_backup_path] = 'c:\backupdir'
|
|
145
|
+
@backup.send(:backup_path).should =~ %r|^c:\\backupdir[\\/]+a\\b\\c.txt.chef-\d{14}$|
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
end
|