chef 11.4.4 → 11.6.0.hotfix.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +1 -1
- data/Rakefile +18 -1
- data/bin/chef-service-manager +37 -0
- data/distro/common/html/chef-client.8.html +4 -4
- data/distro/common/html/chef-expander.8.html +4 -4
- data/distro/common/html/chef-expanderctl.8.html +4 -4
- data/distro/common/html/chef-server-webui.8.html +4 -4
- data/distro/common/html/chef-server.8.html +4 -4
- data/distro/common/html/chef-shell.1.html +4 -4
- data/distro/common/html/chef-solo.8.html +12 -18
- data/distro/common/html/chef-solr.8.html +4 -4
- data/distro/common/html/knife-bootstrap.1.html +4 -4
- data/distro/common/html/knife-client.1.html +4 -4
- data/distro/common/html/knife-configure.1.html +4 -4
- data/distro/common/html/knife-cookbook-site.1.html +4 -4
- data/distro/common/html/knife-cookbook.1.html +7 -10
- data/distro/common/html/knife-data-bag.1.html +7 -10
- data/distro/common/html/knife-environment.1.html +6 -8
- data/distro/common/html/knife-exec.1.html +4 -4
- data/distro/common/html/knife-index.1.html +4 -4
- data/distro/common/html/knife-node.1.html +4 -4
- data/distro/common/html/knife-role.1.html +4 -4
- data/distro/common/html/knife-search.1.html +4 -4
- data/distro/common/html/knife-ssh.1.html +4 -4
- data/distro/common/html/knife-status.1.html +4 -4
- data/distro/common/html/knife-tag.1.html +4 -4
- data/distro/common/html/knife.1.html +4 -4
- data/distro/common/man/man1/chef-shell.1 +1 -1
- data/distro/common/man/man1/knife-bootstrap.1 +1 -1
- data/distro/common/man/man1/knife-client.1 +1 -1
- data/distro/common/man/man1/knife-configure.1 +1 -1
- data/distro/common/man/man1/knife-cookbook-site.1 +1 -1
- data/distro/common/man/man1/knife-cookbook.1 +2 -15
- data/distro/common/man/man1/knife-data-bag.1 +2 -15
- data/distro/common/man/man1/knife-environment.1 +2 -12
- data/distro/common/man/man1/knife-exec.1 +1 -1
- data/distro/common/man/man1/knife-index.1 +1 -1
- data/distro/common/man/man1/knife-node.1 +1 -1
- data/distro/common/man/man1/knife-role.1 +1 -1
- data/distro/common/man/man1/knife-search.1 +1 -1
- data/distro/common/man/man1/knife-ssh.1 +1 -1
- data/distro/common/man/man1/knife-status.1 +1 -1
- data/distro/common/man/man1/knife-tag.1 +1 -1
- data/distro/common/man/man1/knife.1 +1 -1
- data/distro/common/man/man8/chef-client.8 +1 -1
- data/distro/common/man/man8/chef-expander.8 +1 -1
- data/distro/common/man/man8/chef-expanderctl.8 +1 -1
- data/distro/common/man/man8/chef-server-webui.8 +1 -1
- data/distro/common/man/man8/chef-server.8 +1 -1
- data/distro/common/man/man8/chef-solo.8 +4 -36
- data/distro/common/man/man8/chef-solr.8 +1 -1
- data/distro/debian/etc/init.d/chef-client +4 -2
- data/distro/windows/service_manager.rb +2 -146
- data/lib/chef.rb +1 -1
- data/lib/chef/application.rb +5 -12
- data/lib/chef/application/apply.rb +2 -0
- data/lib/chef/application/client.rb +12 -12
- data/lib/chef/application/knife.rb +2 -2
- data/lib/chef/application/solo.rb +4 -5
- data/lib/chef/application/windows_service.rb +113 -56
- data/lib/chef/application/windows_service_manager.rb +179 -0
- data/lib/chef/chef_fs.rb +2 -4
- data/lib/chef/chef_fs/chef_fs_data_store.rb +371 -0
- data/lib/chef/chef_fs/command_line.rb +145 -93
- data/lib/chef/chef_fs/config.rb +205 -0
- data/lib/chef/chef_fs/data_handler/acl_data_handler.rb +26 -0
- data/lib/chef/chef_fs/data_handler/client_data_handler.rb +38 -0
- data/lib/chef/chef_fs/data_handler/container_data_handler.rb +29 -0
- data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +38 -0
- data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +56 -0
- data/lib/chef/chef_fs/data_handler/data_handler_base.rb +128 -0
- data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +40 -0
- data/lib/chef/chef_fs/data_handler/group_data_handler.rb +51 -0
- data/lib/chef/chef_fs/data_handler/node_data_handler.rb +36 -0
- data/lib/chef/chef_fs/data_handler/role_data_handler.rb +40 -0
- data/lib/chef/chef_fs/data_handler/user_data_handler.rb +27 -0
- data/lib/chef/chef_fs/file_system.rb +195 -127
- data/lib/chef/chef_fs/file_system/acl_dir.rb +64 -0
- data/lib/chef/chef_fs/file_system/acl_entry.rb +58 -0
- data/lib/chef/chef_fs/file_system/acls_dir.rb +68 -0
- data/lib/chef/chef_fs/file_system/already_exists_error.rb +31 -0
- data/lib/chef/chef_fs/file_system/base_fs_object.rb +98 -39
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_dir.rb +85 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_entry.rb +71 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbooks_dir.rb +55 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_data_bags_dir.rb +36 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_entry.rb +14 -63
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +93 -3
- data/lib/chef/chef_fs/file_system/chef_server_root_dir.rb +35 -9
- data/lib/chef/chef_fs/file_system/cookbook_dir.rb +67 -32
- data/lib/chef/chef_fs/file_system/cookbook_file.rb +13 -6
- data/lib/chef/chef_fs/file_system/cookbook_frozen_error.rb +31 -0
- data/lib/chef/chef_fs/file_system/cookbooks_acl_dir.rb +41 -0
- data/lib/chef/chef_fs/file_system/cookbooks_dir.rb +102 -21
- data/lib/chef/chef_fs/file_system/data_bag_dir.rb +12 -21
- data/lib/chef/chef_fs/file_system/data_bags_dir.rb +14 -8
- data/lib/chef/chef_fs/file_system/default_environment_cannot_be_modified_error.rb +36 -0
- data/lib/chef/chef_fs/file_system/environments_dir.rb +60 -0
- data/lib/chef/chef_fs/file_system/file_system_entry.rb +8 -8
- data/lib/chef/chef_fs/file_system/file_system_error.rb +3 -1
- data/lib/chef/chef_fs/file_system/memory_dir.rb +52 -0
- data/lib/chef/chef_fs/file_system/memory_file.rb +17 -0
- data/lib/chef/chef_fs/file_system/memory_root.rb +21 -0
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +48 -0
- data/lib/chef/chef_fs/file_system/must_delete_recursively_error.rb +2 -2
- data/lib/chef/chef_fs/file_system/nodes_dir.rb +17 -9
- data/lib/chef/chef_fs/file_system/nonexistent_fs_object.rb +0 -4
- data/lib/chef/chef_fs/file_system/not_found_error.rb +2 -2
- data/lib/chef/chef_fs/file_system/operation_failed_error.rb +34 -0
- data/lib/chef/chef_fs/file_system/operation_not_allowed_error.rb +48 -0
- data/lib/chef/chef_fs/file_system/rest_list_dir.rb +42 -13
- data/lib/chef/chef_fs/file_system/rest_list_entry.rb +81 -27
- data/lib/chef/chef_fs/knife.rb +68 -29
- data/lib/chef/chef_fs/parallelizer.rb +129 -0
- data/lib/chef/chef_fs/path_utils.rb +29 -3
- data/lib/chef/chef_fs/raw_request.rb +79 -0
- data/lib/chef/client.rb +46 -20
- data/lib/chef/config.rb +59 -61
- data/lib/chef/cookbook/chefignore.rb +2 -1
- data/lib/chef/cookbook/synchronizer.rb +8 -6
- data/lib/chef/cookbook/syntax_check.rb +17 -2
- data/lib/chef/cookbook_uploader.rb +10 -1
- data/lib/chef/cookbook_version.rb +0 -109
- data/lib/chef/data_bag.rb +15 -6
- data/lib/chef/deprecation/mixin/template.rb +49 -0
- data/lib/chef/deprecation/provider/cookbook_file.rb +55 -0
- data/lib/chef/deprecation/provider/file.rb +197 -0
- data/lib/chef/deprecation/provider/remote_file.rb +86 -0
- data/lib/chef/deprecation/provider/template.rb +63 -0
- data/lib/chef/deprecation/warnings.rb +38 -0
- data/lib/chef/encrypted_data_bag_item.rb +153 -61
- data/lib/chef/environment.rb +34 -3
- data/lib/chef/event_dispatch/base.rb +3 -0
- data/lib/chef/exceptions.rb +27 -2
- data/lib/chef/file_access_control/unix.rb +64 -7
- data/lib/chef/file_access_control/windows.rb +22 -11
- data/lib/chef/file_content_management/content_base.rb +56 -0
- data/lib/chef/file_content_management/deploy.rb +38 -0
- data/lib/chef/file_content_management/deploy/cp.rb +48 -0
- data/lib/chef/file_content_management/deploy/mv_unix.rb +77 -0
- data/lib/chef/file_content_management/deploy/mv_windows.rb +95 -0
- data/lib/chef/file_content_management/tempfile.rb +61 -0
- data/lib/chef/formatters/doc.rb +1 -1
- data/lib/chef/formatters/error_descriptor.rb +5 -4
- data/lib/chef/formatters/error_inspectors/cookbook_resolve_error_inspector.rb +23 -3
- data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +4 -0
- data/lib/chef/json_compat.rb +3 -0
- data/lib/chef/knife.rb +12 -3
- data/lib/chef/knife/bootstrap.rb +46 -2
- data/lib/chef/knife/bootstrap/archlinux-gems.erb +3 -3
- data/lib/chef/knife/bootstrap/centos5-gems.erb +3 -3
- data/lib/chef/knife/bootstrap/chef-full.erb +4 -4
- data/lib/chef/knife/bootstrap/fedora13-gems.erb +3 -3
- data/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb +3 -3
- data/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb +3 -3
- data/lib/chef/knife/bootstrap/ubuntu12.04-gems.erb +3 -3
- data/lib/chef/knife/client_show.rb +2 -5
- data/lib/chef/knife/configure.rb +3 -3
- data/lib/chef/knife/cookbook_create.rb +6 -5
- data/lib/chef/knife/cookbook_download.rb +13 -5
- data/lib/chef/knife/cookbook_site_share.rb +1 -0
- data/lib/chef/knife/cookbook_test.rb +1 -0
- data/lib/chef/knife/cookbook_upload.rb +4 -9
- data/lib/chef/knife/core/bootstrap_context.rb +10 -4
- data/lib/chef/knife/core/generic_presenter.rb +16 -0
- data/lib/chef/knife/core/node_editor.rb +1 -1
- data/lib/chef/knife/core/subcommand_loader.rb +43 -12
- data/lib/chef/knife/core/ui.rb +19 -4
- data/lib/chef/knife/delete.rb +76 -9
- data/lib/chef/knife/deps.rb +139 -0
- data/lib/chef/knife/diff.rb +22 -5
- data/lib/chef/knife/download.rb +16 -3
- data/lib/chef/knife/edit.rb +76 -0
- data/lib/chef/knife/environment_show.rb +2 -7
- data/lib/chef/knife/list.rb +91 -47
- data/lib/chef/knife/node_run_list_set.rb +66 -0
- data/lib/chef/knife/node_show.rb +1 -7
- data/lib/chef/knife/raw.rb +20 -64
- data/lib/chef/knife/role_show.rb +2 -4
- data/lib/chef/knife/search.rb +5 -6
- data/lib/chef/knife/show.rb +34 -11
- data/lib/chef/knife/ssh.rb +8 -0
- data/lib/chef/knife/upload.rb +23 -4
- data/lib/chef/knife/user_show.rb +2 -5
- data/lib/chef/knife/xargs.rb +265 -0
- data/lib/chef/log.rb +2 -2
- data/lib/chef/mixin/file_class.rb +0 -9
- data/lib/chef/mixin/language_include_recipe.rb +1 -1
- data/lib/chef/mixin/params_validate.rb +19 -9
- data/lib/chef/mixin/template.rb +126 -36
- data/lib/chef/mixin/windows_architecture_helper.rb +91 -0
- data/lib/chef/monkey_patches/file.rb +26 -0
- data/lib/chef/monkey_patches/net-ssh-multi.rb +140 -0
- data/lib/chef/monkey_patches/securerandom.rb +44 -0
- data/lib/chef/monologger.rb +93 -0
- data/lib/chef/node.rb +4 -0
- data/lib/chef/platform.rb +4 -490
- data/lib/chef/platform/provider_mapping.rb +529 -0
- data/lib/chef/{monkey_patches/dir.rb → platform/query_helpers.rb} +25 -19
- data/lib/chef/provider.rb +12 -9
- data/lib/chef/provider/batch.rb +35 -0
- data/lib/chef/provider/cookbook_file.rb +9 -78
- data/lib/chef/provider/cookbook_file/content.rb +49 -0
- data/lib/chef/provider/deploy.rb +24 -20
- data/lib/chef/provider/deploy/revision.rb +27 -0
- data/lib/chef/provider/directory.rb +19 -22
- data/lib/chef/provider/execute.rb +22 -5
- data/lib/chef/provider/file.rb +299 -217
- data/lib/chef/provider/file/content.rb +39 -0
- data/lib/chef/provider/git.rb +76 -43
- data/lib/chef/provider/group/usermod.rb +2 -2
- data/lib/chef/provider/ifconfig.rb +25 -35
- data/lib/chef/provider/ifconfig/debian.rb +71 -0
- data/lib/chef/provider/ifconfig/redhat.rb +47 -0
- data/lib/chef/provider/link.rb +10 -3
- data/lib/chef/provider/mount.rb +1 -1
- data/lib/chef/provider/mount/mount.rb +8 -3
- data/lib/chef/provider/mount/windows.rb +4 -1
- data/lib/chef/provider/package/portage.rb +9 -4
- data/lib/chef/provider/package/rubygems.rb +45 -10
- data/lib/chef/provider/package/smartos.rb +47 -36
- data/lib/chef/provider/package/yum.rb +19 -12
- data/lib/chef/provider/package/zypper.rb +45 -55
- data/lib/chef/provider/powershell_script.rb +77 -0
- data/lib/chef/provider/remote_directory.rb +5 -6
- data/lib/chef/provider/remote_file.rb +12 -108
- data/lib/chef/provider/remote_file/cache_control_data.rb +165 -0
- data/lib/chef/provider/remote_file/content.rb +75 -0
- data/lib/chef/provider/remote_file/fetcher.rb +43 -0
- data/lib/chef/provider/remote_file/ftp.rb +183 -0
- data/lib/chef/provider/remote_file/http.rb +124 -0
- data/lib/chef/provider/remote_file/local_file.rb +47 -0
- data/lib/chef/provider/route.rb +6 -2
- data/lib/chef/provider/script.rb +14 -2
- data/lib/chef/provider/service/macosx.rb +16 -10
- data/lib/chef/provider/service/solaris.rb +6 -5
- data/lib/chef/provider/template.rb +16 -78
- data/lib/chef/provider/template/content.rb +61 -0
- data/lib/chef/provider/user/solaris.rb +90 -0
- data/lib/chef/provider/user/useradd.rb +76 -63
- data/lib/chef/provider/windows_script.rb +73 -0
- data/lib/chef/providers.rb +16 -0
- data/lib/chef/resource.rb +23 -2
- data/lib/chef/resource/batch.rb +31 -0
- data/lib/chef/resource/conditional.rb +4 -0
- data/lib/chef/resource/conditional_action_not_nothing.rb +48 -0
- data/lib/chef/resource/file.rb +31 -3
- data/lib/chef/resource/link.rb +17 -0
- data/lib/chef/resource/lwrp_base.rb +1 -1
- data/lib/chef/resource/mount.rb +29 -2
- data/lib/chef/resource/powershell_script.rb +31 -0
- data/lib/chef/resource/remote_file.rb +47 -1
- data/lib/chef/resource/route.rb +1 -1
- data/lib/chef/resource/template.rb +145 -0
- data/lib/chef/resource/windows_script.rb +62 -0
- data/lib/chef/resource_collection.rb +45 -11
- data/lib/chef/resource_reporter.rb +81 -52
- data/lib/chef/resources.rb +2 -0
- data/lib/chef/rest.rb +13 -4
- data/lib/chef/rest/rest_request.rb +5 -1
- data/lib/chef/run_context/cookbook_compiler.rb +3 -3
- data/lib/chef/run_list/run_list_expansion.rb +1 -1
- data/lib/chef/run_lock.rb +7 -1
- data/lib/chef/runner.rb +0 -1
- data/lib/chef/scan_access_control.rb +6 -1
- data/lib/chef/search/query.rb +2 -2
- data/lib/chef/shell/shell_session.rb +2 -2
- data/lib/chef/util/backup.rb +84 -0
- data/lib/chef/util/diff.rb +145 -0
- data/lib/chef/util/file_edit.rb +1 -1
- data/lib/chef/util/selinux.rb +100 -0
- data/lib/chef/util/windows/net_user.rb +14 -1
- data/lib/chef/util/windows/volume.rb +2 -2
- data/lib/chef/version.rb +1 -1
- data/lib/chef/version/platform.rb +42 -0
- data/lib/chef/version_class.rb +1 -1
- data/lib/chef/version_constraint.rb +6 -5
- data/lib/chef/version_constraint/platform.rb +26 -0
- data/lib/chef/win32/api/file.rb +8 -2
- data/lib/chef/win32/version.rb +25 -8
- data/spec/data/apt/chef-integration-test-1.0/debian/changelog +5 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/compat +1 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/control +13 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/copyright +34 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/files +1 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/rules +13 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/source/format +1 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/changelog +11 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/compat +1 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/control +13 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/copyright +34 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/files +1 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/rules +13 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/source/format +1 -0
- data/spec/data/apt/chef-integration-test_1.0-1_amd64.changes +22 -0
- data/spec/data/apt/chef-integration-test_1.0-1_amd64.deb +0 -0
- data/spec/data/apt/chef-integration-test_1.0.orig.tar.gz +0 -0
- data/spec/data/apt/chef-integration-test_1.1-1_amd64.changes +22 -0
- data/spec/data/apt/chef-integration-test_1.1-1_amd64.deb +0 -0
- data/spec/data/apt/chef-integration-test_1.1.orig.tar.gz +0 -0
- data/spec/data/apt/var/www/apt/conf/distributions +7 -0
- data/spec/data/apt/var/www/apt/conf/incoming +4 -0
- data/spec/data/apt/var/www/apt/conf/pulls +3 -0
- data/spec/data/apt/var/www/apt/db/checksums.db +0 -0
- data/spec/data/apt/var/www/apt/db/contents.cache.db +0 -0
- data/spec/data/apt/var/www/apt/db/packages.db +0 -0
- data/spec/data/apt/var/www/apt/db/references.db +0 -0
- data/spec/data/apt/var/www/apt/db/release.caches.db +0 -0
- data/spec/data/apt/var/www/apt/db/version +4 -0
- data/spec/data/apt/var/www/apt/dists/sid/Release +19 -0
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages +16 -0
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages.gz +0 -0
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Release +5 -0
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-i386/Packages +0 -0
- data/spec/data/apt/var/www/apt/pool/main/c/chef-integration-test/chef-integration-test_1.0-1_amd64.deb +0 -0
- data/spec/data/apt/var/www/apt/pool/main/c/chef-integration-test/chef-integration-test_1.1-1_amd64.deb +0 -0
- data/spec/data/bootstrap/encrypted_data_bag_secret +1 -0
- data/spec/data/bootstrap/secret.erb +9 -0
- data/spec/data/cookbooks/ignorken/recipes/default.rb +1 -0
- data/spec/data/cookbooks/ignorken/recipes/ignoreme.rb +2 -0
- data/spec/data/cookbooks/openldap/files/default/.dotfile +1 -0
- data/spec/data/cookbooks/openldap/files/default/.ssh/id_rsa +1 -0
- data/spec/data/cookbooks/openldap/files/default/remotedir/.a_dotdir/.a_dotfile_in_a_dotdir +1 -0
- data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/.a_dotfile +1 -0
- data/spec/data/cookbooks/openldap/templates/default/all_windows_line_endings.erb +4 -0
- data/spec/data/cookbooks/openldap/templates/default/helper_test.erb +1 -0
- data/spec/data/cookbooks/openldap/templates/default/helpers_via_partial_test.erb +1 -0
- data/spec/data/cookbooks/openldap/templates/default/no_windows_line_endings.erb +4 -0
- data/spec/data/cookbooks/openldap/templates/default/some_windows_line_endings.erb +4 -0
- data/spec/data/cookbooks/preseed/files/default/preseed-file.seed +1 -0
- data/spec/data/cookbooks/preseed/templates/default/preseed-template.seed +1 -0
- data/spec/data/file-providers-method-snapshot-chef-11-4.json +127 -0
- data/spec/data/git_bundles/example-repo.gitbundle +0 -0
- data/spec/data/knife-home/.chef/plugins/knife/example_home_subcommand.rb +0 -0
- data/spec/data/knife_subcommand/test_yourself.rb +8 -0
- data/spec/data/null_config.rb +1 -0
- data/spec/data/partial_one.erb +1 -1
- data/spec/data/remote_file/nyan_cat.png.gz +0 -0
- data/spec/functional/file_content_management/deploy_strategies_spec.rb +238 -0
- data/spec/functional/knife/exec_spec.rb +2 -2
- data/spec/functional/provider/remote_file/cache_control_data_spec.rb +101 -0
- data/spec/functional/resource/batch_spec.rb +64 -0
- data/spec/functional/resource/cookbook_file_spec.rb +2 -3
- data/spec/functional/resource/deploy_revision_spec.rb +180 -0
- data/spec/functional/resource/directory_spec.rb +2 -2
- data/spec/functional/resource/file_spec.rb +17 -1
- data/spec/functional/resource/git_spec.rb +259 -0
- data/spec/functional/resource/link_spec.rb +422 -388
- data/spec/functional/resource/package_spec.rb +297 -0
- data/spec/functional/resource/powershell_spec.rb +188 -0
- data/spec/functional/resource/registry_spec.rb +8 -4
- data/spec/functional/resource/remote_directory_spec.rb +2 -2
- data/spec/functional/resource/remote_file_spec.rb +97 -29
- data/spec/functional/resource/template_spec.rb +173 -17
- data/spec/functional/resource/user_spec.rb +547 -0
- data/spec/functional/run_lock_spec.rb +5 -0
- data/spec/functional/shell_spec.rb +2 -1
- data/spec/functional/win32/service_manager_spec.rb +269 -0
- data/spec/functional/win32/versions_spec.rb +78 -0
- data/spec/integration/knife/chef_repo_path_spec.rb +805 -0
- data/spec/integration/knife/chef_repository_file_system_spec.rb +276 -0
- data/spec/integration/knife/chefignore_spec.rb +271 -0
- data/spec/integration/knife/delete_spec.rb +944 -0
- data/spec/integration/knife/deps_spec.rb +648 -0
- data/spec/integration/knife/diff_spec.rb +536 -0
- data/spec/integration/knife/download_spec.rb +962 -0
- data/spec/integration/knife/list_spec.rb +633 -0
- data/spec/integration/knife/raw_spec.rb +166 -0
- data/spec/integration/knife/redirection_spec.rb +57 -0
- data/spec/integration/knife/show_spec.rb +158 -0
- data/spec/integration/knife/upload_spec.rb +1060 -0
- data/spec/integration/solo/solo_spec.rb +41 -0
- data/spec/spec_helper.rb +55 -1
- data/spec/support/chef_helpers.rb +32 -0
- data/spec/support/platform_helpers.rb +40 -0
- data/spec/support/platforms/win32/spec_service.rb +59 -0
- data/spec/support/shared/functional/directory_resource.rb +43 -16
- data/spec/support/shared/functional/file_resource.rb +661 -20
- data/spec/support/shared/functional/securable_resource.rb +109 -8
- data/spec/support/shared/functional/securable_resource_with_reporting.rb +39 -31
- data/spec/support/shared/integration/integration_helper.rb +166 -0
- data/spec/support/shared/integration/knife_support.rb +171 -0
- data/spec/support/shared/unit/execute_resource.rb +125 -0
- data/spec/support/shared/unit/file_system_support.rb +8 -48
- data/spec/support/shared/unit/provider/file.rb +609 -0
- data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +407 -0
- data/spec/support/shared/unit/script_resource.rb +52 -0
- data/spec/support/shared/unit/windows_script_resource.rb +48 -0
- data/spec/tiny_server.rb +13 -11
- data/spec/unit/application/client_spec.rb +39 -1
- data/spec/unit/application/knife_spec.rb +12 -0
- data/spec/unit/application/solo_spec.rb +1 -1
- data/spec/unit/application_spec.rb +57 -2
- data/spec/unit/chef_fs/diff_spec.rb +30 -31
- data/spec/unit/chef_fs/file_pattern_spec.rb +2 -2
- data/spec/unit/chef_fs/file_system_spec.rb +2 -3
- data/spec/unit/client_spec.rb +20 -1
- data/spec/unit/config_spec.rb +70 -52
- data/spec/unit/cookbook/synchronizer_spec.rb +49 -1
- data/spec/unit/cookbook/syntax_check_spec.rb +28 -3
- data/spec/unit/cookbook_loader_spec.rb +3 -2
- data/spec/unit/daemon_spec.rb +7 -7
- data/spec/unit/data_bag_spec.rb +7 -0
- data/spec/unit/deprecation_spec.rb +86 -0
- data/spec/unit/encrypted_data_bag_item_spec.rb +183 -88
- data/spec/unit/environment_spec.rb +98 -0
- data/spec/unit/exceptions_spec.rb +6 -1
- data/spec/unit/file_access_control_spec.rb +21 -1
- data/spec/unit/file_content_management/deploy/cp_spec.rb +46 -0
- data/spec/unit/file_content_management/deploy/mv_unix_spec.rb +103 -0
- data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +179 -0
- data/spec/unit/formatters/error_inspectors/cookbook_resolve_error_inspector_spec.rb +38 -2
- data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +3 -2
- data/spec/unit/knife/bootstrap_spec.rb +128 -29
- data/spec/unit/knife/configure_spec.rb +42 -26
- data/spec/unit/knife/cookbook_download_spec.rb +24 -3
- data/spec/unit/knife/cookbook_upload_spec.rb +8 -4
- data/spec/unit/knife/core/bootstrap_context_spec.rb +78 -61
- data/spec/unit/knife/core/subcommand_loader_spec.rb +20 -0
- data/spec/unit/knife/core/ui_spec.rb +41 -0
- data/spec/unit/knife/node_run_list_set_spec.rb +140 -0
- data/spec/unit/knife_spec.rb +21 -0
- data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +1 -0
- data/spec/unit/mixin/params_validate_spec.rb +35 -0
- data/spec/unit/mixin/template_spec.rb +69 -57
- data/spec/unit/mixin/windows_architecture_helper_spec.rb +83 -0
- data/spec/unit/node_spec.rb +7 -0
- data/spec/unit/platform_spec.rb +15 -1
- data/spec/unit/provider/cookbook_file/content_spec.rb +40 -0
- data/spec/unit/provider/cookbook_file_spec.rb +26 -183
- data/spec/unit/provider/cron/solaris_spec.rb +1 -1
- data/spec/unit/provider/deploy/revision_spec.rb +19 -11
- data/spec/unit/provider/deploy_spec.rb +2 -2
- data/spec/unit/provider/directory_spec.rb +23 -23
- data/spec/unit/provider/execute_spec.rb +27 -1
- data/spec/unit/provider/file/content_spec.rb +101 -0
- data/spec/unit/provider/file_spec.rb +25 -484
- data/spec/unit/provider/git_spec.rb +224 -28
- data/spec/unit/provider/group/usermod_spec.rb +3 -1
- data/spec/unit/provider/ifconfig/debian_spec.rb +89 -0
- data/spec/unit/provider/ifconfig/redhat_spec.rb +71 -0
- data/spec/unit/provider/ifconfig_spec.rb +0 -33
- data/spec/unit/provider/mount/mount_spec.rb +33 -2
- data/spec/unit/provider/mount/windows_spec.rb +4 -1
- data/spec/unit/provider/mount_spec.rb +16 -6
- data/spec/unit/provider/package/portage_spec.rb +44 -0
- data/spec/unit/provider/package/rubygems_spec.rb +44 -1
- data/spec/unit/provider/package/smartos_spec.rb +3 -2
- data/spec/unit/provider/package/yum_spec.rb +36 -39
- data/spec/unit/provider/package/zypper_spec.rb +84 -22
- data/spec/unit/provider/package_spec.rb +0 -4
- data/spec/unit/provider/powershell_spec.rb +38 -0
- data/spec/unit/provider/remote_directory_spec.rb +0 -4
- data/spec/unit/provider/remote_file/cache_control_data_spec.rb +211 -0
- data/spec/unit/provider/remote_file/content_spec.rb +230 -0
- data/spec/unit/provider/remote_file/fetcher_spec.rb +75 -0
- data/spec/unit/provider/remote_file/ftp_spec.rb +224 -0
- data/spec/unit/provider/remote_file/http_spec.rb +319 -0
- data/spec/unit/provider/remote_file/local_file_spec.rb +60 -0
- data/spec/unit/provider/remote_file_spec.rb +33 -295
- data/spec/unit/provider/route_spec.rb +25 -9
- data/spec/unit/provider/service/macosx_spec.rb +176 -152
- data/spec/unit/provider/service/solaris_smf_service_spec.rb +21 -18
- data/spec/unit/provider/service/systemd_service_spec.rb +2 -2
- data/spec/unit/provider/service/upstart_service_spec.rb +2 -2
- data/spec/unit/provider/service_spec.rb +3 -3
- data/spec/unit/provider/template/content_spec.rb +78 -0
- data/spec/unit/provider/template_spec.rb +52 -184
- data/spec/unit/provider/user/solaris_spec.rb +80 -0
- data/spec/unit/provider/user/useradd_spec.rb +12 -358
- data/spec/unit/resource/batch_spec.rb +48 -0
- data/spec/unit/resource/conditional_action_not_nothing_spec.rb +45 -0
- data/spec/unit/resource/execute_spec.rb +3 -101
- data/spec/unit/resource/file_spec.rb +0 -5
- data/spec/unit/resource/group_spec.rb +9 -0
- data/spec/unit/resource/ifconfig_spec.rb +60 -1
- data/spec/unit/resource/link_spec.rb +1 -0
- data/spec/unit/resource/mount_spec.rb +37 -0
- data/spec/unit/resource/powershell_spec.rb +48 -0
- data/spec/unit/resource/remote_file_spec.rb +44 -4
- data/spec/unit/resource/route_spec.rb +1 -1
- data/spec/unit/resource/script_spec.rb +13 -36
- data/spec/unit/resource/template_spec.rb +111 -8
- data/spec/unit/resource/user_spec.rb +7 -0
- data/spec/unit/resource_collection_spec.rb +61 -32
- data/spec/unit/resource_reporter_spec.rb +115 -102
- data/spec/unit/resource_spec.rb +170 -1
- data/spec/unit/rest/auth_credentials_spec.rb +2 -2
- data/spec/unit/rest_spec.rb +6 -2
- data/spec/unit/run_context/cookbook_compiler_spec.rb +9 -0
- data/spec/unit/runner_spec.rb +1 -1
- data/spec/unit/scan_access_control_spec.rb +4 -2
- data/spec/unit/shell/shell_session_spec.rb +15 -2
- data/spec/unit/util/backup_spec.rb +149 -0
- data/spec/unit/util/diff_spec.rb +596 -0
- data/spec/unit/util/selinux_spec.rb +172 -0
- data/spec/unit/version/platform_spec.rb +61 -0
- data/spec/unit/version_constraint/platform_spec.rb +46 -0
- data/spec/unit/version_constraint_spec.rb +5 -0
- metadata +233 -10
- data/lib/chef/chef_fs/file_system/data_bag_item.rb +0 -59
- data/spec/unit/chef_fs/file_system/chef_server_root_dir_spec.rb +0 -237
- data/spec/unit/chef_fs/file_system/cookbooks_dir_spec.rb +0 -568
- data/spec/unit/chef_fs/file_system/data_bags_dir_spec.rb +0 -220
data/spec/unit/knife_spec.rb
CHANGED
|
@@ -99,6 +99,9 @@ describe Chef::Knife do
|
|
|
99
99
|
Chef::Knife.subcommands_by_category['cookbook site'].should include('test_explicit_category')
|
|
100
100
|
end
|
|
101
101
|
|
|
102
|
+
it "has empty dependency_loader list by default" do
|
|
103
|
+
KnifeSpecs::TestNameMapping.dependency_loaders.should be_empty
|
|
104
|
+
end
|
|
102
105
|
end
|
|
103
106
|
|
|
104
107
|
describe "after loading all subcommands" do
|
|
@@ -180,6 +183,21 @@ describe Chef::Knife do
|
|
|
180
183
|
lambda {Chef::Knife.run(%w{fuuu uuuu fuuuu})}.should raise_error(SystemExit) { |e| e.status.should_not == 0 }
|
|
181
184
|
end
|
|
182
185
|
|
|
186
|
+
it "loads lazy dependencies" do
|
|
187
|
+
command = Chef::Knife.run(%w{test yourself})
|
|
188
|
+
KnifeSpecs::TestYourself.test_deps_loaded.should be_true
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
it "loads lazy dependencies from multiple deps calls" do
|
|
192
|
+
other_deps_loaded = false
|
|
193
|
+
KnifeSpecs::TestYourself.class_eval do
|
|
194
|
+
deps { other_deps_loaded = true }
|
|
195
|
+
end
|
|
196
|
+
command = Chef::Knife.run(%w{test yourself})
|
|
197
|
+
KnifeSpecs::TestYourself.test_deps_loaded.should be_true
|
|
198
|
+
other_deps_loaded.should be_true
|
|
199
|
+
end
|
|
200
|
+
|
|
183
201
|
describe "merging configuration options" do
|
|
184
202
|
before do
|
|
185
203
|
KnifeSpecs::TestYourself.option(:opt_with_default,
|
|
@@ -228,6 +246,9 @@ describe Chef::Knife do
|
|
|
228
246
|
@knife.name_args.should == %w{with some args}
|
|
229
247
|
end
|
|
230
248
|
|
|
249
|
+
it "does not have lazy dependencies loaded" do
|
|
250
|
+
@knife.class.test_deps_loaded.should_not be_true
|
|
251
|
+
end
|
|
231
252
|
end
|
|
232
253
|
|
|
233
254
|
describe "when formatting exceptions" do
|
|
@@ -48,6 +48,7 @@ describe Chef::Mixin::EnforceOwnershipAndPermissions do
|
|
|
48
48
|
before do
|
|
49
49
|
Chef::FileAccessControl.any_instance.stub(:uid_from_resource).and_return(0)
|
|
50
50
|
Chef::FileAccessControl.any_instance.stub(:requires_changes?).and_return(false)
|
|
51
|
+
Chef::FileAccessControl.any_instance.stub(:define_resource_requirements)
|
|
51
52
|
|
|
52
53
|
passwd_struct = if windows?
|
|
53
54
|
Struct::Passwd.new("root", "x", 0, 0, "/root", "/bin/bash")
|
|
@@ -368,5 +368,40 @@ describe Chef::Mixin::ParamsValidate do
|
|
|
368
368
|
@vo.set_or_return(:name, value, { }).object_id.should == value.object_id
|
|
369
369
|
@vo.set_or_return(:foo, nil, { :name_attribute => true }).object_id.should == value.object_id
|
|
370
370
|
end
|
|
371
|
+
|
|
372
|
+
it "should allow DelayedEvaluator instance to be set for value regardless of restriction" do
|
|
373
|
+
value = Chef::DelayedEvaluator.new{ 'test' }
|
|
374
|
+
@vo.set_or_return(:test, value, {:kind_of => Numeric})
|
|
375
|
+
end
|
|
376
|
+
|
|
377
|
+
it "should raise an error when delayed evaluated attribute is not valid" do
|
|
378
|
+
value = Chef::DelayedEvaluator.new{ 'test' }
|
|
379
|
+
@vo.set_or_return(:test, value, {:kind_of => Numeric})
|
|
380
|
+
lambda do
|
|
381
|
+
@vo.set_or_return(:test, nil, {:kind_of => Numeric})
|
|
382
|
+
end.should raise_error(Chef::Exceptions::ValidationFailed)
|
|
383
|
+
end
|
|
384
|
+
|
|
385
|
+
it "should create DelayedEvaluator instance when #lazy is used" do
|
|
386
|
+
@vo.set_or_return(:delayed, @vo.lazy{ 'test' }, {})
|
|
387
|
+
@vo.instance_variable_get(:@delayed).should be_a(Chef::DelayedEvaluator)
|
|
388
|
+
end
|
|
389
|
+
|
|
390
|
+
it "should execute block on each call when DelayedEvaluator" do
|
|
391
|
+
value = 'fubar'
|
|
392
|
+
@vo.set_or_return(:test, @vo.lazy{ value }, {})
|
|
393
|
+
@vo.set_or_return(:test, nil, {}).should == 'fubar'
|
|
394
|
+
value = 'foobar'
|
|
395
|
+
@vo.set_or_return(:test, nil, {}).should == 'foobar'
|
|
396
|
+
value = 'fauxbar'
|
|
397
|
+
@vo.set_or_return(:test, nil, {}).should == 'fauxbar'
|
|
398
|
+
end
|
|
399
|
+
|
|
400
|
+
it "should not evaluate non DelayedEvaluator instances" do
|
|
401
|
+
value = lambda{ 'test' }
|
|
402
|
+
@vo.set_or_return(:test, value, {})
|
|
403
|
+
@vo.set_or_return(:test, nil, {}).object_id.should == value.object_id
|
|
404
|
+
@vo.set_or_return(:test, nil, {}).should be_a(Proc)
|
|
405
|
+
end
|
|
371
406
|
|
|
372
407
|
end
|
|
@@ -18,30 +18,25 @@
|
|
|
18
18
|
|
|
19
19
|
require 'spec_helper'
|
|
20
20
|
|
|
21
|
-
class TinyTemplateClass; include Chef::Mixin::Template; end
|
|
22
21
|
require 'cgi'
|
|
23
22
|
describe Chef::Mixin::Template, "render_template" do
|
|
24
23
|
|
|
24
|
+
let(:sep) { Chef::Platform.windows? ? "\r\n" : "\n" }
|
|
25
|
+
|
|
25
26
|
before :each do
|
|
26
|
-
@
|
|
27
|
+
@context = Chef::Mixin::Template::TemplateContext.new({})
|
|
27
28
|
end
|
|
28
29
|
|
|
29
30
|
it "should render the template evaluated in the given context" do
|
|
30
|
-
@
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
@context[:foo] = "bar"
|
|
32
|
+
output = @context.render_template_from_string("<%= @foo %>")
|
|
33
|
+
output.should == "bar"
|
|
33
34
|
end
|
|
34
35
|
|
|
35
36
|
it "should provide a node method to access @node" do
|
|
36
|
-
@
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
it "should yield the tempfile it renders the template to" do
|
|
42
|
-
@template.render_template("abcdef", {}) do |tempfile|
|
|
43
|
-
tempfile.should be_kind_of(Tempfile)
|
|
44
|
-
end
|
|
37
|
+
@context[:node] = "tehShizzle"
|
|
38
|
+
output = @context.render_template_from_string("<%= @node %>")
|
|
39
|
+
output.should == "tehShizzle"
|
|
45
40
|
end
|
|
46
41
|
|
|
47
42
|
describe "with a template resource" do
|
|
@@ -60,33 +55,28 @@ describe Chef::Mixin::Template, "render_template" do
|
|
|
60
55
|
|
|
61
56
|
@resource = Chef::Resource::Template.new(@rendered_file_location)
|
|
62
57
|
@resource.cookbook_name = 'openldap'
|
|
63
|
-
|
|
64
|
-
@provider = Chef::Provider::Template.new(@resource, @run_context)
|
|
65
58
|
@current_resource = @resource.dup
|
|
66
|
-
@provider.current_resource = @current_resource
|
|
67
|
-
@access_controls = mock("access controls")
|
|
68
|
-
@provider.stub!(:access_controls).and_return(@access_controls)
|
|
69
59
|
|
|
70
|
-
@
|
|
60
|
+
@content_provider = Chef::Provider::Template::Content.new(@resource, @current_resource, @run_context)
|
|
61
|
+
|
|
62
|
+
@template_context = Chef::Mixin::Template::TemplateContext.new({})
|
|
71
63
|
@template_context[:node] = @node
|
|
72
64
|
@template_context[:template_finder] = Chef::Provider::TemplateFinder.new(@run_context, @resource.cookbook_name, @node)
|
|
73
65
|
end
|
|
74
66
|
|
|
75
67
|
it "should provide a render method" do
|
|
76
|
-
@
|
|
77
|
-
|
|
78
|
-
end
|
|
68
|
+
output = @template_context.render_template_from_string("before {<%= render('test.erb').strip -%>} after")
|
|
69
|
+
output.should == "before {We could be diving for pearls!} after"
|
|
79
70
|
end
|
|
80
71
|
|
|
81
72
|
it "should render local files" do
|
|
82
73
|
begin
|
|
83
74
|
tf = Tempfile.new("partial")
|
|
84
|
-
tf.
|
|
75
|
+
tf.write "test"
|
|
85
76
|
tf.rewind
|
|
86
77
|
|
|
87
|
-
@
|
|
88
|
-
|
|
89
|
-
end
|
|
78
|
+
output = @template_context.render_template_from_string("before {<%= render '#{tf.path}', :local => true %>} after")
|
|
79
|
+
output.should == "before {test} after"
|
|
90
80
|
ensure
|
|
91
81
|
tf.close
|
|
92
82
|
end
|
|
@@ -95,20 +85,18 @@ describe Chef::Mixin::Template, "render_template" do
|
|
|
95
85
|
it "should render partials from a different cookbook" do
|
|
96
86
|
@template_context[:template_finder] = Chef::Provider::TemplateFinder.new(@run_context, 'apache2', @node)
|
|
97
87
|
|
|
98
|
-
@
|
|
99
|
-
|
|
100
|
-
end
|
|
88
|
+
output = @template_context.render_template_from_string("before {<%= render('test.erb', :cookbook => 'openldap').strip %>} after")
|
|
89
|
+
output.should == "before {We could be diving for pearls!} after"
|
|
101
90
|
end
|
|
102
91
|
|
|
103
92
|
it "should render using the source argument if provided" do
|
|
104
93
|
begin
|
|
105
94
|
tf = Tempfile.new("partial")
|
|
106
|
-
tf.
|
|
95
|
+
tf.write "test"
|
|
107
96
|
tf.rewind
|
|
108
97
|
|
|
109
|
-
@
|
|
110
|
-
|
|
111
|
-
end
|
|
98
|
+
output = @template_context.render_template_from_string("before {<%= render 'something', :local => true, :source => '#{tf.path}' %>} after")
|
|
99
|
+
output.should == "before {test} after"
|
|
112
100
|
ensure
|
|
113
101
|
tf.close
|
|
114
102
|
end
|
|
@@ -117,56 +105,80 @@ describe Chef::Mixin::Template, "render_template" do
|
|
|
117
105
|
it "should pass the node to partials" do
|
|
118
106
|
@node.normal[:slappiness] = "happiness"
|
|
119
107
|
|
|
120
|
-
@
|
|
121
|
-
|
|
122
|
-
end
|
|
108
|
+
output = @template_context.render_template_from_string("before {<%= render 'openldap_stuff.conf.erb' %>} after")
|
|
109
|
+
output.should == "before {slappiness is happiness} after"
|
|
123
110
|
end
|
|
124
111
|
|
|
125
112
|
it "should pass the original variables to partials" do
|
|
126
113
|
@template_context[:secret] = 'candy'
|
|
127
114
|
|
|
128
|
-
@
|
|
129
|
-
|
|
130
|
-
end
|
|
115
|
+
output = @template_context.render_template_from_string("before {<%= render 'openldap_variable_stuff.conf.erb' %>} after")
|
|
116
|
+
output == "before {super secret is candy} after"
|
|
131
117
|
end
|
|
132
118
|
|
|
133
119
|
it "should pass variables to partials" do
|
|
134
|
-
@
|
|
135
|
-
|
|
136
|
-
end
|
|
120
|
+
output = @template_context.render_template_from_string("before {<%= render 'openldap_variable_stuff.conf.erb', :variables => {:secret => 'whatever' } %>} after")
|
|
121
|
+
output.should == "before {super secret is whatever} after"
|
|
137
122
|
end
|
|
138
123
|
|
|
139
124
|
it "should pass variables to partials even if they are named the same" do
|
|
140
125
|
@template_context[:secret] = 'one'
|
|
141
126
|
|
|
142
|
-
@
|
|
143
|
-
|
|
144
|
-
end
|
|
127
|
+
output = @template_context.render_template_from_string("before {<%= render 'openldap_variable_stuff.conf.erb', :variables => {:secret => 'two' } %>} after <%= @secret %>")
|
|
128
|
+
output.should == "before {super secret is two} after one"
|
|
145
129
|
end
|
|
146
130
|
|
|
147
131
|
it "should pass nil for missing variables in partials" do
|
|
148
|
-
@
|
|
149
|
-
|
|
150
|
-
end
|
|
132
|
+
output = @template_context.render_template_from_string("before {<%= render 'openldap_variable_stuff.conf.erb', :variables => {} %>} after")
|
|
133
|
+
output.should == "before {super secret is } after"
|
|
151
134
|
|
|
152
|
-
@
|
|
153
|
-
|
|
154
|
-
end
|
|
135
|
+
output = @template_context.render_template_from_string("before {<%= render 'openldap_variable_stuff.conf.erb' %>} after")
|
|
136
|
+
output.should == "before {super secret is } after"
|
|
155
137
|
end
|
|
156
138
|
|
|
157
139
|
it "should render nested partials" do
|
|
158
140
|
path = File.expand_path(File.join(CHEF_SPEC_DATA, "partial_one.erb"))
|
|
159
141
|
|
|
160
|
-
@
|
|
161
|
-
|
|
142
|
+
output = @template_context.render_template_from_string("before {<%= render('#{path}', :local => true).strip %>} after")
|
|
143
|
+
output.should == "before {partial one We could be diving for pearls! calling home} after"
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
describe "when customizing the template context" do
|
|
147
|
+
|
|
148
|
+
it "extends the context to include modules" do
|
|
149
|
+
mod = Module.new do
|
|
150
|
+
def hello
|
|
151
|
+
"ohai"
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
@template_context._extend_modules([mod])
|
|
155
|
+
output = @template_context.render_template_from_string("<%=hello%>")
|
|
156
|
+
output.should == "ohai"
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
it "emits a warning when overriding 'core' methods" do
|
|
160
|
+
mod = Module.new do
|
|
161
|
+
def render
|
|
162
|
+
end
|
|
163
|
+
def node
|
|
164
|
+
end
|
|
165
|
+
def render_template
|
|
166
|
+
end
|
|
167
|
+
def render_template_from_string
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
['node', 'render', 'render_template', 'render_template_from_string'].each do |method_name|
|
|
171
|
+
Chef::Log.should_receive(:warn).with(/^Core template method `#{method_name}' overridden by extension module/)
|
|
172
|
+
end
|
|
173
|
+
@template_context._extend_modules([mod])
|
|
162
174
|
end
|
|
163
175
|
end
|
|
176
|
+
|
|
164
177
|
end
|
|
165
178
|
|
|
166
179
|
describe "when an exception is raised in the template" do
|
|
167
180
|
def do_raise
|
|
168
|
-
@context
|
|
169
|
-
@template.render_template("foo\nbar\nbaz\n<%= this_is_not_defined %>\nquin\nqunx\ndunno", @context) {|r| r}
|
|
181
|
+
@context.render_template_from_string("foo\nbar\nbaz\n<%= this_is_not_defined %>\nquin\nqunx\ndunno")
|
|
170
182
|
end
|
|
171
183
|
|
|
172
184
|
it "should catch and re-raise the exception as a TemplateError" do
|
|
@@ -174,7 +186,7 @@ describe Chef::Mixin::Template, "render_template" do
|
|
|
174
186
|
end
|
|
175
187
|
|
|
176
188
|
it "should raise an error if an attempt is made to access node but it is nil" do
|
|
177
|
-
lambda {@
|
|
189
|
+
lambda {@context.render_template_from_string("<%= node %>") {|r| r}}.should raise_error(Chef::Mixin::Template::TemplateError)
|
|
178
190
|
end
|
|
179
191
|
|
|
180
192
|
describe "the raised TemplateError" do
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Adam Edwards (<adamed@opscode.com>)
|
|
3
|
+
# Copyright:: Copyright (c) 2013 Opscode, Inc.
|
|
4
|
+
# License:: Apache License, Version 2.0
|
|
5
|
+
#
|
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
# you may not use this file except in compliance with the License.
|
|
8
|
+
# You may obtain a copy of the License at
|
|
9
|
+
#
|
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
#
|
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
# See the License for the specific language governing permissions and
|
|
16
|
+
# limitations under the License.
|
|
17
|
+
#
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
require 'spec_helper'
|
|
21
|
+
require 'chef/mixin/windows_architecture_helper'
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
describe Chef::Mixin::WindowsArchitectureHelper do
|
|
26
|
+
include Chef::Mixin::WindowsArchitectureHelper
|
|
27
|
+
|
|
28
|
+
before do
|
|
29
|
+
@valid_architectures = [ :i386, :x86_64 ]
|
|
30
|
+
@invalid_architectures = [ "i386", "x86_64", :x64, :x86, :arm ]
|
|
31
|
+
|
|
32
|
+
@node_i386 = Chef::Node.new
|
|
33
|
+
@node_x86_64 = Chef::Node.new
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it "returns true when valid architectures are passed to valid_windows_architecture?" do
|
|
37
|
+
@valid_architectures.each do | architecture |
|
|
38
|
+
valid_windows_architecture?(architecture).should == true
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it "returns false when invalid architectures are passed to valid_windows_architecture?" do
|
|
43
|
+
@invalid_architectures.each do | architecture |
|
|
44
|
+
valid_windows_architecture?(architecture).should == false
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
it "does not raise an exception when a valid architecture is passed to assert_valid_windows_architecture!" do
|
|
49
|
+
@valid_architectures.each do | architecture |
|
|
50
|
+
assert_valid_windows_architecture!(architecture)
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it "raises an error if an invalid architecture is passed to assert_valid_windows_architecture!" do
|
|
55
|
+
@invalid_architectures.each do | architecture |
|
|
56
|
+
begin
|
|
57
|
+
assert_valid_windows_architecture!(architecture).should raise_error Chef::Exceptions::Win32ArchitectureIncorrect
|
|
58
|
+
rescue Chef::Exceptions::Win32ArchitectureIncorrect
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
it "returns true for each supported desired architecture for all nodes with each valid architecture passed to node_supports_windows_architecture" do
|
|
64
|
+
enumerate_architecture_node_combinations(true)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
it "returns false for each unsupported desired architecture for all nodes with each valid architecture passed to node_supports_windows_architecture?" do
|
|
68
|
+
enumerate_architecture_node_combinations(true)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def enumerate_architecture_node_combinations(only_valid_combinations)
|
|
72
|
+
@valid_architectures.each do | node_architecture |
|
|
73
|
+
new_node = Chef::Node.new
|
|
74
|
+
new_node.default["kernel"] = Hash.new
|
|
75
|
+
new_node.default["kernel"][:machine] = node_architecture.to_s
|
|
76
|
+
|
|
77
|
+
@valid_architectures.each do | supported_architecture |
|
|
78
|
+
node_supports_windows_architecture?(new_node, supported_architecture).should == true if only_valid_combinations && (supported_architecture != :x86_64 && node_architecture != :i386 )
|
|
79
|
+
node_supports_windows_architecture?(new_node, supported_architecture).should == false if ! only_valid_combinations && (supported_architecture == :x86_64 && node_architecture == :i386 )
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
data/spec/unit/node_spec.rb
CHANGED
|
@@ -35,6 +35,13 @@ describe Chef::Node do
|
|
|
35
35
|
lambda{Chef::Node.build('solo node')}.should raise_error(Chef::Exceptions::ValidationFailed)
|
|
36
36
|
end
|
|
37
37
|
|
|
38
|
+
it "should be sortable" do
|
|
39
|
+
n1 = Chef::Node.build('alpha')
|
|
40
|
+
n2 = Chef::Node.build('beta')
|
|
41
|
+
n3 = Chef::Node.build('omega')
|
|
42
|
+
[n3, n1, n2].sort.should == [n1, n2, n3]
|
|
43
|
+
end
|
|
44
|
+
|
|
38
45
|
describe "when the node does not exist on the server" do
|
|
39
46
|
before do
|
|
40
47
|
response = OpenStruct.new(:code => '404')
|
data/spec/unit/platform_spec.rb
CHANGED
|
@@ -35,7 +35,8 @@ describe "Chef::Platform supports" do
|
|
|
35
35
|
:solaris,
|
|
36
36
|
:mswin,
|
|
37
37
|
:mingw32,
|
|
38
|
-
:windows
|
|
38
|
+
:windows,
|
|
39
|
+
:gcel
|
|
39
40
|
].each do |platform|
|
|
40
41
|
it "#{platform}" do
|
|
41
42
|
Chef::Platform.platforms.should have_key(platform)
|
|
@@ -56,6 +57,9 @@ describe Chef::Platform do
|
|
|
56
57
|
before(:each) do
|
|
57
58
|
Chef::Platform.platforms = {
|
|
58
59
|
:darwin => {
|
|
60
|
+
">= 10.11" => {
|
|
61
|
+
:file => "new_darwinian"
|
|
62
|
+
},
|
|
59
63
|
"9.2.2" => {
|
|
60
64
|
:file => "darwinian",
|
|
61
65
|
:else => "thing"
|
|
@@ -82,6 +86,12 @@ describe Chef::Platform do
|
|
|
82
86
|
pmap[:file].should eql("darwinian")
|
|
83
87
|
end
|
|
84
88
|
|
|
89
|
+
it "should allow you to look up a platform by name and version using \"greater than\" style operators" do
|
|
90
|
+
pmap = Chef::Platform.find("Darwin", "11.1.0")
|
|
91
|
+
pmap.should be_a_kind_of(Hash)
|
|
92
|
+
pmap[:file].should eql("new_darwinian")
|
|
93
|
+
end
|
|
94
|
+
|
|
85
95
|
it "should use the default providers for an os if the specific version does not exist" do
|
|
86
96
|
pmap = Chef::Platform.find("Darwin", "1")
|
|
87
97
|
pmap.should be_a_kind_of(Hash)
|
|
@@ -134,6 +144,10 @@ describe Chef::Platform do
|
|
|
134
144
|
Chef::Platform.find_provider_for_node(node, kitty).should eql("nice")
|
|
135
145
|
end
|
|
136
146
|
|
|
147
|
+
it "should not throw an exception when the platform version has an unknown format" do
|
|
148
|
+
Chef::Platform.find_provider(:darwin, "bad-version", :file).should eql("old school")
|
|
149
|
+
end
|
|
150
|
+
|
|
137
151
|
it "should prefer an explicit provider" do
|
|
138
152
|
kitty = Chef::Resource::Cat.new("loulou")
|
|
139
153
|
kitty.stub!(:provider).and_return(Chef::Provider::File)
|