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
|
@@ -0,0 +1,40 @@
|
|
|
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
|
+
require 'spec_helper'
|
|
20
|
+
|
|
21
|
+
describe Chef::Provider::CookbookFile::Content do
|
|
22
|
+
|
|
23
|
+
let(:new_resource) { mock('Chef::Resource::CookbookFile (new)', :cookbook_name => 'apache2', :cookbook => 'apache2') }
|
|
24
|
+
let(:content) do
|
|
25
|
+
@run_context = mock('Chef::RunContext')
|
|
26
|
+
@current_resource = mock('Chef::Resource::CookbookFile (current)')
|
|
27
|
+
Chef::Provider::CookbookFile::Content.new(new_resource, @current_resource, @run_context)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "prefers the explicit cookbook name on the resource to the implicit one" do
|
|
31
|
+
new_resource.stub!(:cookbook).and_return('nginx')
|
|
32
|
+
content.send(:resource_cookbook).should == 'nginx'
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "falls back to the implicit cookbook name on the resource" do
|
|
36
|
+
content.send(:resource_cookbook).should == 'apache2'
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
end
|
|
40
|
+
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Daniel DeLeo (<dan@opscode.com>)
|
|
3
|
-
#
|
|
3
|
+
# Author:: Lamont Granquist (<lamont@opscode.com>)
|
|
4
|
+
# Copyright:: Copyright (c) 2009-2013 Opscode, Inc.
|
|
4
5
|
# License:: Apache License, Version 2.0
|
|
5
6
|
#
|
|
6
7
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -19,196 +20,38 @@
|
|
|
19
20
|
require 'spec_helper'
|
|
20
21
|
require 'ostruct'
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
before do
|
|
24
|
-
Chef::FileAccessControl.any_instance.stub(:set_all)
|
|
25
|
-
Chef::FileAccessControl.any_instance.stub(:modified?).and_return(true)
|
|
26
|
-
@cookbook_repo = File.expand_path(File.join(CHEF_SPEC_DATA, "cookbooks"))
|
|
27
|
-
Chef::Cookbook::FileVendor.on_create { |manifest| Chef::Cookbook::FileSystemFileVendor.new(manifest, @cookbook_repo) }
|
|
28
|
-
|
|
29
|
-
@node = Chef::Node.new
|
|
30
|
-
@events = Chef::EventDispatch::Dispatcher.new
|
|
31
|
-
cl = Chef::CookbookLoader.new(@cookbook_repo)
|
|
32
|
-
cl.load_cookbooks
|
|
33
|
-
@cookbook_collection = Chef::CookbookCollection.new(cl)
|
|
34
|
-
@run_context = Chef::RunContext.new(@node, @cookbook_collection, @events)
|
|
35
|
-
|
|
36
|
-
@new_resource = Chef::Resource::CookbookFile.new('apache2_module_conf_generate.pl', @run_context)
|
|
37
|
-
@new_resource.cookbook_name = 'apache2'
|
|
38
|
-
@provider = Chef::Provider::CookbookFile.new(@new_resource, @run_context)
|
|
39
|
-
|
|
40
|
-
@file_content=<<-EXPECTED
|
|
41
|
-
# apache2_module_conf_generate.pl
|
|
42
|
-
# this is just here for show.
|
|
43
|
-
EXPECTED
|
|
44
|
-
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
it "prefers the explicit cookbook name on the resource to the implicit one" do
|
|
48
|
-
@new_resource.cookbook('nginx')
|
|
49
|
-
@provider.resource_cookbook.should == 'nginx'
|
|
50
|
-
end
|
|
23
|
+
require 'support/shared/unit/provider/file'
|
|
51
24
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
it "sets the current resources path to the same as the new resource" do
|
|
65
|
-
@new_resource.path('/tmp/file')
|
|
66
|
-
@provider.load_current_resource
|
|
67
|
-
@provider.current_resource.path.should == '/tmp/file'
|
|
68
|
-
end
|
|
69
|
-
end
|
|
25
|
+
describe Chef::Provider::CookbookFile do
|
|
26
|
+
let(:node) { double('Chef::Node') }
|
|
27
|
+
let(:events) { double('Chef::Events').as_null_object } # mock all the methods
|
|
28
|
+
let(:run_context) { double('Chef::RunContext', :node => node, :events => events) }
|
|
29
|
+
let(:enclosing_directory) {
|
|
30
|
+
canonicalize_path(File.expand_path(File.join(CHEF_SPEC_DATA, "templates")))
|
|
31
|
+
}
|
|
32
|
+
let(:resource_path) {
|
|
33
|
+
canonicalize_path(File.expand_path(File.join(enclosing_directory, "seattle.txt")))
|
|
34
|
+
}
|
|
70
35
|
|
|
71
|
-
|
|
72
|
-
before do
|
|
73
|
-
@new_resource.path("/tmp/no/such/intermediate/path/file.txt")
|
|
74
|
-
end
|
|
36
|
+
# Subject
|
|
75
37
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
38
|
+
let(:provider) do
|
|
39
|
+
provider = described_class.new(resource, run_context)
|
|
40
|
+
provider.stub!(:content).and_return(content)
|
|
41
|
+
provider
|
|
79
42
|
end
|
|
80
|
-
describe "when the file doesn't yet exist" do
|
|
81
|
-
before do
|
|
82
|
-
@install_to = Dir.tmpdir + '/apache2_modconf.pl'
|
|
83
|
-
|
|
84
|
-
@current_resource = @new_resource.dup
|
|
85
|
-
@provider.current_resource = @current_resource
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
after { ::File.exist?(File.dirname(@install_to)) && FileUtils.rm_rf(@install_to) }
|
|
89
|
-
|
|
90
|
-
it "loads the current file state" do
|
|
91
|
-
@provider.load_current_resource
|
|
92
|
-
@provider.current_resource.checksum.should be_nil
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
it "looks up a file from the cookbook cache" do
|
|
96
|
-
expected = CHEF_SPEC_DATA + "/cookbooks/apache2/files/default/apache2_module_conf_generate.pl"
|
|
97
|
-
@provider.file_cache_location.should == expected
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
it "installs the file from the cookbook cache" do
|
|
101
|
-
@new_resource.path(@install_to)
|
|
102
|
-
@provider.should_receive(:backup_new_resource)
|
|
103
|
-
@provider.stub!(:update_new_file_state)
|
|
104
|
-
@provider.run_action(:create)
|
|
105
|
-
actual = IO.read(@install_to)
|
|
106
|
-
actual.should == @file_content
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
it "installs the file for create_if_missing --> from Provider::File" do
|
|
110
|
-
@new_resource.path(@install_to)
|
|
111
|
-
@provider.should_receive(:backup_new_resource)
|
|
112
|
-
@provider.stub!(:update_new_file_state)
|
|
113
|
-
@provider.run_action(:create_if_missing)
|
|
114
|
-
actual = IO.read(@install_to)
|
|
115
|
-
actual.should == @file_content
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
it "marks the resource as updated by the last action --> being tested in the converge framework" do
|
|
119
|
-
@new_resource.path(@install_to)
|
|
120
|
-
@provider.stub!(:backup_new_resource)
|
|
121
|
-
@provider.stub!(:set_file_access_controls)
|
|
122
|
-
@provider.stub!(:update_new_file_state)
|
|
123
|
-
@provider.run_action(:create)
|
|
124
|
-
@new_resource.should be_updated
|
|
125
|
-
@new_resource.should be_updated_by_last_action
|
|
126
|
-
end
|
|
127
43
|
|
|
44
|
+
let(:resource) do
|
|
45
|
+
resource = Chef::Resource::CookbookFile.new("seattle", @run_context)
|
|
46
|
+
resource.path(resource_path)
|
|
47
|
+
resource.cookbook_name = 'apache2'
|
|
48
|
+
resource
|
|
128
49
|
end
|
|
129
50
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
@tempfile = Tempfile.open('cookbook_file_spec')
|
|
133
|
-
@new_resource.path(@target_file = @tempfile.path)
|
|
134
|
-
@tempfile.puts "the wrong content"
|
|
135
|
-
@tempfile.close
|
|
136
|
-
@current_resource = @new_resource.dup
|
|
137
|
-
@provider.current_resource = @current_resource
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
it "stages the cookbook to a temporary file" do
|
|
141
|
-
# prevents file backups where we might not have write access
|
|
142
|
-
@provider.should_receive(:backup_new_resource)
|
|
143
|
-
@new_resource.path(@install_to)
|
|
144
|
-
@provider.should_receive(:deploy_tempfile)
|
|
145
|
-
@provider.run_action(:create)
|
|
146
|
-
end
|
|
147
|
-
|
|
148
|
-
it "overwrites it when the create action is called" do
|
|
149
|
-
@provider.should_receive(:backup_new_resource)
|
|
150
|
-
@provider.run_action(:create)
|
|
151
|
-
actual = IO.read(@target_file)
|
|
152
|
-
actual.should == @file_content
|
|
153
|
-
end
|
|
154
|
-
|
|
155
|
-
it "marks the resource as updated by the last action" do
|
|
156
|
-
@provider.should_receive(:backup_new_resource)
|
|
157
|
-
@provider.run_action(:create)
|
|
158
|
-
@new_resource.should be_updated
|
|
159
|
-
@new_resource.should be_updated_by_last_action
|
|
160
|
-
end
|
|
161
|
-
|
|
162
|
-
it "doesn't overwrite when the create if missing action is called" do
|
|
163
|
-
@provider.should_not_receive(:set_file_access_controls)
|
|
164
|
-
@provider.run_action(:create_if_missing)
|
|
165
|
-
actual = IO.read(@target_file)
|
|
166
|
-
actual.should == "the wrong content\n"
|
|
167
|
-
end
|
|
168
|
-
|
|
169
|
-
it "doesn't mark the resource as updated by the action for create_if_missing" do
|
|
170
|
-
@provider.run_action(:create_if_missing)
|
|
171
|
-
@new_resource.should_not be_updated
|
|
172
|
-
@new_resource.should_not be_updated_by_last_action
|
|
173
|
-
end
|
|
174
|
-
|
|
175
|
-
after { @tempfile && @tempfile.close! }
|
|
51
|
+
let(:content) do
|
|
52
|
+
content = mock('Chef::Provider::CookbookFile::Content')
|
|
176
53
|
end
|
|
177
54
|
|
|
178
|
-
|
|
179
|
-
before do
|
|
180
|
-
Chef::FileAccessControl.any_instance.stub(:modified?).and_return(false)
|
|
181
|
-
@tempfile = Tempfile.open('cookbook_file_spec')
|
|
182
|
-
# CHEF-2991: We handle CRLF very poorly and we don't know what line endings
|
|
183
|
-
# our source file is going to have, so we use binary mode to preserve CRLF if needed.
|
|
184
|
-
source_file = CHEF_SPEC_DATA + "/cookbooks/apache2/files/default/apache2_module_conf_generate.pl"
|
|
185
|
-
@tempfile.binmode unless File.open(source_file, "rb") { |f| f.read =~ /\r/ }
|
|
186
|
-
@new_resource.path(@target_file = @tempfile.path)
|
|
187
|
-
@tempfile.write(@file_content)
|
|
188
|
-
@tempfile.close
|
|
189
|
-
@current_resource = @new_resource.dup
|
|
190
|
-
@provider.current_resource = @current_resource
|
|
191
|
-
end
|
|
192
|
-
|
|
193
|
-
after { @tempfile && @tempfile.unlink}
|
|
55
|
+
it_behaves_like Chef::Provider::File
|
|
194
56
|
|
|
195
|
-
it "checks access control but does not alter content when action is create" do
|
|
196
|
-
@provider.should_receive(:set_all_access_controls)
|
|
197
|
-
@provider.should_not_receive(:stage_file_to_tmpdir)
|
|
198
|
-
@provider.run_action(:create)
|
|
199
|
-
end
|
|
200
|
-
|
|
201
|
-
it "does not mark the resource as updated by the last action" do
|
|
202
|
-
@provider.run_action(:create)
|
|
203
|
-
@new_resource.should_not be_updated
|
|
204
|
-
@new_resource.should_not be_updated_by_last_action
|
|
205
|
-
end
|
|
206
|
-
|
|
207
|
-
it "does not alter content or access control when action is create if missing" do
|
|
208
|
-
@provider.should_not_receive(:set_all_access_controls)
|
|
209
|
-
@provider.should_not_receive(:stage_file_to_tmpdir)
|
|
210
|
-
@provider.run_action(:create_if_missing)
|
|
211
|
-
end
|
|
212
|
-
|
|
213
|
-
end
|
|
214
57
|
end
|
|
@@ -87,7 +87,7 @@ CRONTAB
|
|
|
87
87
|
before :each do
|
|
88
88
|
@status = mock("Status", :exitstatus => 0)
|
|
89
89
|
@provider.stub!(:run_command).and_return(@status)
|
|
90
|
-
@tempfile = mock("foo", :path => "/tmp/foo", :close => true
|
|
90
|
+
@tempfile = mock("foo", :path => "/tmp/foo", :close => true)
|
|
91
91
|
Tempfile.stub!(:new).and_return(@tempfile)
|
|
92
92
|
@tempfile.should_receive(:flush)
|
|
93
93
|
@tempfile.should_receive(:chmod).with(420)
|
|
@@ -51,13 +51,13 @@ describe Chef::Provider::Deploy::Revision do
|
|
|
51
51
|
@provider.release_path.should == @expected_release_dir
|
|
52
52
|
end
|
|
53
53
|
|
|
54
|
-
it "stores the release dir in the file cache
|
|
54
|
+
it "stores the release dir in the file cache in the cleanup step" do
|
|
55
55
|
FileUtils.stub!(:mkdir_p)
|
|
56
56
|
FileUtils.stub!(:cp_r)
|
|
57
|
-
@provider.
|
|
57
|
+
@provider.cleanup!
|
|
58
58
|
@provider.stub!(:release_slug).and_return("73219b87e977d9c7ba1aa57e9ad1d88fa91a0ec2")
|
|
59
59
|
@provider.load_current_resource
|
|
60
|
-
@provider.
|
|
60
|
+
@provider.cleanup!
|
|
61
61
|
second_release = "/my/deploy/dir/releases/73219b87e977d9c7ba1aa57e9ad1d88fa91a0ec2"
|
|
62
62
|
|
|
63
63
|
@provider.all_releases.should == [@expected_release_dir,second_release]
|
|
@@ -66,29 +66,37 @@ describe Chef::Provider::Deploy::Revision do
|
|
|
66
66
|
it "removes a release from the file cache when it's used again in another release and append it to the end" do
|
|
67
67
|
FileUtils.stub!(:mkdir_p)
|
|
68
68
|
FileUtils.stub!(:cp_r)
|
|
69
|
-
@provider.
|
|
69
|
+
@provider.cleanup!
|
|
70
70
|
@provider.stub!(:release_slug).and_return("73219b87e977d9c7ba1aa57e9ad1d88fa91a0ec2")
|
|
71
71
|
@provider.load_current_resource
|
|
72
|
-
@provider.
|
|
72
|
+
@provider.cleanup!
|
|
73
73
|
second_release = "/my/deploy/dir/releases/73219b87e977d9c7ba1aa57e9ad1d88fa91a0ec2"
|
|
74
74
|
@provider.all_releases.should == [@expected_release_dir,second_release]
|
|
75
|
-
@provider.
|
|
75
|
+
@provider.cleanup!
|
|
76
76
|
|
|
77
77
|
@provider.stub!(:release_slug).and_return("8a3195bf3efa246f743c5dfa83683201880f935c")
|
|
78
78
|
@provider.load_current_resource
|
|
79
|
-
@provider.
|
|
79
|
+
@provider.cleanup!
|
|
80
80
|
@provider.all_releases.should == [second_release, @expected_release_dir]
|
|
81
81
|
end
|
|
82
82
|
|
|
83
83
|
it "removes a release from the file cache when it's deleted by :cleanup!" do
|
|
84
|
-
%w{first second third fourth fifth
|
|
85
|
-
|
|
84
|
+
release_paths = %w{first second third fourth fifth}.map do |release_name|
|
|
85
|
+
"/my/deploy/dir/releases/#{release_name}"
|
|
86
|
+
end
|
|
87
|
+
release_paths.each do |release_path|
|
|
88
|
+
@provider.send(:release_created, release_path)
|
|
86
89
|
end
|
|
87
|
-
@provider.all_releases.should ==
|
|
90
|
+
@provider.all_releases.should == release_paths
|
|
88
91
|
|
|
89
92
|
FileUtils.stub!(:rm_rf)
|
|
90
93
|
@provider.cleanup!
|
|
91
|
-
|
|
94
|
+
|
|
95
|
+
expected_release_paths = (%w{second third fourth fifth} << @resource.revision).map do |release_name|
|
|
96
|
+
"/my/deploy/dir/releases/#{release_name}"
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
@provider.all_releases.should == expected_release_paths
|
|
92
100
|
end
|
|
93
101
|
|
|
94
102
|
it "regenerates the file cache if it's not available" do
|
|
@@ -324,11 +324,11 @@ describe Chef::Provider::Deploy do
|
|
|
324
324
|
@provider.copy_cached_repo
|
|
325
325
|
end
|
|
326
326
|
|
|
327
|
-
it "calls the internal callback :release_created when
|
|
327
|
+
it "calls the internal callback :release_created when cleaning up the releases" do
|
|
328
328
|
FileUtils.stub!(:mkdir_p)
|
|
329
329
|
FileUtils.stub!(:cp_r)
|
|
330
330
|
@provider.should_receive(:release_created)
|
|
331
|
-
@provider.
|
|
331
|
+
@provider.cleanup!
|
|
332
332
|
end
|
|
333
333
|
|
|
334
334
|
it "chowns the whole release dir to user and group specified in the resource" do
|
|
@@ -59,7 +59,7 @@ describe Chef::Provider::Directory do
|
|
|
59
59
|
end
|
|
60
60
|
|
|
61
61
|
it "describes the access mode as a String of octal integers" do
|
|
62
|
-
File.stub!(:
|
|
62
|
+
File.stub!(:exists?).and_return(true)
|
|
63
63
|
File.should_receive(:stat).and_return(mock_stat)
|
|
64
64
|
@directory.load_current_resource
|
|
65
65
|
@directory.current_resource.mode.should == "0755"
|
|
@@ -67,7 +67,7 @@ describe Chef::Provider::Directory do
|
|
|
67
67
|
|
|
68
68
|
context "when user and group are specified with UID/GID" do
|
|
69
69
|
it "describes the current owner and group as UID and GID" do
|
|
70
|
-
File.stub!(:
|
|
70
|
+
File.stub!(:exists?).and_return(true)
|
|
71
71
|
File.should_receive(:stat).and_return(mock_stat)
|
|
72
72
|
@directory.load_current_resource
|
|
73
73
|
@directory.current_resource.path.should eql(@new_resource.path)
|
|
@@ -81,43 +81,43 @@ describe Chef::Provider::Directory do
|
|
|
81
81
|
end
|
|
82
82
|
|
|
83
83
|
# Unix only for now. While file security attribute reporting for windows is
|
|
84
|
-
# disabled, unix and windows differ in the number of
|
|
84
|
+
# disabled, unix and windows differ in the number of exists? calls that are
|
|
85
85
|
# made by the provider.
|
|
86
86
|
it "should create a new directory on create, setting updated to true", :unix_only do
|
|
87
87
|
@new_resource.path "/tmp/foo"
|
|
88
88
|
|
|
89
|
-
File.should_receive(:
|
|
89
|
+
File.should_receive(:exists?).at_least(:once).and_return(false)
|
|
90
90
|
File.should_receive(:directory?).with("/tmp").and_return(true)
|
|
91
91
|
Dir.should_receive(:mkdir).with(@new_resource.path).once.and_return(true)
|
|
92
92
|
|
|
93
|
-
@directory.should_receive(:
|
|
94
|
-
@directory.stub!(:
|
|
93
|
+
@directory.should_receive(:do_acl_changes)
|
|
94
|
+
@directory.stub!(:do_selinux)
|
|
95
95
|
@directory.run_action(:create)
|
|
96
96
|
@directory.new_resource.should be_updated
|
|
97
97
|
end
|
|
98
98
|
|
|
99
|
-
it "should raise an exception if the parent directory does not exist and recursive is false" do
|
|
99
|
+
it "should raise an exception if the parent directory does not exist and recursive is false" do
|
|
100
100
|
@new_resource.path "/tmp/some/dir"
|
|
101
101
|
@new_resource.recursive false
|
|
102
|
-
lambda { @directory.run_action(:create) }.should raise_error(Chef::Exceptions::EnclosingDirectoryDoesNotExist)
|
|
102
|
+
lambda { @directory.run_action(:create) }.should raise_error(Chef::Exceptions::EnclosingDirectoryDoesNotExist)
|
|
103
103
|
end
|
|
104
104
|
|
|
105
105
|
# Unix only for now. While file security attribute reporting for windows is
|
|
106
|
-
# disabled, unix and windows differ in the number of
|
|
106
|
+
# disabled, unix and windows differ in the number of exists? calls that are
|
|
107
107
|
# made by the provider.
|
|
108
108
|
it "should create a new directory when parent directory does not exist if recursive is true and permissions are correct", :unix_only do
|
|
109
109
|
@new_resource.path "/path/to/dir"
|
|
110
110
|
@new_resource.recursive true
|
|
111
|
-
File.should_receive(:
|
|
111
|
+
File.should_receive(:exists?).with(@new_resource.path).ordered.and_return(false)
|
|
112
112
|
|
|
113
|
-
File.should_receive(:
|
|
114
|
-
File.should_receive(:
|
|
113
|
+
File.should_receive(:exists?).with('/path/to').ordered.and_return(false)
|
|
114
|
+
File.should_receive(:exists?).with('/path').ordered.and_return(true)
|
|
115
115
|
File.should_receive(:writable?).with('/path').ordered.and_return(true)
|
|
116
|
-
File.should_receive(:
|
|
116
|
+
File.should_receive(:exists?).with(@new_resource.path).ordered.and_return(false)
|
|
117
117
|
|
|
118
|
-
FileUtils.should_receive(:mkdir_p).with(@new_resource.path).and_return(true)
|
|
119
|
-
@directory.should_receive(:
|
|
120
|
-
@directory.stub!(:
|
|
118
|
+
FileUtils.should_receive(:mkdir_p).with(@new_resource.path).and_return(true)
|
|
119
|
+
@directory.should_receive(:do_acl_changes)
|
|
120
|
+
@directory.stub!(:do_selinux)
|
|
121
121
|
@directory.run_action(:create)
|
|
122
122
|
@new_resource.should be_updated
|
|
123
123
|
end
|
|
@@ -131,16 +131,16 @@ describe Chef::Provider::Directory do
|
|
|
131
131
|
end
|
|
132
132
|
|
|
133
133
|
# Unix only for now. While file security attribute reporting for windows is
|
|
134
|
-
# disabled, unix and windows differ in the number of
|
|
134
|
+
# disabled, unix and windows differ in the number of exists? calls that are
|
|
135
135
|
# made by the provider.
|
|
136
136
|
it "should not create the directory if it already exists", :unix_only do
|
|
137
137
|
stub_file_cstats
|
|
138
138
|
@new_resource.path "/tmp/foo"
|
|
139
|
-
File.should_receive(:directory?).
|
|
139
|
+
File.should_receive(:directory?).at_least(:once).and_return(true)
|
|
140
140
|
File.should_receive(:writable?).with("/tmp").and_return(true)
|
|
141
|
-
File.should_receive(:
|
|
141
|
+
File.should_receive(:exists?).at_least(:once).and_return(true)
|
|
142
142
|
Dir.should_not_receive(:mkdir).with(@new_resource.path)
|
|
143
|
-
@directory.should_receive(:
|
|
143
|
+
@directory.should_receive(:do_acl_changes)
|
|
144
144
|
@directory.run_action(:create)
|
|
145
145
|
end
|
|
146
146
|
|
|
@@ -152,14 +152,14 @@ describe Chef::Provider::Directory do
|
|
|
152
152
|
end
|
|
153
153
|
|
|
154
154
|
it "should raise an exception if it cannot delete the directory due to bad permissions" do
|
|
155
|
-
File.stub!(:
|
|
155
|
+
File.stub!(:exists?).and_return(true)
|
|
156
156
|
File.stub!(:writable?).and_return(false)
|
|
157
157
|
lambda { @directory.run_action(:delete) }.should raise_error(RuntimeError)
|
|
158
158
|
end
|
|
159
159
|
|
|
160
160
|
it "should take no action when deleting a target directory that does not exist" do
|
|
161
161
|
@new_resource.path "/an/invalid/path"
|
|
162
|
-
File.stub!(:
|
|
162
|
+
File.stub!(:exists?).and_return(false)
|
|
163
163
|
Dir.should_not_receive(:delete).with(@new_resource.path)
|
|
164
164
|
@directory.run_action(:delete)
|
|
165
165
|
@directory.new_resource.should_not be_updated
|
|
@@ -168,7 +168,7 @@ describe Chef::Provider::Directory do
|
|
|
168
168
|
it "should raise an exception when deleting a directory when target directory is a file" do
|
|
169
169
|
stub_file_cstats
|
|
170
170
|
@new_resource.path "/an/invalid/path"
|
|
171
|
-
File.stub!(:
|
|
171
|
+
File.stub!(:exists?).and_return(true)
|
|
172
172
|
File.should_receive(:directory?).and_return(false)
|
|
173
173
|
Dir.should_not_receive(:delete).with(@new_resource.path)
|
|
174
174
|
lambda { @directory.run_action(:delete) }.should raise_error(RuntimeError)
|