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
|
@@ -17,7 +17,6 @@
|
|
|
17
17
|
#
|
|
18
18
|
|
|
19
19
|
require 'spec_helper'
|
|
20
|
-
require 'support/shared/unit/file_system_support'
|
|
21
20
|
require 'chef/chef_fs/file_system'
|
|
22
21
|
require 'chef/chef_fs/file_pattern'
|
|
23
22
|
|
|
@@ -35,7 +34,7 @@ describe Chef::ChefFS::FileSystem do
|
|
|
35
34
|
list_should_yield_paths(fs, '/a', '/a')
|
|
36
35
|
end
|
|
37
36
|
it '/a/b' do
|
|
38
|
-
list_should_yield_paths(fs, '/a/b')
|
|
37
|
+
list_should_yield_paths(fs, '/a/b', '/a/b')
|
|
39
38
|
end
|
|
40
39
|
it '/*' do
|
|
41
40
|
list_should_yield_paths(fs, '/*', '/')
|
|
@@ -105,7 +104,7 @@ describe Chef::ChefFS::FileSystem do
|
|
|
105
104
|
end
|
|
106
105
|
it 'nonexistent /a/ab/blah/bjork' do
|
|
107
106
|
no_blocking_calls_allowed
|
|
108
|
-
list_should_yield_paths(fs, '/a/ab/blah/bjork')
|
|
107
|
+
list_should_yield_paths(fs, '/a/ab/blah/bjork', '/a/ab/blah/bjork')
|
|
109
108
|
end
|
|
110
109
|
end
|
|
111
110
|
|
data/spec/unit/client_spec.rb
CHANGED
|
@@ -232,7 +232,7 @@ shared_examples_for Chef::Client do
|
|
|
232
232
|
@client.should_receive(:run_started)
|
|
233
233
|
@client.should_receive(:run_completed_successfully)
|
|
234
234
|
|
|
235
|
-
if(Chef::Config[:client_fork])
|
|
235
|
+
if(Chef::Config[:client_fork] && !windows?)
|
|
236
236
|
require 'stringio'
|
|
237
237
|
if(Chef::Config[:pipe_node])
|
|
238
238
|
pipe_sim = StringIO.new
|
|
@@ -263,6 +263,25 @@ shared_examples_for Chef::Client do
|
|
|
263
263
|
end
|
|
264
264
|
end
|
|
265
265
|
|
|
266
|
+
it "should remove the run_lock on failure of #load_node" do
|
|
267
|
+
@run_lock = mock("Chef::RunLock", :acquire => true)
|
|
268
|
+
Chef::RunLock.stub!(:new).and_return(@run_lock)
|
|
269
|
+
|
|
270
|
+
@events = mock("Chef::EventDispatch::Dispatcher").as_null_object
|
|
271
|
+
Chef::EventDispatch::Dispatcher.stub!(:new).and_return(@events)
|
|
272
|
+
|
|
273
|
+
# @events is created on Chef::Client.new, so we need to recreate it after mocking
|
|
274
|
+
@client = Chef::Client.new
|
|
275
|
+
@client.stub!(:load_node).and_raise(Exception)
|
|
276
|
+
@run_lock.should_receive(:release)
|
|
277
|
+
if(Chef::Config[:client_fork] && !windows?)
|
|
278
|
+
@client.should_receive(:fork) do |&block|
|
|
279
|
+
block.call
|
|
280
|
+
end
|
|
281
|
+
end
|
|
282
|
+
lambda { @client.run }.should raise_error(Exception)
|
|
283
|
+
end
|
|
284
|
+
|
|
266
285
|
describe "when notifying other objects of the status of the chef run" do
|
|
267
286
|
before do
|
|
268
287
|
Chef::Client.clear_notifications
|
data/spec/unit/config_spec.rb
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Adam Jacob (<adam@opscode.com>)
|
|
3
|
+
# Author:: Kyle Goodwin (<kgoodwin@primerevenue.com>)
|
|
3
4
|
# Copyright:: Copyright (c) 2008 Opscode, Inc.
|
|
4
5
|
# License:: Apache License, Version 2.0
|
|
5
6
|
#
|
|
@@ -17,6 +18,7 @@
|
|
|
17
18
|
#
|
|
18
19
|
|
|
19
20
|
require 'spec_helper'
|
|
21
|
+
require 'chef/exceptions'
|
|
20
22
|
|
|
21
23
|
describe Chef::Config do
|
|
22
24
|
before(:all) do
|
|
@@ -24,42 +26,36 @@ describe Chef::Config do
|
|
|
24
26
|
@original_env = { 'HOME' => ENV['HOME'], 'SYSTEMDRIVE' => ENV['SYSTEMDRIVE'], 'HOMEPATH' => ENV['HOMEPATH'], 'USERPROFILE' => ENV['USERPROFILE'] }
|
|
25
27
|
end
|
|
26
28
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
Chef::Config.
|
|
29
|
+
describe "config attribute writer: chef_server_url" do
|
|
30
|
+
before do
|
|
31
|
+
Chef::Config.chef_server_url = "https://junglist.gen.nz"
|
|
30
32
|
end
|
|
31
33
|
|
|
32
|
-
it "
|
|
33
|
-
Chef::Config.
|
|
34
|
+
it "sets the server url" do
|
|
35
|
+
Chef::Config.chef_server_url.should == "https://junglist.gen.nz"
|
|
34
36
|
end
|
|
35
37
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
context "when the url has a leading space" do
|
|
39
|
+
before do
|
|
40
|
+
Chef::Config.chef_server_url = " https://junglist.gen.nz"
|
|
41
|
+
end
|
|
39
42
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
+
it "strips the space from the url when setting" do
|
|
44
|
+
Chef::Config.chef_server_url.should == "https://junglist.gen.nz"
|
|
45
|
+
end
|
|
43
46
|
|
|
44
|
-
it "should set the role url" do
|
|
45
|
-
Chef::Config.role_url.should == "https://junglist.gen.nz"
|
|
46
47
|
end
|
|
47
|
-
end
|
|
48
48
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
it_behaves_like "server URL"
|
|
55
|
-
end
|
|
49
|
+
context "when the url is a frozen string" do
|
|
50
|
+
before do
|
|
51
|
+
Chef::Config.chef_server_url = " https://junglist.gen.nz".freeze
|
|
52
|
+
end
|
|
56
53
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
54
|
+
it "strips the space from the url when setting without raising an error" do
|
|
55
|
+
Chef::Config.chef_server_url.should == "https://junglist.gen.nz"
|
|
56
|
+
end
|
|
60
57
|
end
|
|
61
|
-
|
|
62
|
-
it_behaves_like "server URL"
|
|
58
|
+
|
|
63
59
|
end
|
|
64
60
|
|
|
65
61
|
describe "when configuring formatters" do
|
|
@@ -106,14 +102,6 @@ describe Chef::Config do
|
|
|
106
102
|
|
|
107
103
|
end
|
|
108
104
|
|
|
109
|
-
context "when the url is a frozen string" do
|
|
110
|
-
before do
|
|
111
|
-
Chef::Config.chef_server_url = " https://junglist.gen.nz".freeze
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
it_behaves_like "server URL"
|
|
115
|
-
end
|
|
116
|
-
|
|
117
105
|
describe "class method: manage_secret_key" do
|
|
118
106
|
before do
|
|
119
107
|
Chef::FileCache.stub!(:load).and_return(true)
|
|
@@ -131,7 +119,7 @@ describe Chef::Config do
|
|
|
131
119
|
end
|
|
132
120
|
|
|
133
121
|
it "should not generate and store a chef server cookie id" do
|
|
134
|
-
Chef::FileCache.should_not_receive(:store).with("chef_server_cookie_id", /\w{40}/)
|
|
122
|
+
Chef::FileCache.should_not_receive(:store).with("chef_server_cookie_id", /\w{40}/)
|
|
135
123
|
Chef::Config.manage_secret_key
|
|
136
124
|
end
|
|
137
125
|
end
|
|
@@ -165,19 +153,7 @@ describe Chef::Config do
|
|
|
165
153
|
end
|
|
166
154
|
end
|
|
167
155
|
|
|
168
|
-
describe "class method:
|
|
169
|
-
it "should not log an appropriate deprecation info message" do
|
|
170
|
-
Chef::Log.should_not_receive(:info).with("DEPRECATION: openid_providers will be removed, please use authorized_openid_providers").and_return(true)
|
|
171
|
-
Chef::Config.openid_providers = %w{opscode.com junglist.gen.nz}
|
|
172
|
-
end
|
|
173
|
-
|
|
174
|
-
it "should internally configure authorized_openid_providers with the value given" do
|
|
175
|
-
Chef::Config.should_receive(:configure).and_return(%w{opscode.com junglist.gen.nz})
|
|
176
|
-
Chef::Config.openid_providers = %w{opscode.com junglist.gen.nz}
|
|
177
|
-
end
|
|
178
|
-
end
|
|
179
|
-
|
|
180
|
-
describe "class method: plaform_specific_path" do
|
|
156
|
+
describe "class method: plaform_specific_path" do
|
|
181
157
|
it "should return given path on non-windows systems" do
|
|
182
158
|
platform_mock :unix do
|
|
183
159
|
path = "/etc/chef/cookbooks"
|
|
@@ -230,13 +206,19 @@ describe Chef::Config do
|
|
|
230
206
|
end
|
|
231
207
|
|
|
232
208
|
it "Chef::Config[:data_bag_path] defaults to /var/chef/data_bags" do
|
|
233
|
-
data_bag_path =
|
|
234
|
-
"
|
|
209
|
+
data_bag_path =
|
|
210
|
+
Chef::Config.platform_specific_path("/var/chef/data_bags")
|
|
211
|
+
Chef::Config[:data_bag_path].should == data_bag_path
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
it "Chef::Config[:environment_path] defaults to /var/chef/environments" do
|
|
215
|
+
environment_path = if windows?
|
|
216
|
+
"C:\\chef\\environments"
|
|
235
217
|
else
|
|
236
|
-
"/var/chef/
|
|
218
|
+
"/var/chef/environments"
|
|
237
219
|
end
|
|
238
220
|
|
|
239
|
-
Chef::Config[:
|
|
221
|
+
Chef::Config[:environment_path].should == environment_path
|
|
240
222
|
end
|
|
241
223
|
end
|
|
242
224
|
|
|
@@ -261,6 +243,42 @@ describe Chef::Config do
|
|
|
261
243
|
end
|
|
262
244
|
end
|
|
263
245
|
|
|
246
|
+
describe "Chef::Config[:encrypted_data_bag_secret]" do
|
|
247
|
+
db_secret_default_path =
|
|
248
|
+
Chef::Config.platform_specific_path("/etc/chef/encrypted_data_bag_secret")
|
|
249
|
+
|
|
250
|
+
let(:db_secret_default_path){ db_secret_default_path }
|
|
251
|
+
|
|
252
|
+
before do
|
|
253
|
+
File.stub(:exist?).with(db_secret_default_path).and_return(secret_exists)
|
|
254
|
+
# ugh...the only way to properly test this since the conditional
|
|
255
|
+
# is evaluated at file load/require time.
|
|
256
|
+
$LOADED_FEATURES.delete_if{|f| f =~ /chef\/config\.rb/}
|
|
257
|
+
require 'chef/config'
|
|
258
|
+
end
|
|
259
|
+
|
|
260
|
+
context "#{db_secret_default_path} exists" do
|
|
261
|
+
let(:secret_exists) { true }
|
|
262
|
+
it "sets the value to #{db_secret_default_path}" do
|
|
263
|
+
Chef::Config[:encrypted_data_bag_secret].should eq db_secret_default_path
|
|
264
|
+
end
|
|
265
|
+
end
|
|
266
|
+
|
|
267
|
+
context "#{db_secret_default_path} does not exist" do
|
|
268
|
+
let(:secret_exists) { false }
|
|
269
|
+
it "sets the value to nil" do
|
|
270
|
+
Chef::Config[:encrypted_data_bag_secret].should be_nil
|
|
271
|
+
end
|
|
272
|
+
end
|
|
273
|
+
end
|
|
274
|
+
|
|
275
|
+
describe "Chef::Config[:log_location]" do
|
|
276
|
+
it "raises ConfigurationError when log_location directory is missing" do
|
|
277
|
+
missing_path = "/tmp/non-existing-dir/file"
|
|
278
|
+
expect{Chef::Config.log_location = missing_path}.to raise_error Chef::Exceptions::ConfigurationError
|
|
279
|
+
end
|
|
280
|
+
end
|
|
281
|
+
|
|
264
282
|
after(:each) do
|
|
265
283
|
Chef::Config.configuration = @original_config
|
|
266
284
|
end
|
|
@@ -63,6 +63,7 @@ describe Chef::CookbookSynchronizer do
|
|
|
63
63
|
"checksum" => "abc456" }
|
|
64
64
|
@cookbook_a_manifest["attributes"] = [ @cookbook_a_default_attrs ]
|
|
65
65
|
@cookbook_a_manifest["templates"] = [{"path" => "templates/default/apache2.conf.erb", "url" => "http://chef.example.com/ffffff"}]
|
|
66
|
+
@cookbook_a_manifest["files"] = [{"path" => "files/default/megaman.conf", "url" => "http://chef.example.com/megaman.conf"}]
|
|
66
67
|
@cookbook_a.manifest = @cookbook_a_manifest
|
|
67
68
|
@cookbook_manifest["cookbook_a"] = @cookbook_a
|
|
68
69
|
|
|
@@ -102,7 +103,7 @@ describe Chef::CookbookSynchronizer do
|
|
|
102
103
|
before do
|
|
103
104
|
# Would rather not stub out methods on the test subject, but setting up
|
|
104
105
|
# the state is a PITA and tests for this behavior are above.
|
|
105
|
-
@synchronizer.
|
|
106
|
+
@synchronizer.stub!(:clear_obsoleted_cookbooks)
|
|
106
107
|
|
|
107
108
|
@server_api = mock("Chef::REST (mock)")
|
|
108
109
|
@file_cache = mock("Chef::FileCache (mock)")
|
|
@@ -162,6 +163,53 @@ describe Chef::CookbookSynchronizer do
|
|
|
162
163
|
@synchronizer.sync_cookbooks
|
|
163
164
|
end
|
|
164
165
|
|
|
166
|
+
context "Chef::Config[:no_lazy_load] is true" do
|
|
167
|
+
before do
|
|
168
|
+
Chef::Config[:no_lazy_load] = true
|
|
169
|
+
@synchronizer = Chef::CookbookSynchronizer.new(@cookbook_manifest, @events)
|
|
170
|
+
@synchronizer.stub!(:server_api).and_return(@server_api)
|
|
171
|
+
@synchronizer.stub!(:cache).and_return(@file_cache)
|
|
172
|
+
@synchronizer.stub!(:clear_obsoleted_cookbooks)
|
|
173
|
+
|
|
174
|
+
@cookbook_a_file_default_tempfile = mock("Tempfile for cookbook_a megaman.conf file",
|
|
175
|
+
:path => "/tmp/cookbook_a_file_default_tempfile")
|
|
176
|
+
@cookbook_a_template_default_tempfile = mock("Tempfile for cookbook_a apache.conf.erb template",
|
|
177
|
+
:path => "/tmp/cookbook_a_template_default_tempfile")
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
after do
|
|
181
|
+
Chef::Config[:no_lazy_load] = false
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
it "fetches templates and cookbook files" do
|
|
185
|
+
@file_cache.should_receive(:has_key?).
|
|
186
|
+
with("cookbooks/cookbook_a/files/default/megaman.conf").
|
|
187
|
+
and_return(false)
|
|
188
|
+
@file_cache.should_receive(:has_key?).
|
|
189
|
+
with("cookbooks/cookbook_a/templates/default/apache2.conf.erb").
|
|
190
|
+
and_return(false)
|
|
191
|
+
|
|
192
|
+
@server_api.should_receive(:get_rest).
|
|
193
|
+
with('http://chef.example.com/megaman.conf', true).
|
|
194
|
+
and_return(@cookbook_a_file_default_tempfile)
|
|
195
|
+
@file_cache.should_receive(:move_to).
|
|
196
|
+
with("/tmp/cookbook_a_file_default_tempfile", "cookbooks/cookbook_a/files/default/megaman.conf")
|
|
197
|
+
@file_cache.should_receive(:load).
|
|
198
|
+
with("cookbooks/cookbook_a/files/default/megaman.conf", false).
|
|
199
|
+
and_return("/file-cache/cookbooks/cookbook_a/default/megaman.conf")
|
|
200
|
+
|
|
201
|
+
@server_api.should_receive(:get_rest).
|
|
202
|
+
with('http://chef.example.com/ffffff', true).
|
|
203
|
+
and_return(@cookbook_a_template_default_tempfile)
|
|
204
|
+
@file_cache.should_receive(:move_to).
|
|
205
|
+
with("/tmp/cookbook_a_template_default_tempfile", "cookbooks/cookbook_a/templates/default/apache2.conf.erb")
|
|
206
|
+
@file_cache.should_receive(:load).
|
|
207
|
+
with("cookbooks/cookbook_a/templates/default/apache2.conf.erb", false).
|
|
208
|
+
and_return("/file-cache/cookbooks/cookbook_a/templates/default/apache2.conf.erb")
|
|
209
|
+
|
|
210
|
+
@synchronizer.sync_cookbooks
|
|
211
|
+
end
|
|
212
|
+
end
|
|
165
213
|
end
|
|
166
214
|
|
|
167
215
|
context "when the cache contains outdated files" do
|
|
@@ -33,9 +33,15 @@ describe Chef::Cookbook::SyntaxCheck do
|
|
|
33
33
|
@defn_files = %w{client.rb server.rb}.map { |f| File.join(cookbook_path, 'definitions', f)}
|
|
34
34
|
@recipes = %w{default.rb gigantor.rb one.rb}.map { |f| File.join(cookbook_path, 'recipes', f) }
|
|
35
35
|
@ruby_files = @attr_files + @defn_files + @recipes
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
basenames = %w{ helpers_via_partial_test.erb
|
|
37
|
+
helper_test.erb
|
|
38
|
+
openldap_stuff.conf.erb
|
|
39
|
+
openldap_variable_stuff.conf.erb
|
|
40
|
+
test.erb
|
|
41
|
+
some_windows_line_endings.erb
|
|
42
|
+
all_windows_line_endings.erb
|
|
43
|
+
no_windows_line_endings.erb }
|
|
44
|
+
@template_files = basenames.map { |f| File.join(cookbook_path, 'templates', 'default', f)}
|
|
39
45
|
end
|
|
40
46
|
|
|
41
47
|
it "creates a syntax checker given the cookbook name when Chef::Config.cookbook_path is set" do
|
|
@@ -128,6 +134,25 @@ describe Chef::Cookbook::SyntaxCheck do
|
|
|
128
134
|
|
|
129
135
|
end
|
|
130
136
|
|
|
137
|
+
describe "and an ignored file has a syntax error" do
|
|
138
|
+
before do
|
|
139
|
+
cookbook_path = File.join(CHEF_SPEC_DATA, 'cookbooks', 'ignorken')
|
|
140
|
+
Chef::Config[:cookbook_path] = File.dirname(cookbook_path)
|
|
141
|
+
syntax_check.cookbook_path.replace(cookbook_path)
|
|
142
|
+
@ruby_files = [File.join(cookbook_path, 'recipes/default.rb')]
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
it "shows that ignored ruby files do not require a syntax check" do
|
|
146
|
+
syntax_check.untested_ruby_files.sort.should == @ruby_files.sort
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
it "does not indicate that a ruby file has a syntax error" do
|
|
150
|
+
syntax_check.validate_ruby_files.should be_true
|
|
151
|
+
syntax_check.untested_ruby_files.should be_empty
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
end
|
|
155
|
+
|
|
131
156
|
end
|
|
132
157
|
|
|
133
158
|
describe "and the files have been syntax checked previously" do
|
|
@@ -66,8 +66,9 @@ describe Chef::CookbookLoader do
|
|
|
66
66
|
seen[0].should == "angrybash"
|
|
67
67
|
seen[1].should == "apache2"
|
|
68
68
|
seen[2].should == "borken"
|
|
69
|
-
seen[3].should == "
|
|
70
|
-
seen[4].should == "
|
|
69
|
+
seen[3].should == "ignorken"
|
|
70
|
+
seen[4].should == "java"
|
|
71
|
+
seen[5].should == "openldap"
|
|
71
72
|
end
|
|
72
73
|
end
|
|
73
74
|
|
data/spec/unit/daemon_spec.rb
CHANGED
|
@@ -154,30 +154,30 @@ describe Chef::Daemon do
|
|
|
154
154
|
FileUtils.should_receive(:rm).with("/var/run/chef/chef-client.pid")
|
|
155
155
|
Chef::Daemon.remove_pid_file
|
|
156
156
|
end
|
|
157
|
-
|
|
157
|
+
|
|
158
158
|
|
|
159
159
|
end
|
|
160
160
|
|
|
161
161
|
describe "when the pid file exists and the process is forked" do
|
|
162
|
-
|
|
162
|
+
|
|
163
163
|
before do
|
|
164
164
|
File.stub!(:exists?).with("/var/run/chef/chef-client.pid").and_return(true)
|
|
165
165
|
Chef::Daemon.stub!(:forked?) { true }
|
|
166
166
|
end
|
|
167
|
-
|
|
167
|
+
|
|
168
168
|
it "should not remove the file" do
|
|
169
169
|
FileUtils.should_not_receive(:rm)
|
|
170
170
|
Chef::Daemon.remove_pid_file
|
|
171
171
|
end
|
|
172
|
-
|
|
172
|
+
|
|
173
173
|
end
|
|
174
|
-
|
|
174
|
+
|
|
175
175
|
describe "when the pid file exists and the process is not forked" do
|
|
176
176
|
before do
|
|
177
177
|
File.stub!(:exists?).with("/var/run/chef/chef-client.pid").and_return(true)
|
|
178
178
|
Chef::Daemon.stub!(:forked?) { false }
|
|
179
179
|
end
|
|
180
|
-
|
|
180
|
+
|
|
181
181
|
it "should remove the file" do
|
|
182
182
|
FileUtils.should_receive(:rm)
|
|
183
183
|
Chef::Daemon.remove_pid_file
|
|
@@ -295,7 +295,7 @@ describe Chef::Daemon do
|
|
|
295
295
|
it "should log an appropriate error message and fail miserably" do
|
|
296
296
|
Process.stub!(:initgroups).and_raise(Errno::EPERM)
|
|
297
297
|
error = "Operation not permitted"
|
|
298
|
-
if RUBY_PLATFORM.match("solaris2")
|
|
298
|
+
if RUBY_PLATFORM.match("solaris2") || RUBY_PLATFORM.match("aix")
|
|
299
299
|
error = "Not owner"
|
|
300
300
|
end
|
|
301
301
|
Chef::Application.should_receive(:fatal!).with("Permission denied when trying to change 999:999 to 501:20. #{error}")
|
data/spec/unit/data_bag_spec.rb
CHANGED
|
@@ -155,6 +155,13 @@ describe Chef::DataBag do
|
|
|
155
155
|
data_bag.should == { 'bar' => { 'id' => 'bar', 'name' => 'Bob Bar' }, 'baz' => { 'id' => 'baz', 'name' => 'John Baz' }}
|
|
156
156
|
end
|
|
157
157
|
|
|
158
|
+
it "should return the data bag list" do
|
|
159
|
+
File.should_receive(:directory?).with('/var/chef/data_bags').and_return(true)
|
|
160
|
+
Dir.should_receive(:glob).and_return(["/var/chef/data_bags/foo", "/var/chef/data_bags/bar"])
|
|
161
|
+
data_bag_list = Chef::DataBag.list
|
|
162
|
+
data_bag_list.should == { 'bar' => 'bar', 'foo' => 'foo' }
|
|
163
|
+
end
|
|
164
|
+
|
|
158
165
|
it 'should raise an error if the configured data_bag_path is invalid' do
|
|
159
166
|
File.should_receive(:directory?).with('/var/chef/data_bags').and_return(false)
|
|
160
167
|
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Serdar Sutay (<serdar@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
|
+
require 'chef/deprecation/warnings'
|
|
21
|
+
|
|
22
|
+
describe Chef::Deprecation do
|
|
23
|
+
|
|
24
|
+
# Support code for Chef::Deprecation
|
|
25
|
+
|
|
26
|
+
def self.class_from_string(str)
|
|
27
|
+
str.split('::').inject(Object) do |mod, class_name|
|
|
28
|
+
mod.const_get(class_name)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
module DeprecatedMethods
|
|
33
|
+
def deprecated_method(value)
|
|
34
|
+
@value = value
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def get_value
|
|
38
|
+
@value
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
class TestClass
|
|
43
|
+
extend Chef::Deprecation::Warnings
|
|
44
|
+
include DeprecatedMethods
|
|
45
|
+
add_deprecation_warnings_for(DeprecatedMethods.instance_methods)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
method_snapshot_file = File.join(CHEF_SPEC_DATA, "file-providers-method-snapshot-chef-11-4.json")
|
|
49
|
+
method_snapshot = JSON.parse(File.open(method_snapshot_file).read())
|
|
50
|
+
|
|
51
|
+
method_snapshot.each do |class_name, old_methods|
|
|
52
|
+
class_object = class_from_string(class_name)
|
|
53
|
+
current_methods = class_object.public_instance_methods.map(&:to_sym)
|
|
54
|
+
|
|
55
|
+
it "defines all methods on #{class_object} that were available in 11.0" do
|
|
56
|
+
old_methods.each do |old_method|
|
|
57
|
+
current_methods.should include(old_method.to_sym)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
context 'deprecation warning messages' do
|
|
63
|
+
before(:each) do
|
|
64
|
+
@warning_output = [ ]
|
|
65
|
+
Chef::Log.stub!(:warn) { |msg| @warning_output << msg }
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
it 'should be enabled for deprecated methods' do
|
|
69
|
+
TestClass.new.deprecated_method(10)
|
|
70
|
+
@warning_output.should_not be_empty
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
it 'should contain stack trace' do
|
|
74
|
+
TestClass.new.deprecated_method(10)
|
|
75
|
+
@warning_output.join("").include?(".rb").should be_true
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
it 'deprecated methods should still be called' do
|
|
80
|
+
test_instance = TestClass.new
|
|
81
|
+
test_instance.deprecated_method(10)
|
|
82
|
+
test_instance.get_value.should == 10
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
end
|
|
86
|
+
|