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,71 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Xabier de Zuazo (xabier@onddo.com)
|
|
3
|
+
# Copyright:: Copyright (c) 2013 Onddo Labs, SL.
|
|
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/exceptions'
|
|
21
|
+
|
|
22
|
+
describe Chef::Provider::Ifconfig::Redhat do
|
|
23
|
+
before do
|
|
24
|
+
@node = Chef::Node.new
|
|
25
|
+
@cookbook_collection = Chef::CookbookCollection.new([])
|
|
26
|
+
@events = Chef::EventDispatch::Dispatcher.new
|
|
27
|
+
@run_context = Chef::RunContext.new(@node, @cookbook_collection, @events)
|
|
28
|
+
#This new_resource can be called anything --> it is not the same as in ifconfig.rb
|
|
29
|
+
@new_resource = Chef::Resource::Ifconfig.new("10.0.0.1", @run_context)
|
|
30
|
+
@new_resource.mask "255.255.254.0"
|
|
31
|
+
@new_resource.metric "1"
|
|
32
|
+
@new_resource.mtu "1500"
|
|
33
|
+
@new_resource.device "eth0"
|
|
34
|
+
@provider = Chef::Provider::Ifconfig::Redhat.new(@new_resource, @run_context)
|
|
35
|
+
@current_resource = Chef::Resource::Ifconfig.new("10.0.0.1", @run_context)
|
|
36
|
+
|
|
37
|
+
status = mock("Status", :exitstatus => 0)
|
|
38
|
+
@provider.instance_variable_set("@status", status)
|
|
39
|
+
@provider.current_resource = @current_resource
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
describe "generate_config for action_add" do
|
|
43
|
+
|
|
44
|
+
it "should write network-script for centos" do
|
|
45
|
+
@provider.stub!(:load_current_resource)
|
|
46
|
+
@provider.stub!(:run_command)
|
|
47
|
+
config_filename = "/etc/sysconfig/network-scripts/ifcfg-#{@new_resource.device}"
|
|
48
|
+
config_file = StringIO.new
|
|
49
|
+
File.should_receive(:new).with(config_filename, "w").and_return(config_file)
|
|
50
|
+
|
|
51
|
+
@provider.run_action(:add)
|
|
52
|
+
config_file.string.should match(/^\s*DEVICE=eth0\s*$/)
|
|
53
|
+
config_file.string.should match(/^\s*IPADDR=10\.0\.0\.1\s*$/)
|
|
54
|
+
config_file.string.should match(/^\s*NETMASK=255\.255\.254\.0\s*$/)
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
describe "delete_config for action_delete" do
|
|
59
|
+
|
|
60
|
+
it "should delete network-script if it exists for centos" do
|
|
61
|
+
@current_resource.device @new_resource.device
|
|
62
|
+
@provider.stub!(:load_current_resource)
|
|
63
|
+
@provider.stub!(:run_command)
|
|
64
|
+
config_filename = "/etc/sysconfig/network-scripts/ifcfg-#{@new_resource.device}"
|
|
65
|
+
File.should_receive(:exist?).with(config_filename).and_return(true)
|
|
66
|
+
FileUtils.should_receive(:rm_f).with(config_filename, :verbose => false)
|
|
67
|
+
|
|
68
|
+
@provider.run_action(:delete)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
@@ -177,37 +177,4 @@ describe Chef::Provider::Ifconfig do
|
|
|
177
177
|
@new_resource.should_not be_updated
|
|
178
178
|
end
|
|
179
179
|
end
|
|
180
|
-
|
|
181
|
-
describe Chef::Provider::Ifconfig, "generate_config for action_add" do
|
|
182
|
-
#%w[ centos redhat fedora ].each do |platform|
|
|
183
|
-
|
|
184
|
-
it "should write network-script for centos" do
|
|
185
|
-
@provider.stub!(:load_current_resource)
|
|
186
|
-
@node.automatic_attrs[:platform] = "centos"
|
|
187
|
-
@provider.stub!(:run_command)
|
|
188
|
-
config_filename = "/etc/sysconfig/network-scripts/ifcfg-#{@new_resource.device}"
|
|
189
|
-
config_file = StringIO.new
|
|
190
|
-
File.should_receive(:new).with(config_filename, "w").and_return(config_file)
|
|
191
|
-
|
|
192
|
-
@provider.run_action(:add)
|
|
193
|
-
config_file.string.should match(/^\s*DEVICE=eth0\s*$/)
|
|
194
|
-
config_file.string.should match(/^\s*IPADDR=10.0.0.1\s*$/)
|
|
195
|
-
config_file.string.should match(/^\s*NETMASK=255.255.254.0\s*$/)
|
|
196
|
-
end
|
|
197
|
-
end
|
|
198
|
-
|
|
199
|
-
describe Chef::Provider::Ifconfig, "delete_config for action_delete" do
|
|
200
|
-
|
|
201
|
-
it "should delete network-script if it exists for centos" do
|
|
202
|
-
@node.automatic_attrs[:platform] = "centos"
|
|
203
|
-
@current_resource.device "eth0"
|
|
204
|
-
@provider.stub!(:load_current_resource)
|
|
205
|
-
@provider.stub!(:run_command)
|
|
206
|
-
config_filename = "/etc/sysconfig/network-scripts/ifcfg-#{@new_resource.device}"
|
|
207
|
-
File.should_receive(:exist?).with(config_filename).and_return(true)
|
|
208
|
-
FileUtils.should_receive(:rm_f).with(config_filename, :verbose => false)
|
|
209
|
-
|
|
210
|
-
@provider.run_action(:delete)
|
|
211
|
-
end
|
|
212
|
-
end
|
|
213
180
|
end
|
|
@@ -108,13 +108,18 @@ describe Chef::Provider::Mount::Mount do
|
|
|
108
108
|
it "does not expect the device to exist for tmpfs" do
|
|
109
109
|
@new_resource.fstype("tmpfs")
|
|
110
110
|
@new_resource.device("whatever")
|
|
111
|
-
lambda { @provider.load_current_resource() }.should_not raise_error
|
|
111
|
+
lambda { @provider.load_current_resource();@provider.mountable? }.should_not raise_error
|
|
112
112
|
end
|
|
113
113
|
|
|
114
114
|
it "does not expect the device to exist for Fuse filesystems" do
|
|
115
115
|
@new_resource.fstype("fuse")
|
|
116
116
|
@new_resource.device("nilfs#xxx")
|
|
117
|
-
lambda { @provider.load_current_resource() }.should_not raise_error
|
|
117
|
+
lambda { @provider.load_current_resource();@provider.mountable? }.should_not raise_error
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
it "does not expect the device to exist if it's none" do
|
|
121
|
+
@new_resource.device("none")
|
|
122
|
+
lambda { @provider.load_current_resource();@provider.mountable? }.should_not raise_error
|
|
118
123
|
end
|
|
119
124
|
|
|
120
125
|
it "should set mounted true if the mount point is found in the mounts list" do
|
|
@@ -216,6 +221,32 @@ describe Chef::Provider::Mount::Mount do
|
|
|
216
221
|
@provider.load_current_resource
|
|
217
222
|
@provider.current_resource.enabled.should be_false
|
|
218
223
|
end
|
|
224
|
+
|
|
225
|
+
it "should not mangle the mount options if the device in fstab is a symlink" do
|
|
226
|
+
target = "/dev/mapper/target"
|
|
227
|
+
options = "rw,noexec,noauto"
|
|
228
|
+
|
|
229
|
+
::File.stub!(:symlink?).with(@new_resource.device).and_return(true)
|
|
230
|
+
::File.stub!(:readlink).with(@new_resource.device).and_return(target)
|
|
231
|
+
|
|
232
|
+
fstab = "#{@new_resource.device} #{@new_resource.mount_point} #{@new_resource.fstype} #{options} 1 2\n"
|
|
233
|
+
::File.stub!(:foreach).with("/etc/fstab").and_yield fstab
|
|
234
|
+
@provider.load_current_resource
|
|
235
|
+
@provider.current_resource.options.should eq(options.split(','))
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
it "should not mangle the mount options if the symlink target is in fstab" do
|
|
239
|
+
target = "/dev/mapper/target"
|
|
240
|
+
options = "rw,noexec,noauto"
|
|
241
|
+
|
|
242
|
+
::File.stub!(:symlink?).with(@new_resource.device).and_return(true)
|
|
243
|
+
::File.stub!(:readlink).with(@new_resource.device).and_return(target)
|
|
244
|
+
|
|
245
|
+
fstab = "#{target} #{@new_resource.mount_point} #{@new_resource.fstype} #{options} 1 2\n"
|
|
246
|
+
::File.stub!(:foreach).with("/etc/fstab").and_yield fstab
|
|
247
|
+
@provider.load_current_resource
|
|
248
|
+
@provider.current_resource.options.should eq(options.split(','))
|
|
249
|
+
end
|
|
219
250
|
end
|
|
220
251
|
|
|
221
252
|
context "after the mount's state has been discovered" do
|
|
@@ -99,7 +99,10 @@ describe Chef::Provider::Mount::Windows do
|
|
|
99
99
|
end
|
|
100
100
|
|
|
101
101
|
it "should mount the filesystem if it is not mounted" do
|
|
102
|
-
@vol.should_receive(:add).with(@new_resource.device
|
|
102
|
+
@vol.should_receive(:add).with(:remote => @new_resource.device,
|
|
103
|
+
:username => @new_resource.username,
|
|
104
|
+
:domainname => @new_resource.domain,
|
|
105
|
+
:password => @new_resource.password)
|
|
103
106
|
@provider.mount_fs
|
|
104
107
|
end
|
|
105
108
|
|
|
@@ -51,7 +51,7 @@ describe Chef::Provider::Mount do
|
|
|
51
51
|
|
|
52
52
|
it "should not mount the filesystem if it is mounted" do
|
|
53
53
|
@current_resource.stub!(:mounted).and_return(true)
|
|
54
|
-
@provider.should_not_receive(:mount_fs)
|
|
54
|
+
@provider.should_not_receive(:mount_fs)
|
|
55
55
|
@provider.run_action(:mount)
|
|
56
56
|
@new_resource.should_not be_updated_by_last_action
|
|
57
57
|
end
|
|
@@ -68,7 +68,7 @@ describe Chef::Provider::Mount do
|
|
|
68
68
|
|
|
69
69
|
it "should not umount the filesystem if it is not mounted" do
|
|
70
70
|
@current_resource.stub!(:mounted).and_return(false)
|
|
71
|
-
@provider.should_not_receive(:umount_fs)
|
|
71
|
+
@provider.should_not_receive(:umount_fs)
|
|
72
72
|
@provider.run_action(:umount)
|
|
73
73
|
@new_resource.should_not be_updated_by_last_action
|
|
74
74
|
end
|
|
@@ -108,14 +108,24 @@ describe Chef::Provider::Mount do
|
|
|
108
108
|
describe "when enabling the filesystem to be mounted" do
|
|
109
109
|
it "should enable the mount if it isn't enable" do
|
|
110
110
|
@current_resource.stub!(:enabled).and_return(false)
|
|
111
|
-
@provider.
|
|
111
|
+
@provider.should_not_receive(:mount_options_unchanged?)
|
|
112
|
+
@provider.should_receive(:enable_fs).and_return(true)
|
|
112
113
|
@provider.run_action(:enable)
|
|
113
114
|
@new_resource.should be_updated_by_last_action
|
|
114
115
|
end
|
|
115
116
|
|
|
116
|
-
it "should
|
|
117
|
+
it "should enable the mount if it is enabled and mount options have changed" do
|
|
117
118
|
@current_resource.stub!(:enabled).and_return(true)
|
|
118
|
-
@provider.
|
|
119
|
+
@provider.should_receive(:mount_options_unchanged?).and_return(false)
|
|
120
|
+
@provider.should_receive(:enable_fs).and_return(true)
|
|
121
|
+
@provider.run_action(:enable)
|
|
122
|
+
@new_resource.should be_updated_by_last_action
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
it "should not enable the mount if it is enabled and mount options have not changed" do
|
|
126
|
+
@current_resource.stub!(:enabled).and_return(true)
|
|
127
|
+
@provider.should_receive(:mount_options_unchanged?).and_return(true)
|
|
128
|
+
@provider.should_not_receive(:enable_fs).and_return(true)
|
|
119
129
|
@provider.run_action(:enable)
|
|
120
130
|
@new_resource.should_not be_updated_by_last_action
|
|
121
131
|
end
|
|
@@ -131,7 +141,7 @@ describe Chef::Provider::Mount do
|
|
|
131
141
|
|
|
132
142
|
it "should not disable the mount if it isn't enabled" do
|
|
133
143
|
@current_resource.stub!(:enabled).and_return(false)
|
|
134
|
-
@provider.should_not_receive(:disable_fs)
|
|
144
|
+
@provider.should_not_receive(:disable_fs)
|
|
135
145
|
@provider.run_action(:disable)
|
|
136
146
|
@new_resource.should_not be_updated_by_last_action
|
|
137
147
|
end
|
|
@@ -230,6 +230,50 @@ EOF
|
|
|
230
230
|
lambda { @provider.candidate_version }.should raise_error(Chef::Exceptions::Package)
|
|
231
231
|
end
|
|
232
232
|
|
|
233
|
+
it "should find the candidate_version if a category is specifed and there are category duplicates" do
|
|
234
|
+
output = <<EOF
|
|
235
|
+
Searching...
|
|
236
|
+
[ Results for search key : git ]
|
|
237
|
+
[ Applications found : 14 ]
|
|
238
|
+
|
|
239
|
+
* app-misc/digitemp [ Masked ]
|
|
240
|
+
Latest version available: 3.5.0
|
|
241
|
+
Latest version installed: [ Not Installed ]
|
|
242
|
+
Size of files: 261 kB
|
|
243
|
+
Homepage: http://www.digitemp.com/ http://www.ibutton.com/
|
|
244
|
+
Description: Temperature logging and reporting using Dallas Semiconductor's iButtons and 1-Wire protocol
|
|
245
|
+
License: GPL-2
|
|
246
|
+
|
|
247
|
+
* app-misc/git
|
|
248
|
+
Latest version available: 4.3.20
|
|
249
|
+
Latest version installed: [ Not Installed ]
|
|
250
|
+
Size of files: 416 kB
|
|
251
|
+
Homepage: http://www.gnu.org/software/git/
|
|
252
|
+
Description: GNU Interactive Tools - increase speed and efficiency of most daily task
|
|
253
|
+
License: GPL-2
|
|
254
|
+
|
|
255
|
+
* dev-util/git
|
|
256
|
+
Latest version available: 1.6.0.6
|
|
257
|
+
Latest version installed: ignore
|
|
258
|
+
Size of files: 2,725 kB
|
|
259
|
+
Homepage: http://git.or.cz/
|
|
260
|
+
Description: GIT - the stupid content tracker, the revision control system heavily used by the Linux kernel team
|
|
261
|
+
License: GPL-2
|
|
262
|
+
|
|
263
|
+
* dev-util/gitosis [ Masked ]
|
|
264
|
+
Latest version available: 0.2_p20080825
|
|
265
|
+
Latest version installed: [ Not Installed ]
|
|
266
|
+
Size of files: 31 kB
|
|
267
|
+
Homepage: http://eagain.net/gitweb/?p=gitosis.git;a=summary
|
|
268
|
+
Description: gitosis -- software for hosting git repositories
|
|
269
|
+
License: GPL-2
|
|
270
|
+
EOF
|
|
271
|
+
|
|
272
|
+
@status = mock("Status", :exitstatus => 0)
|
|
273
|
+
@provider = Chef::Provider::Package::Portage.new(@new_resource, @run_context)
|
|
274
|
+
@provider.should_receive(:popen4).and_yield(nil, nil, StringIO.new(output), nil).and_return(@status)
|
|
275
|
+
@provider.candidate_version.should == "1.6.0.6"
|
|
276
|
+
end
|
|
233
277
|
end
|
|
234
278
|
|
|
235
279
|
describe Chef::Provider::Package::Portage, "install_package" do
|
|
@@ -95,6 +95,49 @@ describe Chef::Provider::Package::Rubygems::CurrentGemEnvironment do
|
|
|
95
95
|
@gem_env.candidate_version_from_remote(Gem::Dependency.new('rspec', '>= 0')).should == Gem::Version.new('1.3.0')
|
|
96
96
|
end
|
|
97
97
|
|
|
98
|
+
it "finds a matching gem candidate version on rubygems 2.0.0+" do
|
|
99
|
+
dep = Gem::Dependency.new('rspec', '>= 0')
|
|
100
|
+
dep_installer = Gem::DependencyInstaller.new
|
|
101
|
+
@gem_env.stub!(:dependency_installer).and_return(dep_installer)
|
|
102
|
+
best_gem = mock("best gem match", :spec => gemspec("rspec", Gem::Version.new("1.3.0")), :source => "https://rubygems.org")
|
|
103
|
+
available_set = mock("Gem::AvailableSet test double")
|
|
104
|
+
available_set.should_receive(:pick_best!)
|
|
105
|
+
available_set.should_receive(:set).and_return([best_gem])
|
|
106
|
+
dep_installer.should_receive(:find_gems_with_sources).with(dep).and_return(available_set)
|
|
107
|
+
@gem_env.candidate_version_from_remote(Gem::Dependency.new('rspec', '>= 0')).should == Gem::Version.new('1.3.0')
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
context "when rubygems was upgraded from 1.8->2.0" do
|
|
111
|
+
# https://github.com/rubygems/rubygems/issues/404
|
|
112
|
+
# tl;dr rubygems 1.8 and 2.0 can both be in the load path, which means that
|
|
113
|
+
# require "rubygems/format" will load even though rubygems 2.0 doesn't have
|
|
114
|
+
# that file.
|
|
115
|
+
|
|
116
|
+
before do
|
|
117
|
+
if defined?(Gem::Format)
|
|
118
|
+
# tests are running under rubygems 1.8, or 2.0 upgraded from 1.8
|
|
119
|
+
@remove_gem_format = false
|
|
120
|
+
else
|
|
121
|
+
Gem.const_set(:Format, Object.new)
|
|
122
|
+
@remove_gem_format = true
|
|
123
|
+
end
|
|
124
|
+
Gem::Package.stub!(:respond_to?).with(:open).and_return(false)
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
after do
|
|
128
|
+
if @remove_gem_format
|
|
129
|
+
Gem.send(:remove_const, :Format)
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
it "finds a matching gem candidate version on rubygems 2.0+ with some rubygems 1.8 code loaded" do
|
|
134
|
+
package = mock("Gem::Package", :spec => "a gemspec from package")
|
|
135
|
+
Gem::Package.should_receive(:new).with("/path/to/package.gem").and_return(package)
|
|
136
|
+
@gem_env.spec_from_file("/path/to/package.gem").should == "a gemspec from package"
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
end
|
|
140
|
+
|
|
98
141
|
it "gives the candidate version as nil if none is found" do
|
|
99
142
|
dep = Gem::Dependency.new('rspec', '>= 0')
|
|
100
143
|
latest = []
|
|
@@ -213,7 +256,7 @@ describe Chef::Provider::Package::Rubygems::AlternateGemEnvironment do
|
|
|
213
256
|
it "determines the installed versions of gems from the source index (part2: the unmockening)" do
|
|
214
257
|
$stdout.stub!(:write)
|
|
215
258
|
path_to_gem = if windows?
|
|
216
|
-
`where gem`.split[
|
|
259
|
+
`where gem`.split[1]
|
|
217
260
|
else
|
|
218
261
|
`which gem`.strip
|
|
219
262
|
end
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Trevor O (trevoro@joyent.com)
|
|
3
|
+
# Author:: Yukihiko Sawanobori (sawanoboriyu@higanworks.com)
|
|
3
4
|
# Copyright:: Copyright (c) 2012 Opscode
|
|
4
5
|
# License:: Apache License, Version 2.0
|
|
5
6
|
#
|
|
@@ -72,8 +73,8 @@ describe Chef::Provider::Package::SmartOS, "load_current_resource" do
|
|
|
72
73
|
|
|
73
74
|
it "run pkgin and install the package" do
|
|
74
75
|
out = OpenStruct.new(:stdout => nil)
|
|
75
|
-
@provider.should_receive(:shell_out!).with("pkg_info -E \"varnish*\"", {:env => nil, :returns=>[0,1]}).and_return(@shell_out)
|
|
76
|
-
@provider.should_receive(:shell_out!).with("pkgin -y install varnish-2.1.5nb2", {:env=>nil}).and_return(out)
|
|
76
|
+
@provider.should_receive(:shell_out!).with("/opt/local/sbin/pkg_info -E \"varnish*\"", {:env => nil, :returns=>[0,1]}).and_return(@shell_out)
|
|
77
|
+
@provider.should_receive(:shell_out!).with("/opt/local/bin/pkgin -y install varnish-2.1.5nb2", {:env=>nil}).and_return(out)
|
|
77
78
|
@provider.load_current_resource
|
|
78
79
|
@provider.install_package("varnish", "2.1.5nb2")
|
|
79
80
|
end
|
|
@@ -39,7 +39,6 @@ describe Chef::Provider::Package::Yum do
|
|
|
39
39
|
)
|
|
40
40
|
Chef::Provider::Package::Yum::YumCache.stub!(:instance).and_return(@yum_cache)
|
|
41
41
|
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
|
42
|
-
@stderr = StringIO.new
|
|
43
42
|
@pid = mock("PID")
|
|
44
43
|
end
|
|
45
44
|
|
|
@@ -542,7 +541,7 @@ describe Chef::Provider::Package::Yum do
|
|
|
542
541
|
it "should call action_upgrade in the parent if the candidate version is nil" do
|
|
543
542
|
@provider.load_current_resource
|
|
544
543
|
@current_resource = Chef::Resource::Package.new('cups')
|
|
545
|
-
@provider.candidate_version = nil
|
|
544
|
+
@provider.candidate_version = nil
|
|
546
545
|
@provider.should_not_receive(:upgrade_package)
|
|
547
546
|
@provider.action_upgrade
|
|
548
547
|
end
|
|
@@ -600,7 +599,7 @@ describe Chef::Provider::Package::Yum do
|
|
|
600
599
|
@provider.stub!(:output_of_command).and_return([@status, "", ""])
|
|
601
600
|
@provider.should_receive(:output_of_command).once.with(
|
|
602
601
|
"yum -d0 -e0 -y install emacs-1.0",
|
|
603
|
-
{}
|
|
602
|
+
{:timeout => Chef::Config[:yum_timeout]}
|
|
604
603
|
)
|
|
605
604
|
@provider.yum_command("yum -d0 -e0 -y install emacs-1.0")
|
|
606
605
|
end
|
|
@@ -610,7 +609,7 @@ describe Chef::Provider::Package::Yum do
|
|
|
610
609
|
@provider.stub!(:output_of_command).and_return([@status, "failure failure", "problem problem"])
|
|
611
610
|
@provider.should_receive(:output_of_command).once.with(
|
|
612
611
|
"yum -d0 -e0 -y install emacs-1.0",
|
|
613
|
-
{}
|
|
612
|
+
{:timeout => Chef::Config[:yum_timeout]}
|
|
614
613
|
)
|
|
615
614
|
lambda { @provider.yum_command("yum -d0 -e0 -y install emacs-1.0") }.should raise_error(Chef::Exceptions::Exec)
|
|
616
615
|
end
|
|
@@ -620,7 +619,7 @@ describe Chef::Provider::Package::Yum do
|
|
|
620
619
|
@provider.stub!(:output_of_command).and_return([@status, "error: %pre(demo-1-1.el5.centos.x86_64) scriptlet failed, exit status 2", ""])
|
|
621
620
|
@provider.should_receive(:output_of_command).once.with(
|
|
622
621
|
"yum -d0 -e0 -y install emacs-1.0",
|
|
623
|
-
{}
|
|
622
|
+
{:timeout => Chef::Config[:yum_timeout]}
|
|
624
623
|
)
|
|
625
624
|
# will still raise an exception, can't stub out the subsequent call
|
|
626
625
|
lambda { @provider.yum_command("yum -d0 -e0 -y install emacs-1.0") }.should raise_error(Chef::Exceptions::Exec)
|
|
@@ -631,7 +630,7 @@ describe Chef::Provider::Package::Yum do
|
|
|
631
630
|
@provider.stub!(:output_of_command).and_return([@status, "error: %post(demo-1-1.el5.centos.x86_64) scriptlet failed, exit status 2", ""])
|
|
632
631
|
@provider.should_receive(:output_of_command).twice.with(
|
|
633
632
|
"yum -d0 -e0 -y install emacs-1.0",
|
|
634
|
-
{}
|
|
633
|
+
{:timeout => Chef::Config[:yum_timeout]}
|
|
635
634
|
)
|
|
636
635
|
# will still raise an exception, can't stub out the subsequent call
|
|
637
636
|
lambda { @provider.yum_command("yum -d0 -e0 -y install emacs-1.0") }.should raise_error(Chef::Exceptions::Exec)
|
|
@@ -1155,7 +1154,7 @@ describe Chef::Provider::Package::Yum::RPMDbPackage do
|
|
|
1155
1154
|
|
|
1156
1155
|
describe "repoid" do
|
|
1157
1156
|
it "should return the source repository repoid" do
|
|
1158
|
-
@rpm_x.repoid.should be == "base"
|
|
1157
|
+
@rpm_x.repoid.should be == "base"
|
|
1159
1158
|
@rpm_y.repoid.should be == "extras"
|
|
1160
1159
|
@rpm_z.repoid.should be == "other"
|
|
1161
1160
|
end
|
|
@@ -1544,7 +1543,10 @@ describe Chef::Provider::Package::Yum::YumCache do
|
|
|
1544
1543
|
end
|
|
1545
1544
|
|
|
1546
1545
|
before(:each) do
|
|
1547
|
-
|
|
1546
|
+
@stdin = mock("STDIN", :nil_object => true)
|
|
1547
|
+
@stdout = mock("STDOUT", :nil_object => true)
|
|
1548
|
+
|
|
1549
|
+
@stdout_good = <<EOF
|
|
1548
1550
|
[option installonlypkgs] kernel kernel-bigmem kernel-enterprise
|
|
1549
1551
|
erlang-mochiweb 0 1.4.1 5.el5 x86_64 ['erlang-mochiweb = 1.4.1-5.el5', 'mochiweb = 1.4.1-5.el5'] i installed
|
|
1550
1552
|
zip 0 2.31 2.el5 x86_64 ['zip = 2.31-2.el5'] r base
|
|
@@ -1560,9 +1562,16 @@ znc-extra 0 0.098 1.el5 x86_64 [] a base
|
|
|
1560
1562
|
znc-modtcl 0 0.098 1.el5 x86_64 [] a base
|
|
1561
1563
|
znc-test.beta1 0 0.098 1.el5 x86_64 [] a extras
|
|
1562
1564
|
znc-test.test.beta1 0 0.098 1.el5 x86_64 [] a base
|
|
1565
|
+
EOF
|
|
1566
|
+
@stdout_bad_type = <<EOF
|
|
1567
|
+
zip 0 2.31 2.el5 x86_64 ['zip = 2.31-2.el5'] r base
|
|
1568
|
+
zlib 0 1.2.3 3 x86_64 ['zlib = 1.2.3-3', 'libz.so.1()(64bit)'] c base
|
|
1569
|
+
zlib-devel 0 1.2.3 3 i386 [] a extras
|
|
1570
|
+
zlib-devel 0 1.2.3 3 x86_64 ['zlib-devel = 1.2.3-3'] bad installed
|
|
1571
|
+
znc-modtcl 0 0.098 1.el5 x86_64 [] a base
|
|
1563
1572
|
EOF
|
|
1564
1573
|
|
|
1565
|
-
|
|
1574
|
+
@stdout_bad_separators = <<EOF
|
|
1566
1575
|
zip 0 2.31 2.el5 x86_64 ['zip = 2.31-2.el5'] r base
|
|
1567
1576
|
zlib 0 1.2.3 3 x86_64 ['zlib = 1.2.3-3', 'libz.so.1()(64bit)'] i base bad
|
|
1568
1577
|
zlib-devel 0 1.2.3 3 i386 [] a extras
|
|
@@ -1570,36 +1579,20 @@ bad zlib-devel 0 1.2.3 3 x86_64 ['zlib-devel = 1.2.3-3'] i installed
|
|
|
1570
1579
|
znc-modtcl 0 0.098 1.el5 x86_64 [] a base bad
|
|
1571
1580
|
EOF
|
|
1572
1581
|
|
|
1573
|
-
|
|
1574
|
-
zip 0 2.31 2.el5 x86_64 ['zip = 2.31-2.el5'] r base
|
|
1575
|
-
zlib 0 1.2.3 3 x86_64 ['zlib = 1.2.3-3', 'libz.so.1()(64bit)'] c base
|
|
1576
|
-
zlib-devel 0 1.2.3 3 i386 [] a extras
|
|
1577
|
-
zlib-devel 0 1.2.3 3 x86_64 ['zlib-devel = 1.2.3-3'] bad installed
|
|
1578
|
-
znc-modtcl 0 0.098 1.el5 x86_64 [] a base
|
|
1579
|
-
EOF
|
|
1582
|
+
@stdout_no_output = ""
|
|
1580
1583
|
|
|
1581
|
-
|
|
1584
|
+
@stderr = <<EOF
|
|
1582
1585
|
yum-dump Config Error: File contains no section headers.
|
|
1583
1586
|
file: file://///etc/yum.repos.d/CentOS-Base.repo, line: 12
|
|
1584
1587
|
'qeqwewe\n'
|
|
1585
1588
|
EOF
|
|
1586
|
-
|
|
1587
|
-
@status = mock("Status", :exitstatus => 0)
|
|
1588
|
-
@status_bad = mock("Status", :exitstatus => 1)
|
|
1589
|
-
@stdin = mock("STDIN", :nil_object => true)
|
|
1590
|
-
@stdout = mock("STDOUT", :nil_object => true)
|
|
1591
|
-
@stdout_good = yum_dump_good_output.split("\n")
|
|
1592
|
-
@stdout_bad_type = yum_dump_bad_output_type.split("\n")
|
|
1593
|
-
@stdout_bad_separators = yum_dump_bad_output_separators.split("\n")
|
|
1594
|
-
@stderr = mock("STDERR", :nil_object => true)
|
|
1595
|
-
@stderr.stub!(:readlines).and_return(yum_dump_error.split("\n"))
|
|
1596
|
-
@pid = mock("PID", :nil_object => true)
|
|
1589
|
+
@status = mock("Status", :exitstatus => 0, :stdin => @stdin, :stdout => @stdout_good, :stderr => @stderr)
|
|
1597
1590
|
|
|
1598
1591
|
# new singleton each time
|
|
1599
1592
|
Chef::Provider::Package::Yum::YumCache.reset_instance
|
|
1600
1593
|
@yc = Chef::Provider::Package::Yum::YumCache.instance
|
|
1601
1594
|
# load valid data
|
|
1602
|
-
@yc.stub!(:
|
|
1595
|
+
@yc.stub!(:shell_out!).and_return(@status)
|
|
1603
1596
|
end
|
|
1604
1597
|
|
|
1605
1598
|
describe "initialize" do
|
|
@@ -1618,7 +1611,7 @@ EOF
|
|
|
1618
1611
|
|
|
1619
1612
|
describe "refresh" do
|
|
1620
1613
|
it "should implicitly call yum-dump.py only once by default after being instantiated" do
|
|
1621
|
-
@yc.should_receive(:
|
|
1614
|
+
@yc.should_receive(:shell_out!).once
|
|
1622
1615
|
@yc.installed_version("zlib")
|
|
1623
1616
|
@yc.reset
|
|
1624
1617
|
@yc.installed_version("zlib")
|
|
@@ -1626,48 +1619,52 @@ EOF
|
|
|
1626
1619
|
|
|
1627
1620
|
it "should run yum-dump.py using the system python when next_refresh is for :all" do
|
|
1628
1621
|
@yc.reload
|
|
1629
|
-
@yc.should_receive(:
|
|
1622
|
+
@yc.should_receive(:shell_out!).with(%r{^/usr/bin/python .*/yum-dump.py --options --installed-provides$}, :timeout=>Chef::Config[:yum_timeout])
|
|
1630
1623
|
@yc.refresh
|
|
1631
1624
|
end
|
|
1632
1625
|
|
|
1633
1626
|
it "should run yum-dump.py with the installed flag when next_refresh is for :installed" do
|
|
1634
1627
|
@yc.reload_installed
|
|
1635
|
-
@yc.should_receive(:
|
|
1628
|
+
@yc.should_receive(:shell_out!).with(%r{^/usr/bin/python .*/yum-dump.py --installed$}, :timeout=>Chef::Config[:yum_timeout])
|
|
1636
1629
|
@yc.refresh
|
|
1637
1630
|
end
|
|
1638
1631
|
|
|
1639
1632
|
it "should run yum-dump.py with the all-provides flag when next_refresh is for :provides" do
|
|
1640
1633
|
@yc.reload_provides
|
|
1641
|
-
@yc.should_receive(:
|
|
1634
|
+
@yc.should_receive(:shell_out!).with(%r{^/usr/bin/python .*/yum-dump.py --options --all-provides$}, :timeout=>Chef::Config[:yum_timeout])
|
|
1642
1635
|
@yc.refresh
|
|
1643
1636
|
end
|
|
1644
1637
|
|
|
1645
1638
|
it "should pass extra_repo_control args to yum-dump.py" do
|
|
1646
1639
|
@yc.enable_extra_repo_control("--enablerepo=foo --disablerepo=bar")
|
|
1647
|
-
@yc.should_receive(:
|
|
1640
|
+
@yc.should_receive(:shell_out!).with(%r{^/usr/bin/python .*/yum-dump.py --options --installed-provides --enablerepo=foo --disablerepo=bar$}, :timeout=>Chef::Config[:yum_timeout])
|
|
1648
1641
|
@yc.refresh
|
|
1649
1642
|
end
|
|
1650
1643
|
|
|
1651
1644
|
it "should warn about invalid data with too many separators" do
|
|
1652
|
-
@
|
|
1645
|
+
@status = mock("Status", :exitstatus => 0, :stdin => @stdin, :stdout => @stdout_bad_separators, :stderr => @stderr)
|
|
1646
|
+
@yc.stub!(:shell_out!).and_return(@status)
|
|
1653
1647
|
Chef::Log.should_receive(:warn).exactly(3).times.with(%r{Problem parsing})
|
|
1654
1648
|
@yc.refresh
|
|
1655
1649
|
end
|
|
1656
1650
|
|
|
1657
1651
|
it "should warn about invalid data with an incorrect type" do
|
|
1658
|
-
@
|
|
1652
|
+
@status = mock("Status", :exitstatus => 0, :stdin => @stdin, :stdout => @stdout_bad_type, :stderr => @stderr)
|
|
1653
|
+
@yc.stub!(:shell_out!).and_return(@status)
|
|
1659
1654
|
Chef::Log.should_receive(:warn).exactly(2).times.with(%r{Problem parsing})
|
|
1660
1655
|
@yc.refresh
|
|
1661
1656
|
end
|
|
1662
1657
|
|
|
1663
1658
|
it "should warn about no output from yum-dump.py" do
|
|
1664
|
-
@
|
|
1659
|
+
@status = mock("Status", :exitstatus => 0, :stdin => @stdin, :stdout => @stdout_no_output, :stderr => @stderr)
|
|
1660
|
+
@yc.stub!(:shell_out!).and_return(@status)
|
|
1665
1661
|
Chef::Log.should_receive(:warn).exactly(1).times.with(%r{no output from yum-dump.py})
|
|
1666
1662
|
@yc.refresh
|
|
1667
1663
|
end
|
|
1668
1664
|
|
|
1669
1665
|
it "should raise exception yum-dump.py exits with a non zero status" do
|
|
1670
|
-
@
|
|
1666
|
+
@status = mock("Status", :exitstatus => 1, :stdin => @stdin, :stdout => @stdout_no_output, :stderr => @stderr)
|
|
1667
|
+
@yc.stub!(:shell_out!).and_return(@status)
|
|
1671
1668
|
lambda { @yc.refresh}.should raise_error(Chef::Exceptions::Package, %r{CentOS-Base.repo, line: 12})
|
|
1672
1669
|
end
|
|
1673
1670
|
|
|
@@ -1792,7 +1789,7 @@ EOF
|
|
|
1792
1789
|
end
|
|
1793
1790
|
|
|
1794
1791
|
it "should return nil when no match for package-version, no arch" do
|
|
1795
|
-
@yc.package_repository("zisofs-tools", "pretend", nil).should be == nil
|
|
1792
|
+
@yc.package_repository("zisofs-tools", "pretend", nil).should be == nil
|
|
1796
1793
|
@yc.package_repository("zisofs-tools", "pretend").should be == nil
|
|
1797
1794
|
@yc.package_repository("pretend", "1.0.6-3.2.2").should be == nil
|
|
1798
1795
|
end
|