chef 10.34.6-x86-mingw32 → 11.6.2-x86-mingw32
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.
- checksums.yaml +5 -13
- data/CONTRIBUTING.md +155 -0
- data/README.md +89 -0
- data/Rakefile +18 -1
- data/bin/chef-apply +25 -0
- data/bin/chef-service-manager +37 -0
- data/bin/chef-shell +34 -0
- data/bin/shef +6 -5
- 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/{shef.1.html → chef-shell.1.html} +49 -46
- data/distro/common/html/chef-solo.8.html +4 -4
- data/distro/common/html/chef-solr.8.html +5 -5
- 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 +4 -4
- data/distro/common/html/knife-data-bag.1.html +4 -4
- data/distro/common/html/knife-environment.1.html +4 -4
- data/distro/common/html/knife-exec.1.html +9 -9
- 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 +8 -13
- data/distro/common/man/man1/{shef.1 → chef-shell.1} +21 -57
- data/distro/common/man/man1/knife-bootstrap.1 +1 -1
- data/distro/common/man/man1/knife-client.1 +0 -99
- 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 +1 -1
- data/distro/common/man/man1/knife-data-bag.1 +1 -1
- data/distro/common/man/man1/knife-environment.1 +0 -168
- data/distro/common/man/man1/knife-exec.1 +4 -7
- 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 +3 -6
- 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 +1 -1
- data/distro/common/man/man8/chef-solr.8 +1 -1
- data/distro/common/markdown/man1/{shef.mkd → chef-shell.mkd} +49 -43
- data/distro/common/markdown/man1/knife-exec.mkd +11 -6
- data/distro/common/markdown/man1/knife.mkd +4 -9
- data/distro/debian/etc/default/chef-client +0 -1
- data/distro/debian/etc/init.d/chef-client +6 -4
- data/distro/windows/service_manager.rb +2 -146
- data/lib/chef.rb +3 -6
- data/lib/chef/api_client.rb +20 -130
- data/lib/chef/api_client/registration.rb +126 -0
- data/lib/chef/application.rb +68 -18
- data/lib/chef/application/apply.rb +162 -0
- data/lib/chef/application/client.rb +37 -22
- data/lib/chef/application/knife.rb +2 -4
- data/lib/chef/application/solo.rb +27 -13
- data/lib/chef/application/windows_service.rb +114 -54
- data/lib/chef/application/windows_service_manager.rb +179 -0
- data/lib/chef/applications.rb +1 -0
- data/lib/chef/chef_fs.rb +9 -0
- data/lib/chef/chef_fs/chef_fs_data_store.rb +371 -0
- data/lib/chef/chef_fs/command_line.rb +284 -0
- 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_pattern.rb +312 -0
- data/lib/chef/chef_fs/file_system.rb +426 -0
- 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_dir.rb +47 -0
- data/lib/chef/chef_fs/file_system/base_fs_object.rb +180 -0
- 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 +60 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +121 -0
- data/lib/chef/chef_fs/file_system/chef_server_root_dir.rb +110 -0
- data/lib/chef/chef_fs/file_system/cookbook_dir.rb +223 -0
- data/lib/chef/chef_fs/file_system/cookbook_file.rb +85 -0
- data/lib/chef/chef_fs/file_system/cookbook_frozen_error.rb +31 -0
- data/lib/chef/chef_fs/file_system/cookbook_subdir.rb +54 -0
- data/lib/chef/chef_fs/file_system/cookbooks_acl_dir.rb +41 -0
- data/lib/chef/chef_fs/file_system/cookbooks_dir.rb +149 -0
- data/lib/chef/chef_fs/file_system/data_bag_dir.rb +69 -0
- data/lib/chef/chef_fs/file_system/data_bags_dir.rb +72 -0
- 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 +90 -0
- data/lib/chef/chef_fs/file_system/file_system_error.rb +33 -0
- data/lib/chef/chef_fs/file_system/file_system_root_dir.rb +31 -0
- 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 +31 -0
- data/lib/chef/chef_fs/file_system/nodes_dir.rb +55 -0
- data/lib/chef/chef_fs/file_system/nonexistent_fs_object.rb +36 -0
- data/lib/chef/chef_fs/file_system/not_found_error.rb +31 -0
- 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 +113 -0
- data/lib/chef/chef_fs/file_system/rest_list_entry.rb +177 -0
- data/lib/chef/chef_fs/knife.rb +116 -0
- data/lib/chef/chef_fs/parallelizer.rb +129 -0
- data/lib/chef/chef_fs/path_utils.rb +90 -0
- data/lib/chef/chef_fs/raw_request.rb +79 -0
- data/lib/chef/client.rb +111 -34
- data/lib/chef/config.rb +111 -102
- data/lib/chef/cookbook/chefignore.rb +2 -1
- data/lib/chef/cookbook/metadata.rb +0 -2
- data/lib/chef/cookbook/syntax_check.rb +76 -14
- data/lib/chef/cookbook_loader.rb +39 -26
- data/lib/chef/cookbook_uploader.rb +16 -9
- data/lib/chef/cookbook_version.rb +2 -410
- data/lib/chef/daemon.rb +24 -19
- data/lib/chef/data_bag.rb +20 -104
- data/lib/chef/data_bag_item.rb +2 -65
- 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/digester.rb +73 -0
- data/lib/chef/dsl.rb +6 -0
- data/lib/chef/dsl/data_query.rb +71 -0
- data/lib/chef/dsl/include_attribute.rb +63 -0
- data/lib/chef/dsl/include_recipe.rb +45 -0
- data/lib/chef/dsl/platform_introspection.rb +218 -0
- data/lib/chef/dsl/recipe.rb +87 -0
- data/lib/chef/dsl/registry_helper.rb +59 -0
- data/lib/chef/encrypted_data_bag_item.rb +171 -24
- data/lib/chef/environment.rb +39 -179
- data/lib/chef/event_dispatch/base.rb +3 -0
- data/lib/chef/exceptions.rb +107 -8
- 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/base.rb +4 -1
- 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/resource_failure_inspector.rb +8 -0
- data/lib/chef/json_compat.rb +15 -14
- data/lib/chef/knife.rb +99 -41
- data/lib/chef/knife/bootstrap.rb +46 -2
- data/lib/chef/knife/bootstrap/archlinux-gems.erb +1 -1
- data/lib/chef/knife/bootstrap/centos5-gems.erb +1 -1
- data/lib/chef/knife/bootstrap/chef-full.erb +1 -1
- data/lib/chef/knife/bootstrap/fedora13-gems.erb +1 -1
- data/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb +1 -1
- data/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb +1 -1
- data/lib/chef/knife/bootstrap/ubuntu12.04-gems.erb +1 -1
- data/lib/chef/knife/client_show.rb +2 -5
- data/lib/chef/knife/configure.rb +19 -17
- data/lib/chef/knife/cookbook_create.rb +6 -5
- data/lib/chef/knife/cookbook_download.rb +13 -5
- data/lib/chef/knife/cookbook_metadata.rb +1 -0
- data/lib/chef/knife/cookbook_site_share.rb +1 -0
- data/lib/chef/knife/cookbook_test.rb +4 -2
- data/lib/chef/knife/cookbook_upload.rb +4 -4
- data/lib/chef/knife/core/bootstrap_context.rb +11 -5
- data/lib/chef/knife/core/generic_presenter.rb +42 -13
- data/lib/chef/knife/core/node_editor.rb +36 -16
- data/lib/chef/knife/core/node_presenter.rb +1 -1
- data/lib/chef/knife/core/subcommand_loader.rb +43 -12
- data/lib/chef/knife/core/text_formatter.rb +23 -37
- data/lib/chef/knife/core/ui.rb +34 -13
- data/lib/chef/knife/delete.rb +106 -0
- data/lib/chef/knife/deps.rb +139 -0
- data/lib/chef/knife/diff.rb +63 -0
- data/lib/chef/knife/download.rb +63 -0
- data/lib/chef/knife/edit.rb +76 -0
- data/lib/chef/knife/environment_show.rb +2 -0
- data/lib/chef/knife/exec.rb +5 -5
- data/lib/chef/knife/help_topics.rb +1 -1
- data/lib/chef/knife/index_rebuild.rb +91 -7
- data/lib/chef/knife/list.rb +153 -0
- 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 +64 -0
- data/lib/chef/knife/role_show.rb +2 -4
- data/lib/chef/knife/search.rb +45 -28
- data/lib/chef/knife/show.rb +55 -0
- data/lib/chef/knife/ssh.rb +14 -2
- data/lib/chef/knife/upload.rb +69 -0
- data/lib/chef/knife/user_create.rb +93 -0
- data/lib/chef/knife/user_delete.rb +46 -0
- data/lib/chef/knife/user_edit.rb +53 -0
- data/lib/chef/{provider/whyrun_safe_ruby_block.rb → knife/user_list.rb} +21 -9
- data/lib/chef/knife/user_reregister.rb +59 -0
- data/lib/chef/knife/user_show.rb +49 -0
- data/lib/chef/knife/xargs.rb +265 -0
- data/lib/chef/log.rb +2 -2
- data/lib/chef/mixin/checksum.rb +3 -3
- data/lib/chef/mixin/deep_merge.rb +78 -194
- data/lib/chef/mixin/deprecation.rb +35 -0
- data/lib/chef/mixin/file_class.rb +0 -9
- data/lib/chef/mixin/language.rb +22 -223
- data/lib/chef/mixin/language_include_attribute.rb +10 -36
- data/lib/chef/mixin/language_include_recipe.rb +7 -33
- data/lib/chef/mixin/params_validate.rb +0 -3
- data/lib/chef/mixin/recipe_definition_dsl_core.rb +10 -61
- data/lib/chef/mixin/securable.rb +32 -7
- data/lib/chef/mixin/template.rb +156 -26
- data/lib/chef/mixin/windows_architecture_helper.rb +91 -0
- data/lib/chef/mixins.rb +1 -5
- data/{spec/unit/monkey_patches/uri_spec.rb → lib/chef/monkey_patches/file.rb} +6 -14
- data/lib/chef/monkey_patches/net-ssh-multi.rb +140 -0
- data/lib/chef/monkey_patches/net_http.rb +0 -34
- data/lib/chef/monkey_patches/securerandom.rb +44 -0
- data/lib/chef/monologger.rb +93 -0
- data/lib/chef/node.rb +139 -308
- data/lib/chef/node/attribute.rb +367 -473
- data/lib/chef/node/attribute_collections.rb +206 -0
- data/lib/chef/node/immutable_collections.rb +186 -0
- data/lib/chef/platform.rb +4 -496
- data/lib/chef/platform/provider_mapping.rb +529 -0
- data/lib/chef/{mixin/check_helper.rb → platform/query_helpers.rb} +20 -9
- data/lib/chef/provider.rb +14 -58
- data/lib/chef/provider/batch.rb +35 -0
- data/lib/chef/provider/breakpoint.rb +6 -6
- data/lib/chef/provider/cookbook_file.rb +11 -80
- data/lib/chef/provider/cookbook_file/content.rb +49 -0
- data/lib/chef/provider/deploy.rb +26 -21
- data/lib/chef/provider/deploy/revision.rb +27 -0
- data/lib/chef/provider/directory.rb +12 -18
- data/lib/chef/provider/execute.rb +22 -5
- data/lib/chef/provider/file.rb +297 -248
- data/lib/chef/provider/file/content.rb +39 -0
- data/lib/chef/provider/git.rb +76 -43
- data/lib/chef/provider/group.rb +31 -51
- data/lib/chef/provider/group/dscl.rb +13 -53
- data/lib/chef/provider/group/gpasswd.rb +19 -14
- data/lib/chef/provider/group/groupadd.rb +1 -41
- data/lib/chef/provider/group/groupmod.rb +36 -46
- data/lib/chef/provider/group/pw.rb +16 -59
- data/lib/chef/provider/group/suse.rb +13 -16
- data/lib/chef/provider/group/usermod.rb +18 -40
- data/lib/chef/provider/group/windows.rb +6 -13
- data/lib/chef/provider/http_request.rb +25 -42
- 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 +12 -3
- data/lib/chef/provider/lwrp_base.rb +150 -0
- 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/rpm.rb +2 -2
- data/lib/chef/provider/package/rubygems.rb +4 -1
- data/lib/chef/provider/package/smartos.rb +47 -36
- data/lib/chef/provider/package/zypper.rb +45 -55
- data/lib/chef/provider/powershell_script.rb +77 -0
- data/lib/chef/provider/registry_key.rb +156 -0
- data/lib/chef/provider/remote_directory.rb +6 -5
- data/lib/chef/provider/remote_file.rb +13 -100
- 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/ruby_block.rb +5 -2
- data/lib/chef/provider/script.rb +14 -2
- data/lib/chef/provider/service.rb +15 -0
- data/lib/chef/provider/service/init.rb +9 -7
- data/lib/chef/provider/service/macosx.rb +29 -81
- data/lib/chef/provider/service/simple.rb +1 -1
- data/lib/chef/provider/service/solaris.rb +6 -5
- data/lib/chef/provider/template.rb +16 -81
- data/lib/chef/provider/template/content.rb +61 -0
- data/lib/chef/provider/template_finder.rb +61 -0
- data/lib/chef/provider/user.rb +0 -1
- data/lib/chef/provider/user/dscl.rb +175 -568
- data/lib/chef/provider/user/useradd.rb +50 -54
- data/lib/chef/provider/windows_script.rb +73 -0
- data/lib/chef/providers.rb +18 -1
- data/lib/chef/recipe.rb +14 -8
- data/lib/chef/resource.rb +52 -146
- data/lib/chef/resource/{whyrun_safe_ruby_block.rb → batch.rb} +10 -10
- 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/group.rb +1 -11
- data/lib/chef/resource/http_request.rb +2 -1
- data/lib/chef/resource/link.rb +17 -0
- data/lib/chef/resource/lwrp_base.rb +132 -0
- data/lib/chef/resource/mount.rb +39 -13
- data/lib/chef/resource/powershell_script.rb +31 -0
- data/lib/chef/resource/registry_key.rb +86 -0
- data/lib/chef/resource/remote_directory.rb +6 -5
- data/lib/chef/resource/remote_file.rb +62 -25
- data/lib/chef/resource/route.rb +1 -1
- data/lib/chef/resource/ruby_block.rb +2 -2
- data/lib/chef/resource/service.rb +14 -0
- data/lib/chef/resource/template.rb +145 -0
- data/lib/chef/resource/user.rb +0 -18
- data/lib/chef/resource/windows_script.rb +62 -0
- data/lib/chef/resource_collection.rb +69 -31
- data/lib/chef/resource_reporter.rb +81 -52
- data/lib/chef/resources.rb +4 -1
- data/lib/chef/rest.rb +55 -127
- data/lib/chef/rest/auth_credentials.rb +4 -20
- data/lib/chef/rest/rest_request.rb +7 -8
- data/lib/chef/role.rb +1 -97
- data/lib/chef/run_context.rb +108 -130
- data/lib/chef/run_context/cookbook_compiler.rb +280 -0
- data/lib/chef/run_list.rb +0 -2
- data/lib/chef/run_list/run_list_expansion.rb +1 -16
- data/lib/chef/run_lock.rb +96 -0
- data/lib/chef/runner.rb +28 -6
- data/lib/chef/sandbox.rb +15 -148
- data/lib/chef/scan_access_control.rb +8 -5
- data/lib/chef/search/query.rb +2 -2
- data/lib/chef/shef/ext.rb +3 -575
- data/lib/chef/{shef.rb → shell.rb} +35 -40
- data/lib/chef/shell/ext.rb +593 -0
- data/lib/chef/{shef → shell}/model_wrapper.rb +3 -3
- data/lib/chef/{shef/shef_rest.rb → shell/shell_rest.rb} +4 -4
- data/lib/chef/{shef/shef_session.rb → shell/shell_session.rb} +15 -13
- data/lib/chef/shell_out.rb +7 -0
- data/lib/chef/user.rb +182 -0
- 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_group.rb +1 -5
- 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/{index_queue.rb → version_constraint/platform.rb} +11 -14
- data/lib/chef/win32/api/file.rb +8 -2
- data/lib/chef/win32/api/security.rb +45 -1
- data/lib/chef/win32/registry.rb +382 -0
- data/lib/chef/win32/security.rb +19 -0
- 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/attributes/default.rb +10 -9
- data/spec/data/cookbooks/openldap/attributes/smokey.rb +1 -1
- 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_subcommand/test_yourself.rb +8 -0
- data/spec/data/lwrp/providers/inline_compiler.rb +26 -0
- data/spec/data/nodes/default.rb +3 -3
- data/spec/data/nodes/test.example.com.rb +3 -3
- data/spec/data/nodes/test.rb +3 -3
- data/spec/data/null_config.rb +1 -0
- data/spec/data/partial_one.erb +1 -0
- data/spec/data/remote_file/nyan_cat.png.gz +0 -0
- data/spec/data/run_context/cookbooks/circular-dep1/attributes/default.rb +4 -0
- data/spec/data/run_context/cookbooks/circular-dep1/definitions/circular_dep1_res.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep1/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/circular-dep1/metadata.rb +2 -0
- data/spec/data/run_context/cookbooks/circular-dep1/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep1/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep2/attributes/default.rb +3 -0
- data/spec/data/run_context/cookbooks/circular-dep2/definitions/circular_dep2_res.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep2/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/circular-dep2/metadata.rb +2 -0
- data/spec/data/run_context/cookbooks/circular-dep2/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep2/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency1/attributes/aa_first.rb +2 -0
- data/spec/data/run_context/cookbooks/dependency1/attributes/default.rb +2 -0
- data/spec/data/run_context/cookbooks/dependency1/attributes/zz_last.rb +3 -0
- data/spec/data/run_context/cookbooks/dependency1/definitions/dependency1_res.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency1/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/dependency1/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency1/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency2/attributes/default.rb +3 -0
- data/spec/data/run_context/cookbooks/dependency2/definitions/dependency2_res.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency2/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/dependency2/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency2/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/no-default-attr/attributes/server.rb +3 -0
- data/spec/data/run_context/cookbooks/no-default-attr/definitions/no_default-attr_res.rb +1 -0
- data/spec/data/run_context/cookbooks/no-default-attr/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/no-default-attr/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/attributes/default.rb +3 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/definitions/test_with-circular-deps_res.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/metadata.rb +2 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-deps/attributes/default.rb +3 -0
- data/spec/data/run_context/cookbooks/test-with-deps/definitions/test_with-deps_res.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-deps/libraries/lib.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-deps/metadata.rb +3 -0
- data/spec/data/run_context/cookbooks/test-with-deps/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-deps/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/test-with-deps/recipes/server.rb +0 -0
- data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test/attributes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/test/attributes/george.rb +1 -1
- data/spec/data/run_context/cookbooks/test/definitions/test_res.rb +1 -0
- data/spec/data/run_context/cookbooks/test/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/test/resources/resource.rb +1 -0
- data/spec/data/shef-config.rb +10 -0
- data/spec/functional/dsl/registry_helper_spec.rb +63 -0
- data/spec/functional/file_content_management/deploy_strategies_spec.rb +238 -0
- data/spec/functional/knife/cookbook_delete_spec.rb +1 -1
- data/spec/functional/knife/exec_spec.rb +3 -3
- data/spec/functional/knife/smoke_test.rb +34 -0
- data/spec/functional/knife/ssh_spec.rb +5 -1
- 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 +15 -9
- data/spec/functional/resource/deploy_revision_spec.rb +180 -0
- data/spec/functional/resource/directory_spec.rb +5 -1
- data/spec/functional/resource/file_spec.rb +71 -21
- data/spec/functional/resource/git_spec.rb +259 -0
- data/spec/functional/resource/link_spec.rb +424 -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 +576 -0
- data/spec/functional/resource/remote_directory_spec.rb +143 -37
- data/spec/functional/resource/remote_file_spec.rb +99 -13
- data/spec/functional/resource/template_spec.rb +180 -3
- data/spec/functional/resource/user_spec.rb +547 -0
- data/spec/functional/run_lock_spec.rb +243 -0
- data/spec/functional/shell_spec.rb +102 -0
- data/spec/functional/win32/registry_helper_spec.rb +632 -0
- data/spec/functional/win32/security_spec.rb +37 -0
- 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 +49 -13
- data/spec/stress/win32/security_spec.rb +1 -1
- data/spec/support/chef_helpers.rb +33 -3
- data/spec/support/lib/chef/resource/cat.rb +3 -5
- data/spec/support/lib/chef/resource/one_two_three_four.rb +8 -10
- data/spec/support/lib/chef/resource/zen_master.rb +8 -10
- data/spec/support/platform_helpers.rb +46 -13
- data/spec/support/platforms/win32/spec_service.rb +59 -0
- data/spec/support/shared/functional/diff_disabled.rb +10 -0
- data/spec/support/shared/functional/directory_resource.rb +129 -38
- data/spec/support/shared/functional/file_resource.rb +837 -71
- data/spec/support/shared/functional/securable_resource.rb +189 -58
- data/spec/support/shared/functional/securable_resource_with_reporting.rb +385 -0
- 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 +70 -0
- data/spec/support/shared/unit/platform_introspector.rb +162 -0
- 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/api_client/registration_spec.rb +172 -0
- data/spec/unit/api_client_spec.rb +78 -156
- data/spec/unit/application/apply.rb +84 -0
- data/spec/unit/application/client_spec.rb +16 -14
- data/spec/unit/application/knife_spec.rb +17 -0
- data/spec/unit/application/solo_spec.rb +1 -1
- data/spec/unit/application_spec.rb +113 -3
- data/spec/unit/checksum/storage/filesystem_spec.rb +1 -1
- data/spec/unit/chef_fs/diff_spec.rb +328 -0
- data/spec/unit/chef_fs/file_pattern_spec.rb +526 -0
- data/spec/unit/chef_fs/file_system_spec.rb +135 -0
- data/spec/unit/client_spec.rb +195 -23
- data/spec/unit/config_spec.rb +102 -51
- data/spec/unit/cookbook/syntax_check_spec.rb +75 -111
- data/spec/unit/cookbook_loader_spec.rb +154 -91
- data/spec/unit/cookbook_manifest_spec.rb +81 -81
- data/spec/unit/cookbook_spec.rb +3 -20
- data/spec/unit/cookbook_version_spec.rb +23 -122
- data/spec/unit/daemon_spec.rb +24 -19
- data/spec/unit/data_bag_spec.rb +13 -4
- data/spec/unit/deprecation_spec.rb +86 -0
- data/spec/unit/digester_spec.rb +50 -0
- data/spec/unit/dsl/data_query_spec.rb +66 -0
- data/spec/unit/dsl/platform_introspection_spec.rb +130 -0
- data/spec/unit/dsl/regsitry_helper_spec.rb +55 -0
- data/spec/unit/encrypted_data_bag_item_spec.rb +197 -157
- data/spec/unit/environment_spec.rb +94 -126
- data/spec/unit/exceptions_spec.rb +8 -4
- 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 +6 -5
- data/spec/unit/json_compat_spec.rb +8 -0
- data/spec/unit/knife/bootstrap_spec.rb +130 -29
- data/spec/unit/knife/configure_spec.rb +64 -45
- data/spec/unit/knife/cookbook_download_spec.rb +24 -3
- data/spec/unit/knife/cookbook_metadata_spec.rb +11 -4
- data/spec/unit/knife/cookbook_test_spec.rb +1 -0
- data/spec/unit/knife/cookbook_upload_spec.rb +39 -0
- data/spec/unit/knife/core/bootstrap_context_spec.rb +79 -62
- data/spec/unit/knife/core/subcommand_loader_spec.rb +20 -0
- data/spec/unit/knife/core/ui_spec.rb +196 -124
- data/spec/unit/knife/data_bag_create_spec.rb +9 -0
- data/spec/unit/knife/data_bag_edit_spec.rb +1 -4
- data/spec/unit/knife/data_bag_from_file_spec.rb +4 -6
- data/spec/unit/knife/data_bag_show_spec.rb +11 -4
- data/spec/unit/knife/index_rebuild_spec.rb +96 -33
- data/spec/unit/knife/knife_help.rb +7 -7
- data/spec/unit/knife/node_edit_spec.rb +6 -33
- data/spec/unit/knife/node_run_list_remove_spec.rb +2 -1
- data/spec/unit/knife/node_run_list_set_spec.rb +140 -0
- data/spec/unit/knife/ssh_spec.rb +12 -15
- data/spec/unit/knife/status_spec.rb +2 -2
- data/spec/unit/knife/user_create_spec.rb +86 -0
- data/spec/unit/knife/user_delete_spec.rb +39 -0
- data/spec/unit/knife/user_edit_spec.rb +42 -0
- data/spec/unit/knife/user_list_spec.rb +32 -0
- data/spec/unit/knife/user_reregister_spec.rb +53 -0
- data/spec/unit/knife/user_show_spec.rb +41 -0
- data/spec/unit/knife_spec.rb +74 -0
- data/spec/unit/lwrp_spec.rb +102 -60
- data/spec/unit/mixin/checksum_spec.rb +2 -2
- data/spec/unit/mixin/deep_merge_spec.rb +130 -791
- data/spec/unit/mixin/deprecation_spec.rb +23 -0
- data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +7 -1
- data/spec/unit/mixin/params_validate_spec.rb +4 -2
- data/spec/unit/mixin/securable_spec.rb +5 -3
- data/spec/unit/mixin/template_spec.rb +145 -14
- data/spec/unit/mixin/windows_architecture_helper_spec.rb +83 -0
- data/spec/unit/node/attribute_spec.rb +273 -173
- data/spec/unit/node/immutable_collections_spec.rb +139 -0
- data/spec/unit/node_spec.rb +418 -370
- data/spec/unit/platform_spec.rb +21 -8
- data/spec/unit/provider/breakpoint_spec.rb +8 -8
- data/spec/unit/provider/cookbook_file/content_spec.rb +40 -0
- data/spec/unit/provider/cookbook_file_spec.rb +26 -187
- 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 +99 -67
- data/spec/unit/provider/env_spec.rb +2 -2
- 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 -475
- data/spec/unit/provider/git_spec.rb +224 -28
- data/spec/unit/provider/group/dscl_spec.rb +0 -36
- data/spec/unit/provider/group/gpasswd_spec.rb +9 -16
- data/spec/unit/provider/group/groupadd_spec.rb +4 -3
- data/spec/unit/provider/group/groupmod_spec.rb +1 -0
- data/spec/unit/provider/group/pw_spec.rb +15 -12
- data/spec/unit/provider/group/usermod_spec.rb +9 -22
- data/spec/unit/provider/group/windows_spec.rb +8 -0
- data/spec/unit/provider/group_spec.rb +6 -28
- data/spec/unit/provider/http_request_spec.rb +28 -69
- 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/ohai_spec.rb +4 -4
- data/spec/unit/provider/package/apt_spec.rb +0 -1
- data/spec/unit/provider/package/ips_spec.rb +0 -1
- data/spec/unit/provider/package/rpm_spec.rb +0 -12
- data/spec/unit/provider/package/rubygems_spec.rb +1 -1
- data/spec/unit/provider/package/smartos_spec.rb +3 -2
- data/spec/unit/provider/package/zypper_spec.rb +84 -22
- data/spec/unit/provider/package_spec.rb +7 -9
- data/spec/unit/provider/powershell_spec.rb +38 -0
- data/spec/unit/provider/registry_key_spec.rb +269 -0
- data/spec/unit/provider/remote_directory_spec.rb +7 -7
- 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 -259
- data/spec/unit/provider/route_spec.rb +29 -12
- data/spec/unit/provider/ruby_block_spec.rb +8 -0
- data/spec/unit/provider/service/arch_service_spec.rb +5 -5
- data/spec/unit/provider/service/debian_service_spec.rb +1 -1
- data/spec/unit/provider/service/freebsd_service_spec.rb +5 -5
- data/spec/unit/provider/service/init_service_spec.rb +27 -4
- data/spec/unit/provider/service/insserv_service_spec.rb +1 -1
- data/spec/unit/provider/service/invokercd_service_spec.rb +4 -4
- data/spec/unit/provider/service/macosx_spec.rb +176 -207
- data/spec/unit/provider/service/redhat_spec.rb +1 -1
- data/spec/unit/provider/service/simple_service_spec.rb +3 -3
- 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 +11 -11
- data/spec/unit/provider/service_spec.rb +3 -3
- data/spec/unit/provider/subversion_spec.rb +1 -1
- data/spec/unit/provider/template/content_spec.rb +78 -0
- data/spec/unit/provider/template_spec.rb +52 -160
- data/spec/unit/provider/user/dscl_spec.rb +285 -681
- data/spec/unit/provider/user/solaris_spec.rb +39 -373
- data/spec/unit/provider/user/useradd_spec.rb +12 -379
- data/spec/unit/provider/user_spec.rb +1 -1
- data/spec/unit/recipe_spec.rb +10 -8
- data/spec/unit/registry_helper_spec.rb +376 -0
- 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 -11
- data/spec/unit/resource/powershell_spec.rb +48 -0
- data/spec/unit/resource/registry_key_spec.rb +171 -0
- data/spec/unit/resource/remote_file_spec.rb +63 -25
- data/spec/unit/resource/route_spec.rb +1 -1
- data/spec/unit/resource/ruby_block_spec.rb +7 -3
- data/spec/unit/resource/script_spec.rb +13 -36
- data/spec/unit/resource/service_spec.rb +11 -0
- 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 +197 -5
- data/spec/unit/rest/auth_credentials_spec.rb +4 -21
- data/spec/unit/rest_spec.rb +134 -284
- data/spec/unit/run_context/cookbook_compiler_spec.rb +190 -0
- data/spec/unit/run_context_spec.rb +18 -4
- data/spec/unit/run_list_spec.rb +0 -209
- data/spec/unit/run_lock_spec.rb +37 -0
- data/spec/unit/runner_spec.rb +102 -3
- data/spec/unit/scan_access_control_spec.rb +8 -6
- data/spec/unit/{shef → shell}/model_wrapper_spec.rb +5 -5
- data/spec/unit/{shef/shef_ext_spec.rb → shell/shell_ext_spec.rb} +21 -21
- data/spec/unit/{shef/shef_session_spec.rb → shell/shell_session_spec.rb} +16 -58
- data/spec/unit/shell_out_spec.rb +18 -0
- data/spec/unit/{shef_spec.rb → shell_spec.rb} +20 -20
- data/spec/unit/user_spec.rb +255 -0
- 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 +493 -264
- data/README.rdoc +0 -177
- data/distro/common/html/knife-recipe.1.html +0 -92
- data/lib/chef/certificate.rb +0 -161
- data/lib/chef/checksum.rb +0 -167
- data/lib/chef/checksum_cache.rb +0 -190
- data/lib/chef/cookbook_version_selector.rb +0 -168
- data/lib/chef/couchdb.rb +0 -246
- data/lib/chef/index_queue/amqp_client.rb +0 -116
- data/lib/chef/index_queue/consumer.rb +0 -76
- data/lib/chef/index_queue/indexable.rb +0 -109
- data/lib/chef/knife/bootstrap/ubuntu12.10-gems.erb +0 -60
- data/lib/chef/monkey_patches/dir.rb +0 -36
- data/lib/chef/monkey_patches/moneta.rb +0 -50
- data/lib/chef/monkey_patches/uri.rb +0 -70
- data/lib/chef/openid_registration.rb +0 -187
- data/lib/chef/solr_query.rb +0 -187
- data/lib/chef/solr_query/lucene.treetop +0 -150
- data/lib/chef/solr_query/lucene_nodes.rb +0 -285
- data/lib/chef/solr_query/query_transform.rb +0 -65
- data/lib/chef/solr_query/solr_http_request.rb +0 -132
- data/lib/chef/webui_user.rb +0 -231
- data/spec/data/mac_users/10.7-8.plist.xml +0 -559
- data/spec/data/mac_users/10.7-8.shadow.xml +0 -11
- data/spec/data/mac_users/10.7.plist.xml +0 -559
- data/spec/data/mac_users/10.7.shadow.xml +0 -11
- data/spec/data/mac_users/10.8.plist.xml +0 -559
- data/spec/data/mac_users/10.8.shadow.xml +0 -21
- data/spec/data/mac_users/10.9.plist.xml +0 -560
- data/spec/data/mac_users/10.9.shadow.xml +0 -21
- data/spec/functional/resource/base.rb +0 -40
- data/spec/functional/resource/group_spec.rb +0 -343
- data/spec/functional/resource/user/dscl_spec.rb +0 -199
- data/spec/unit/certificate_spec.rb +0 -76
- data/spec/unit/checksum_cache_spec.rb +0 -209
- data/spec/unit/checksum_spec.rb +0 -94
- data/spec/unit/couchdb_spec.rb +0 -274
- data/spec/unit/index_queue_spec.rb +0 -391
- data/spec/unit/mixin/language_spec.rb +0 -305
- data/spec/unit/openid_registration_spec.rb +0 -153
- data/spec/unit/provider/whyrun_safe_ruby_block_spec.rb +0 -47
- data/spec/unit/solr_query/query_transform_spec.rb +0 -454
- data/spec/unit/solr_query/solr_http_request_spec.rb +0 -244
- data/spec/unit/solr_query_spec.rb +0 -203
- data/spec/unit/webui_user_spec.rb +0 -238
@@ -0,0 +1,37 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Serdar Sutay (<serdar@opscode.com>)
|
3
|
+
# Copyright:: Copyright (c) 2012 Opscode, Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
require 'spec_helper'
|
20
|
+
if Chef::Platform.windows?
|
21
|
+
require 'chef/win32/security'
|
22
|
+
end
|
23
|
+
|
24
|
+
describe 'Chef::Win32::Security', :windows_only do
|
25
|
+
it "has_admin_privileges? returns true when running as admin" do
|
26
|
+
Chef::ReservedNames::Win32::Security.has_admin_privileges?.should == true
|
27
|
+
end
|
28
|
+
|
29
|
+
# We've done some investigation adding a negative test and it turned
|
30
|
+
# out to be a lot of work since mixlib-shellout doesn't have user
|
31
|
+
# support for windows.
|
32
|
+
#
|
33
|
+
# TODO - Add negative tests once mixlib-shellout has user support
|
34
|
+
it "has_admin_privileges? returns false when running as non-admin" do
|
35
|
+
pending "requires user support in mixlib-shellout"
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,269 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Serdar Sutay (<serdar@opscode.com>)
|
3
|
+
# Copyright:: Copyright (c) 2013 Opscode, Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
require 'spec_helper'
|
20
|
+
if Chef::Platform.windows?
|
21
|
+
require 'chef/application/windows_service_manager'
|
22
|
+
end
|
23
|
+
|
24
|
+
#
|
25
|
+
# ATTENTION:
|
26
|
+
# This test creates a windows service for testing purposes and runs it
|
27
|
+
# as Local System on windows boxes.
|
28
|
+
# This test will fail if you run the tests inside a Windows VM by
|
29
|
+
# sharing the code from your host since Local System account by
|
30
|
+
# default can't see the mounted partitions.
|
31
|
+
# Run this test by copying the code to a local VM directory or setup
|
32
|
+
# Local System account to see the maunted partitions for the shared
|
33
|
+
# directories.
|
34
|
+
#
|
35
|
+
|
36
|
+
describe "Chef::Application::WindowsServiceManager", :windows_only, :system_windows_service_gem_only do
|
37
|
+
|
38
|
+
# Some helper methods.
|
39
|
+
|
40
|
+
def test_service_exists?
|
41
|
+
::Win32::Service.exists?("spec-service")
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_service_state
|
45
|
+
::Win32::Service.status("spec-service").current_state
|
46
|
+
end
|
47
|
+
|
48
|
+
def service_manager
|
49
|
+
Chef::Application::WindowsServiceManager.new(test_service)
|
50
|
+
end
|
51
|
+
|
52
|
+
def cleanup
|
53
|
+
# Uninstall if the test service is installed.
|
54
|
+
if test_service_exists?
|
55
|
+
|
56
|
+
# We can only uninstall when the service is stopped.
|
57
|
+
if test_service_state != "stopped"
|
58
|
+
::Win32::Service.send("stop", "spec-service")
|
59
|
+
while test_service_state != "stopped"
|
60
|
+
sleep 1
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
::Win32::Service.delete("spec-service")
|
65
|
+
end
|
66
|
+
|
67
|
+
# Delete the test_service_file if it exists
|
68
|
+
if File.exists?(test_service_file)
|
69
|
+
File.delete(test_service_file)
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
|
74
|
+
|
75
|
+
# Definition for the test-service
|
76
|
+
|
77
|
+
let(:test_service) {
|
78
|
+
{
|
79
|
+
:service_name => "spec-service",
|
80
|
+
:service_display_name => "Spec Test Service",
|
81
|
+
:service_description => "Service for testing Chef::Application::WindowsServiceManager.",
|
82
|
+
:service_file_path => File.expand_path(File.join(File.dirname(__FILE__), '../../support/platforms/win32/spec_service.rb'))
|
83
|
+
}
|
84
|
+
}
|
85
|
+
|
86
|
+
# Test service creates a file for us to verify that it is running.
|
87
|
+
# Since our test service is running as Local System we should look
|
88
|
+
# for the file it creates under SYSTEM temp directory
|
89
|
+
|
90
|
+
let(:test_service_file) {
|
91
|
+
"#{ENV['SystemDrive']}\\windows\\temp\\spec_service_file"
|
92
|
+
}
|
93
|
+
|
94
|
+
context "with invalid service definition" do
|
95
|
+
it "throws an error when initialized with no service definition" do
|
96
|
+
lambda { Chef::Application::WindowsServiceManager.new(nil) }.should raise_error(ArgumentError)
|
97
|
+
end
|
98
|
+
|
99
|
+
it "throws an error with required missing options" do
|
100
|
+
test_service.each do |key,value|
|
101
|
+
service_def = test_service.dup
|
102
|
+
service_def.delete(key)
|
103
|
+
|
104
|
+
lambda { Chef::Application::WindowsServiceManager.new(service_def) }.should raise_error(ArgumentError)
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
context "with valid definition" do
|
110
|
+
before(:each) do
|
111
|
+
@service_manager_output = [ ]
|
112
|
+
# Uncomment below lines to debug this test
|
113
|
+
# original_puts = $stdout.method(:puts)
|
114
|
+
$stdout.stub(:puts) do |message|
|
115
|
+
@service_manager_output << message
|
116
|
+
# original_puts.call(message)
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
after(:each) do
|
121
|
+
cleanup
|
122
|
+
end
|
123
|
+
|
124
|
+
context "when service doesn't exist" do
|
125
|
+
it "default => should say service don't exist" do
|
126
|
+
service_manager.run
|
127
|
+
|
128
|
+
@service_manager_output.grep(/doesn't exist on the system/).length.should > 0
|
129
|
+
end
|
130
|
+
|
131
|
+
it "install => should install the service" do
|
132
|
+
service_manager.run(["-a", "install"])
|
133
|
+
|
134
|
+
test_service_exists?.should be_true
|
135
|
+
end
|
136
|
+
|
137
|
+
it "other actions => should say service doesn't exist" do
|
138
|
+
["delete", "start", "stop", "pause", "resume", "uninstall"].each do |action|
|
139
|
+
service_manager.run(["-a", action])
|
140
|
+
@service_manager_output.grep(/doesn't exist on the system/).length.should > 0
|
141
|
+
@service_manager_output = [ ]
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
context "when service exists" do
|
147
|
+
before(:each) do
|
148
|
+
service_manager.run(["-a", "install"])
|
149
|
+
end
|
150
|
+
|
151
|
+
it "install => should say service already exists" do
|
152
|
+
service_manager.run(["-a", "install"])
|
153
|
+
@service_manager_output.grep(/already exists/).length.should > 0
|
154
|
+
end
|
155
|
+
|
156
|
+
context "and service is stopped" do
|
157
|
+
["delete", "uninstall"].each do |action|
|
158
|
+
it "#{action} => should remove the service", :volatile do
|
159
|
+
service_manager.run(["-a", action])
|
160
|
+
test_service_exists?.should be_false
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
it "default, status => should say service is stopped" do
|
165
|
+
service_manager.run([ ])
|
166
|
+
@service_manager_output.grep(/stopped/).length.should > 0
|
167
|
+
@service_manager_output = [ ]
|
168
|
+
|
169
|
+
service_manager.run(["-a", "status"])
|
170
|
+
@service_manager_output.grep(/stopped/).length.should > 0
|
171
|
+
end
|
172
|
+
|
173
|
+
it "start should start the service", :volatile do
|
174
|
+
service_manager.run(["-a", "start"])
|
175
|
+
test_service_state.should == "running"
|
176
|
+
File.exists?(test_service_file).should be_true
|
177
|
+
end
|
178
|
+
|
179
|
+
it "stop should not affect the service" do
|
180
|
+
service_manager.run(["-a", "stop"])
|
181
|
+
test_service_state.should == "stopped"
|
182
|
+
end
|
183
|
+
|
184
|
+
|
185
|
+
["pause", "resume"].each do |action|
|
186
|
+
it "#{action} => should raise error" do
|
187
|
+
lambda {service_manager.run(["-a", action])}.should raise_error(::Win32::Service::Error)
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
191
|
+
context "and service is started", :volatile do
|
192
|
+
before(:each) do
|
193
|
+
service_manager.run(["-a", "start"])
|
194
|
+
end
|
195
|
+
|
196
|
+
["delete", "uninstall"].each do |action|
|
197
|
+
it "#{action} => should remove the service", :volatile do
|
198
|
+
service_manager.run(["-a", action])
|
199
|
+
test_service_exists?.should be_false
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
it "default, status => should say service is running" do
|
204
|
+
service_manager.run([ ])
|
205
|
+
@service_manager_output.grep(/running/).length.should > 0
|
206
|
+
@service_manager_output = [ ]
|
207
|
+
|
208
|
+
service_manager.run(["-a", "status"])
|
209
|
+
@service_manager_output.grep(/running/).length.should > 0
|
210
|
+
end
|
211
|
+
|
212
|
+
it "stop should stop the service" do
|
213
|
+
service_manager.run(["-a", "stop"])
|
214
|
+
test_service_state.should == "stopped"
|
215
|
+
end
|
216
|
+
|
217
|
+
it "pause should pause the service" do
|
218
|
+
service_manager.run(["-a", "pause"])
|
219
|
+
test_service_state.should == "paused"
|
220
|
+
end
|
221
|
+
|
222
|
+
it "resume should have no affect" do
|
223
|
+
service_manager.run(["-a", "resume"])
|
224
|
+
test_service_state.should == "running"
|
225
|
+
end
|
226
|
+
end
|
227
|
+
|
228
|
+
context "and service is paused", :volatile do
|
229
|
+
before(:each) do
|
230
|
+
service_manager.run(["-a", "start"])
|
231
|
+
service_manager.run(["-a", "pause"])
|
232
|
+
end
|
233
|
+
|
234
|
+
actions = ["delete", "uninstall"]
|
235
|
+
actions.each do |action|
|
236
|
+
it "#{action} => should remove the service" do
|
237
|
+
service_manager.run(["-a", action])
|
238
|
+
test_service_exists?.should be_false
|
239
|
+
end
|
240
|
+
end
|
241
|
+
|
242
|
+
it "default, status => should say service is paused" do
|
243
|
+
service_manager.run([ ])
|
244
|
+
@service_manager_output.grep(/paused/).length.should > 0
|
245
|
+
@service_manager_output = [ ]
|
246
|
+
|
247
|
+
service_manager.run(["-a", "status"])
|
248
|
+
@service_manager_output.grep(/paused/).length.should > 0
|
249
|
+
end
|
250
|
+
|
251
|
+
it "stop should stop the service" do
|
252
|
+
service_manager.run(["-a", "stop"])
|
253
|
+
test_service_state.should == "stopped"
|
254
|
+
end
|
255
|
+
|
256
|
+
it "pause should not affect the service" do
|
257
|
+
service_manager.run(["-a", "pause"])
|
258
|
+
test_service_state.should == "paused"
|
259
|
+
end
|
260
|
+
|
261
|
+
it "start should raise an error" do
|
262
|
+
lambda {service_manager.run(["-a", "start"])}.should raise_error(::Win32::Service::Error)
|
263
|
+
end
|
264
|
+
|
265
|
+
end
|
266
|
+
end
|
267
|
+
end
|
268
|
+
end
|
269
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Chirag Jog (<chirag@clogeny.com>)
|
3
|
+
# Copyright:: Copyright (c) 2013 Opscode, Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
require 'spec_helper'
|
20
|
+
if Chef::Platform.windows?
|
21
|
+
require 'chef/win32/version'
|
22
|
+
require 'ruby-wmi'
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "Chef::ReservedNames::Win32::Version", :windows_only do
|
26
|
+
before do
|
27
|
+
|
28
|
+
host = WMI::Win32_OperatingSystem.find(:first)
|
29
|
+
|
30
|
+
# Use WMI to determine current OS version.
|
31
|
+
# On Win2k8R2 and later, we can dynamically obtain marketing
|
32
|
+
# names for comparison from WMI so the test should not
|
33
|
+
# need to be modified when new Windows releases arise.
|
34
|
+
# For Win2k3 and Win2k8, we use static names in this test
|
35
|
+
# based on the version number information from WMI. The names
|
36
|
+
# from WMI contain extended characters such as registered
|
37
|
+
# trademark on Win2k8 and Win2k3 that we're not using in our
|
38
|
+
# library, so we have to set the expectation statically.
|
39
|
+
if Chef::Platform::windows_server_2003?
|
40
|
+
@current_os_version = 'Windows Server 2003 R2'
|
41
|
+
elsif is_windows_server_2008?(host)
|
42
|
+
@current_os_version = 'Windows Server 2008'
|
43
|
+
else
|
44
|
+
# The name from WMI is actually what we want in Win2k8R2+.
|
45
|
+
# So this expectation sould continue to hold without modification
|
46
|
+
# as new versions of Windows are released.
|
47
|
+
@current_os_version = host.caption
|
48
|
+
end
|
49
|
+
|
50
|
+
@version = Chef::ReservedNames::Win32::Version.new
|
51
|
+
end
|
52
|
+
|
53
|
+
context "Windows Operating System version" do
|
54
|
+
it "should match the version from WMI" do
|
55
|
+
@current_os_version.should include(@version.marketing_name)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def is_windows_server_2008?(wmi_host)
|
60
|
+
is_win2k8 = false
|
61
|
+
|
62
|
+
os_version = wmi_host.send('Version')
|
63
|
+
|
64
|
+
# The operating system version is a string in the following form
|
65
|
+
# that can be split into components based on the '.' delimiter:
|
66
|
+
# MajorVersionNumber.MinorVersionNumber.BuildNumber
|
67
|
+
os_version_components = os_version.split('.')
|
68
|
+
|
69
|
+
if os_version_components.length < 2
|
70
|
+
raise 'WMI returned a Windows version from Win32_OperatingSystem.Version ' +
|
71
|
+
'with an unexpected format. The Windows version could not be determined.'
|
72
|
+
end
|
73
|
+
|
74
|
+
# Windows 6.0 is Windows Server 2008, so test the major and
|
75
|
+
# minor version components
|
76
|
+
is_win2k8 = os_version_components[0] == '6' && os_version_components[1] == '0'
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,805 @@
|
|
1
|
+
#
|
2
|
+
# Author:: John Keiser (<jkeiser@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
|
+
require 'support/shared/integration/integration_helper'
|
19
|
+
require 'chef/knife/list'
|
20
|
+
require 'chef/knife/show'
|
21
|
+
|
22
|
+
describe 'chef_repo_path tests' do
|
23
|
+
extend IntegrationSupport
|
24
|
+
include KnifeSupport
|
25
|
+
|
26
|
+
# TODO alternate repo_path / *_path
|
27
|
+
context 'alternate *_path' do
|
28
|
+
when_the_repository 'has clients and clients2, cookbooks and cookbooks2, etc.' do
|
29
|
+
file 'clients/client1.json', {}
|
30
|
+
file 'cookbooks/cookbook1/metadata.rb', ''
|
31
|
+
file 'data_bags/bag/item.json', {}
|
32
|
+
file 'environments/env1.json', {}
|
33
|
+
file 'nodes/node1.json', {}
|
34
|
+
file 'roles/role1.json', {}
|
35
|
+
file 'users/user1.json', {}
|
36
|
+
|
37
|
+
file 'clients2/client2.json', {}
|
38
|
+
file 'cookbooks2/cookbook2/metadata.rb', ''
|
39
|
+
file 'data_bags2/bag2/item2.json', {}
|
40
|
+
file 'environments2/env2.json', {}
|
41
|
+
file 'nodes2/node2.json', {}
|
42
|
+
file 'roles2/role2.json', {}
|
43
|
+
file 'users2/user2.json', {}
|
44
|
+
|
45
|
+
directory 'chef_repo2' do
|
46
|
+
file 'clients/client3.json', {}
|
47
|
+
file 'cookbooks/cookbook3/metadata.rb', ''
|
48
|
+
file 'data_bags/bag3/item3.json', {}
|
49
|
+
file 'environments/env3.json', {}
|
50
|
+
file 'nodes/node3.json', {}
|
51
|
+
file 'roles/role3.json', {}
|
52
|
+
file 'users/user3.json', {}
|
53
|
+
end
|
54
|
+
|
55
|
+
context 'when all _paths are set to alternates' do
|
56
|
+
before :each do
|
57
|
+
%w(client cookbook data_bag environment node role user).each do |object_name|
|
58
|
+
Chef::Config["#{object_name}_path".to_sym] = File.join(Chef::Config.chef_repo_path, "#{object_name}s2")
|
59
|
+
end
|
60
|
+
Chef::Config.chef_repo_path = File.join(Chef::Config.chef_repo_path, 'chef_repo2')
|
61
|
+
end
|
62
|
+
|
63
|
+
context 'when cwd is at the top level' do
|
64
|
+
cwd '.'
|
65
|
+
it 'knife list --local -Rfp fails' do
|
66
|
+
knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
context 'when cwd is inside the data_bags directory' do
|
71
|
+
cwd 'data_bags'
|
72
|
+
it 'knife list --local -Rfp fails' do
|
73
|
+
knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
context 'when cwd is inside chef_repo2' do
|
78
|
+
cwd 'chef_repo2'
|
79
|
+
it 'knife list --local -Rfp lists everything' do
|
80
|
+
knife('list --local -Rfp').should_succeed <<EOM
|
81
|
+
clients/
|
82
|
+
clients/client2.json
|
83
|
+
cookbooks/
|
84
|
+
cookbooks/cookbook2/
|
85
|
+
cookbooks/cookbook2/metadata.rb
|
86
|
+
data_bags/
|
87
|
+
data_bags/bag2/
|
88
|
+
data_bags/bag2/item2.json
|
89
|
+
environments/
|
90
|
+
environments/env2.json
|
91
|
+
nodes/
|
92
|
+
nodes/node2.json
|
93
|
+
roles/
|
94
|
+
roles/role2.json
|
95
|
+
users/
|
96
|
+
users/user2.json
|
97
|
+
EOM
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
context 'when cwd is inside data_bags2' do
|
102
|
+
cwd 'data_bags2'
|
103
|
+
it 'knife list --local -Rfp lists data bags' do
|
104
|
+
knife('list --local -Rfp').should_succeed <<EOM
|
105
|
+
bag2/
|
106
|
+
bag2/item2.json
|
107
|
+
EOM
|
108
|
+
end
|
109
|
+
it 'knife list --local -Rfp ../roles lists roles' do
|
110
|
+
knife('list --local -Rfp ../roles').should_succeed "/roles/role2.json\n"
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
context 'when all _paths except chef_repo_path are set to alternates' do
|
116
|
+
before :each do
|
117
|
+
%w(client cookbook data_bag environment node role user).each do |object_name|
|
118
|
+
Chef::Config["#{object_name}_path".to_sym] = File.join(Chef::Config.chef_repo_path, "#{object_name}s2")
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
context 'when cwd is at the top level' do
|
123
|
+
cwd '.'
|
124
|
+
it 'knife list --local -Rfp lists everything' do
|
125
|
+
knife('list --local -Rfp').should_succeed <<EOM
|
126
|
+
clients/
|
127
|
+
clients/client2.json
|
128
|
+
cookbooks/
|
129
|
+
cookbooks/cookbook2/
|
130
|
+
cookbooks/cookbook2/metadata.rb
|
131
|
+
data_bags/
|
132
|
+
data_bags/bag2/
|
133
|
+
data_bags/bag2/item2.json
|
134
|
+
environments/
|
135
|
+
environments/env2.json
|
136
|
+
nodes/
|
137
|
+
nodes/node2.json
|
138
|
+
roles/
|
139
|
+
roles/role2.json
|
140
|
+
users/
|
141
|
+
users/user2.json
|
142
|
+
EOM
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
context 'when cwd is inside the data_bags directory' do
|
147
|
+
cwd 'data_bags'
|
148
|
+
it 'knife list --local -Rfp fails' do
|
149
|
+
knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
context 'when cwd is inside chef_repo2' do
|
154
|
+
cwd 'chef_repo2'
|
155
|
+
it 'knife list -Rfp fails' do
|
156
|
+
knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
context 'when cwd is inside data_bags2' do
|
161
|
+
cwd 'data_bags2'
|
162
|
+
it 'knife list --local -Rfp lists data bags' do
|
163
|
+
knife('list --local -Rfp').should_succeed <<EOM
|
164
|
+
bag2/
|
165
|
+
bag2/item2.json
|
166
|
+
EOM
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
context 'when only chef_repo_path is set to its alternate' do
|
172
|
+
before :each do
|
173
|
+
%w(client cookbook data_bag environment node role user).each do |object_name|
|
174
|
+
Chef::Config["#{object_name}_path".to_sym] = nil
|
175
|
+
end
|
176
|
+
Chef::Config.chef_repo_path = File.join(Chef::Config.chef_repo_path, 'chef_repo2')
|
177
|
+
end
|
178
|
+
|
179
|
+
context 'when cwd is at the top level' do
|
180
|
+
cwd '.'
|
181
|
+
it 'knife list --local -Rfp fails' do
|
182
|
+
knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
context 'when cwd is inside the data_bags directory' do
|
187
|
+
cwd 'data_bags'
|
188
|
+
it 'knife list --local -Rfp fails' do
|
189
|
+
knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
193
|
+
context 'when cwd is inside chef_repo2' do
|
194
|
+
cwd 'chef_repo2'
|
195
|
+
it 'knife list --local -Rfp lists everything' do
|
196
|
+
knife('list --local -Rfp').should_succeed <<EOM
|
197
|
+
clients/
|
198
|
+
clients/client3.json
|
199
|
+
cookbooks/
|
200
|
+
cookbooks/cookbook3/
|
201
|
+
cookbooks/cookbook3/metadata.rb
|
202
|
+
data_bags/
|
203
|
+
data_bags/bag3/
|
204
|
+
data_bags/bag3/item3.json
|
205
|
+
environments/
|
206
|
+
environments/env3.json
|
207
|
+
nodes/
|
208
|
+
nodes/node3.json
|
209
|
+
roles/
|
210
|
+
roles/role3.json
|
211
|
+
users/
|
212
|
+
users/user3.json
|
213
|
+
EOM
|
214
|
+
end
|
215
|
+
end
|
216
|
+
|
217
|
+
context 'when cwd is inside chef_repo2/data_bags' do
|
218
|
+
cwd 'chef_repo2/data_bags'
|
219
|
+
it 'knife list --local -Rfp lists data bags' do
|
220
|
+
knife('list --local -Rfp').should_succeed <<EOM
|
221
|
+
bag3/
|
222
|
+
bag3/item3.json
|
223
|
+
EOM
|
224
|
+
end
|
225
|
+
end
|
226
|
+
end
|
227
|
+
|
228
|
+
context 'when paths are set to point to both versions of each' do
|
229
|
+
before :each do
|
230
|
+
%w(client cookbook data_bag environment node role user).each do |object_name|
|
231
|
+
Chef::Config["#{object_name}_path".to_sym] = [
|
232
|
+
File.join(Chef::Config.chef_repo_path, "#{object_name}s"),
|
233
|
+
File.join(Chef::Config.chef_repo_path, "#{object_name}s2")
|
234
|
+
]
|
235
|
+
end
|
236
|
+
Chef::Config.chef_repo_path = File.join(Chef::Config.chef_repo_path, 'chef_repo2')
|
237
|
+
end
|
238
|
+
|
239
|
+
context 'when there is a directory in clients1 and file in clients2 with the same name' do
|
240
|
+
directory 'clients/blah.json'
|
241
|
+
file 'clients2/blah.json', {}
|
242
|
+
it 'knife show /clients/blah.json succeeds' do
|
243
|
+
knife('show --local /clients/blah.json').should_succeed <<EOM
|
244
|
+
/clients/blah.json:
|
245
|
+
{
|
246
|
+
}
|
247
|
+
EOM
|
248
|
+
end
|
249
|
+
end
|
250
|
+
|
251
|
+
context 'when there is a file in cookbooks1 and directory in cookbooks2 with the same name' do
|
252
|
+
file 'cookbooks/blah', ''
|
253
|
+
file 'cookbooks2/blah/metadata.rb', ''
|
254
|
+
it 'knife list -Rfp cookbooks shows files in blah' do
|
255
|
+
knife('list --local -Rfp /cookbooks').should_succeed <<EOM
|
256
|
+
/cookbooks/blah/
|
257
|
+
/cookbooks/blah/metadata.rb
|
258
|
+
/cookbooks/cookbook1/
|
259
|
+
/cookbooks/cookbook1/metadata.rb
|
260
|
+
/cookbooks/cookbook2/
|
261
|
+
/cookbooks/cookbook2/metadata.rb
|
262
|
+
EOM
|
263
|
+
end
|
264
|
+
end
|
265
|
+
|
266
|
+
context 'when there is an empty directory in cookbooks1 and a real cookbook in cookbooks2 with the same name' do
|
267
|
+
directory 'cookbooks/blah'
|
268
|
+
file 'cookbooks2/blah/metadata.rb', ''
|
269
|
+
it 'knife list -Rfp cookbooks shows files in blah' do
|
270
|
+
knife('list --local -Rfp /cookbooks').should_succeed(<<EOM, :stderr => "WARN: Cookbook 'blah' is empty or entirely chefignored at #{Chef::Config.cookbook_path[0]}/blah\n")
|
271
|
+
/cookbooks/blah/
|
272
|
+
/cookbooks/blah/metadata.rb
|
273
|
+
/cookbooks/cookbook1/
|
274
|
+
/cookbooks/cookbook1/metadata.rb
|
275
|
+
/cookbooks/cookbook2/
|
276
|
+
/cookbooks/cookbook2/metadata.rb
|
277
|
+
EOM
|
278
|
+
end
|
279
|
+
end
|
280
|
+
|
281
|
+
context 'when there is a cookbook in cookbooks1 and a cookbook in cookbooks2 with the same name' do
|
282
|
+
file 'cookbooks/blah/metadata.json', {}
|
283
|
+
file 'cookbooks2/blah/metadata.rb', ''
|
284
|
+
it 'knife list -Rfp cookbooks shows files in the first cookbook and not the second' do
|
285
|
+
knife('list --local -Rfp /cookbooks').should_succeed(<<EOM, :stderr => "WARN: Child with name 'blah' found in multiple directories: #{Chef::Config.cookbook_path[0]}/blah and #{Chef::Config.cookbook_path[1]}/blah\n")
|
286
|
+
/cookbooks/blah/
|
287
|
+
/cookbooks/blah/metadata.json
|
288
|
+
/cookbooks/cookbook1/
|
289
|
+
/cookbooks/cookbook1/metadata.rb
|
290
|
+
/cookbooks/cookbook2/
|
291
|
+
/cookbooks/cookbook2/metadata.rb
|
292
|
+
EOM
|
293
|
+
end
|
294
|
+
end
|
295
|
+
|
296
|
+
context 'when there is a file in data_bags1 and a directory in data_bags2 with the same name' do
|
297
|
+
file 'data_bags/blah', ''
|
298
|
+
file 'data_bags2/blah/item.json', ''
|
299
|
+
it 'knife list -Rfp data_bags shows files in blah' do
|
300
|
+
knife('list --local -Rfp /data_bags').should_succeed <<EOM
|
301
|
+
/data_bags/bag/
|
302
|
+
/data_bags/bag/item.json
|
303
|
+
/data_bags/bag2/
|
304
|
+
/data_bags/bag2/item2.json
|
305
|
+
/data_bags/blah/
|
306
|
+
/data_bags/blah/item.json
|
307
|
+
EOM
|
308
|
+
end
|
309
|
+
end
|
310
|
+
|
311
|
+
context 'when there is a data bag in data_bags1 and a data bag in data_bags2 with the same name' do
|
312
|
+
file 'data_bags/blah/item1.json', ''
|
313
|
+
file 'data_bags2/blah/item2.json', ''
|
314
|
+
it 'knife list -Rfp data_bags shows only items in data_bags1' do
|
315
|
+
knife('list --local -Rfp /data_bags').should_succeed(<<EOM, :stderr => "WARN: Child with name 'blah' found in multiple directories: #{Chef::Config.data_bag_path[0]}/blah and #{Chef::Config.data_bag_path[1]}/blah\n")
|
316
|
+
/data_bags/bag/
|
317
|
+
/data_bags/bag/item.json
|
318
|
+
/data_bags/bag2/
|
319
|
+
/data_bags/bag2/item2.json
|
320
|
+
/data_bags/blah/
|
321
|
+
/data_bags/blah/item1.json
|
322
|
+
EOM
|
323
|
+
end
|
324
|
+
end
|
325
|
+
|
326
|
+
context 'when there is a directory in environments1 and file in environments2 with the same name' do
|
327
|
+
directory 'environments/blah.json'
|
328
|
+
file 'environments2/blah.json', {}
|
329
|
+
it 'knife show /environments/blah.json succeeds' do
|
330
|
+
knife('show --local /environments/blah.json').should_succeed <<EOM
|
331
|
+
/environments/blah.json:
|
332
|
+
{
|
333
|
+
}
|
334
|
+
EOM
|
335
|
+
end
|
336
|
+
end
|
337
|
+
|
338
|
+
context 'when there is a directory in nodes1 and file in nodes2 with the same name' do
|
339
|
+
directory 'nodes/blah.json'
|
340
|
+
file 'nodes2/blah.json', {}
|
341
|
+
it 'knife show /nodes/blah.json succeeds' do
|
342
|
+
knife('show --local /nodes/blah.json').should_succeed <<EOM
|
343
|
+
/nodes/blah.json:
|
344
|
+
{
|
345
|
+
}
|
346
|
+
EOM
|
347
|
+
end
|
348
|
+
end
|
349
|
+
|
350
|
+
context 'when there is a directory in roles1 and file in roles2 with the same name' do
|
351
|
+
directory 'roles/blah.json'
|
352
|
+
file 'roles2/blah.json', {}
|
353
|
+
it 'knife show /roles/blah.json succeeds' do
|
354
|
+
knife('show --local /roles/blah.json').should_succeed <<EOM
|
355
|
+
/roles/blah.json:
|
356
|
+
{
|
357
|
+
}
|
358
|
+
EOM
|
359
|
+
end
|
360
|
+
end
|
361
|
+
|
362
|
+
context 'when there is a directory in users1 and file in users2 with the same name' do
|
363
|
+
directory 'users/blah.json'
|
364
|
+
file 'users2/blah.json', {}
|
365
|
+
it 'knife show /users/blah.json succeeds' do
|
366
|
+
knife('show --local /users/blah.json').should_succeed <<EOM
|
367
|
+
/users/blah.json:
|
368
|
+
{
|
369
|
+
}
|
370
|
+
EOM
|
371
|
+
end
|
372
|
+
end
|
373
|
+
|
374
|
+
context 'when cwd is at the top level' do
|
375
|
+
cwd '.'
|
376
|
+
it 'knife list --local -Rfp fails' do
|
377
|
+
knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
|
378
|
+
end
|
379
|
+
end
|
380
|
+
|
381
|
+
context 'when cwd is inside the data_bags directory' do
|
382
|
+
cwd 'data_bags'
|
383
|
+
it 'knife list --local -Rfp lists data bags' do
|
384
|
+
knife('list --local -Rfp').should_succeed <<EOM
|
385
|
+
bag/
|
386
|
+
bag/item.json
|
387
|
+
bag2/
|
388
|
+
bag2/item2.json
|
389
|
+
EOM
|
390
|
+
end
|
391
|
+
end
|
392
|
+
|
393
|
+
context 'when cwd is inside chef_repo2' do
|
394
|
+
cwd 'chef_repo2'
|
395
|
+
it 'knife list --local -Rfp lists everything' do
|
396
|
+
knife('list --local -Rfp').should_succeed <<EOM
|
397
|
+
clients/
|
398
|
+
clients/client1.json
|
399
|
+
clients/client2.json
|
400
|
+
cookbooks/
|
401
|
+
cookbooks/cookbook1/
|
402
|
+
cookbooks/cookbook1/metadata.rb
|
403
|
+
cookbooks/cookbook2/
|
404
|
+
cookbooks/cookbook2/metadata.rb
|
405
|
+
data_bags/
|
406
|
+
data_bags/bag/
|
407
|
+
data_bags/bag/item.json
|
408
|
+
data_bags/bag2/
|
409
|
+
data_bags/bag2/item2.json
|
410
|
+
environments/
|
411
|
+
environments/env1.json
|
412
|
+
environments/env2.json
|
413
|
+
nodes/
|
414
|
+
nodes/node1.json
|
415
|
+
nodes/node2.json
|
416
|
+
roles/
|
417
|
+
roles/role1.json
|
418
|
+
roles/role2.json
|
419
|
+
users/
|
420
|
+
users/user1.json
|
421
|
+
users/user2.json
|
422
|
+
EOM
|
423
|
+
end
|
424
|
+
end
|
425
|
+
|
426
|
+
context 'when cwd is inside data_bags2' do
|
427
|
+
cwd 'data_bags2'
|
428
|
+
it 'knife list --local -Rfp lists data bags' do
|
429
|
+
knife('list --local -Rfp').should_succeed <<EOM
|
430
|
+
bag/
|
431
|
+
bag/item.json
|
432
|
+
bag2/
|
433
|
+
bag2/item2.json
|
434
|
+
EOM
|
435
|
+
end
|
436
|
+
end
|
437
|
+
end
|
438
|
+
|
439
|
+
context 'when when chef_repo_path is set to both places and no other _path is set' do
|
440
|
+
before :each do
|
441
|
+
%w(client cookbook data_bag environment node role user).each do |object_name|
|
442
|
+
Chef::Config["#{object_name}_path".to_sym] = nil
|
443
|
+
end
|
444
|
+
Chef::Config.chef_repo_path = [
|
445
|
+
Chef::Config.chef_repo_path,
|
446
|
+
File.join(Chef::Config.chef_repo_path, 'chef_repo2')
|
447
|
+
]
|
448
|
+
end
|
449
|
+
|
450
|
+
context 'when cwd is at the top level' do
|
451
|
+
cwd '.'
|
452
|
+
it 'knife list --local -Rfp lists everything' do
|
453
|
+
knife('list --local -Rfp').should_succeed <<EOM
|
454
|
+
clients/
|
455
|
+
clients/client1.json
|
456
|
+
clients/client3.json
|
457
|
+
cookbooks/
|
458
|
+
cookbooks/cookbook1/
|
459
|
+
cookbooks/cookbook1/metadata.rb
|
460
|
+
cookbooks/cookbook3/
|
461
|
+
cookbooks/cookbook3/metadata.rb
|
462
|
+
data_bags/
|
463
|
+
data_bags/bag/
|
464
|
+
data_bags/bag/item.json
|
465
|
+
data_bags/bag3/
|
466
|
+
data_bags/bag3/item3.json
|
467
|
+
environments/
|
468
|
+
environments/env1.json
|
469
|
+
environments/env3.json
|
470
|
+
nodes/
|
471
|
+
nodes/node1.json
|
472
|
+
nodes/node3.json
|
473
|
+
roles/
|
474
|
+
roles/role1.json
|
475
|
+
roles/role3.json
|
476
|
+
users/
|
477
|
+
users/user1.json
|
478
|
+
users/user3.json
|
479
|
+
EOM
|
480
|
+
end
|
481
|
+
end
|
482
|
+
|
483
|
+
context 'when cwd is inside the data_bags directory' do
|
484
|
+
cwd 'data_bags'
|
485
|
+
it 'knife list --local -Rfp lists data bags' do
|
486
|
+
knife('list --local -Rfp').should_succeed <<EOM
|
487
|
+
bag/
|
488
|
+
bag/item.json
|
489
|
+
bag3/
|
490
|
+
bag3/item3.json
|
491
|
+
EOM
|
492
|
+
end
|
493
|
+
end
|
494
|
+
|
495
|
+
context 'when cwd is inside chef_repo2' do
|
496
|
+
cwd 'chef_repo2'
|
497
|
+
it 'knife list --local -Rfp lists everything' do
|
498
|
+
knife('list --local -Rfp').should_succeed <<EOM
|
499
|
+
clients/
|
500
|
+
clients/client1.json
|
501
|
+
clients/client3.json
|
502
|
+
cookbooks/
|
503
|
+
cookbooks/cookbook1/
|
504
|
+
cookbooks/cookbook1/metadata.rb
|
505
|
+
cookbooks/cookbook3/
|
506
|
+
cookbooks/cookbook3/metadata.rb
|
507
|
+
data_bags/
|
508
|
+
data_bags/bag/
|
509
|
+
data_bags/bag/item.json
|
510
|
+
data_bags/bag3/
|
511
|
+
data_bags/bag3/item3.json
|
512
|
+
environments/
|
513
|
+
environments/env1.json
|
514
|
+
environments/env3.json
|
515
|
+
nodes/
|
516
|
+
nodes/node1.json
|
517
|
+
nodes/node3.json
|
518
|
+
roles/
|
519
|
+
roles/role1.json
|
520
|
+
roles/role3.json
|
521
|
+
users/
|
522
|
+
users/user1.json
|
523
|
+
users/user3.json
|
524
|
+
EOM
|
525
|
+
end
|
526
|
+
end
|
527
|
+
|
528
|
+
context 'when cwd is inside chef_repo2/data_bags' do
|
529
|
+
cwd 'chef_repo2/data_bags'
|
530
|
+
it 'knife list --local -Rfp lists data bags' do
|
531
|
+
knife('list --local -Rfp').should_succeed <<EOM
|
532
|
+
bag/
|
533
|
+
bag/item.json
|
534
|
+
bag3/
|
535
|
+
bag3/item3.json
|
536
|
+
EOM
|
537
|
+
end
|
538
|
+
end
|
539
|
+
end
|
540
|
+
|
541
|
+
context 'when cookbook_path is set and nothing else' do
|
542
|
+
before :each do
|
543
|
+
%w(client data_bag environment node role user).each do |object_name|
|
544
|
+
Chef::Config["#{object_name}_path".to_sym] = nil
|
545
|
+
end
|
546
|
+
Chef::Config.cookbook_path = File.join(Chef::Config.chef_repo_path, 'chef_repo2', 'cookbooks')
|
547
|
+
Chef::Config.chef_repo_path = nil
|
548
|
+
end
|
549
|
+
|
550
|
+
context 'when cwd is at the top level' do
|
551
|
+
cwd '.'
|
552
|
+
it 'knife list --local -Rfp fails' do
|
553
|
+
knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
|
554
|
+
end
|
555
|
+
end
|
556
|
+
|
557
|
+
context 'when cwd is inside the data_bags directory' do
|
558
|
+
cwd 'data_bags'
|
559
|
+
it 'knife list --local -Rfp fails' do
|
560
|
+
knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
|
561
|
+
end
|
562
|
+
end
|
563
|
+
|
564
|
+
context 'when cwd is inside chef_repo2' do
|
565
|
+
cwd 'chef_repo2'
|
566
|
+
it 'knife list --local -Rfp lists everything' do
|
567
|
+
knife('list --local -Rfp').should_succeed <<EOM
|
568
|
+
clients/
|
569
|
+
clients/client3.json
|
570
|
+
cookbooks/
|
571
|
+
cookbooks/cookbook3/
|
572
|
+
cookbooks/cookbook3/metadata.rb
|
573
|
+
data_bags/
|
574
|
+
data_bags/bag3/
|
575
|
+
data_bags/bag3/item3.json
|
576
|
+
environments/
|
577
|
+
environments/env3.json
|
578
|
+
nodes/
|
579
|
+
nodes/node3.json
|
580
|
+
roles/
|
581
|
+
roles/role3.json
|
582
|
+
users/
|
583
|
+
users/user3.json
|
584
|
+
EOM
|
585
|
+
end
|
586
|
+
end
|
587
|
+
|
588
|
+
context 'when cwd is inside chef_repo2/data_bags' do
|
589
|
+
cwd 'chef_repo2/data_bags'
|
590
|
+
it 'knife list --local -Rfp lists data bags' do
|
591
|
+
knife('list --local -Rfp').should_succeed <<EOM
|
592
|
+
bag3/
|
593
|
+
bag3/item3.json
|
594
|
+
EOM
|
595
|
+
end
|
596
|
+
end
|
597
|
+
end
|
598
|
+
|
599
|
+
context 'when cookbook_path is set to multiple places and nothing else is set' do
|
600
|
+
before :each do
|
601
|
+
%w(client data_bag environment node role user).each do |object_name|
|
602
|
+
Chef::Config["#{object_name}_path".to_sym] = nil
|
603
|
+
end
|
604
|
+
Chef::Config.cookbook_path = [
|
605
|
+
File.join(Chef::Config.chef_repo_path, 'cookbooks'),
|
606
|
+
File.join(Chef::Config.chef_repo_path, 'chef_repo2', 'cookbooks')
|
607
|
+
]
|
608
|
+
Chef::Config.chef_repo_path = nil
|
609
|
+
end
|
610
|
+
|
611
|
+
context 'when cwd is at the top level' do
|
612
|
+
cwd '.'
|
613
|
+
it 'knife list --local -Rfp lists everything' do
|
614
|
+
knife('list --local -Rfp').should_succeed <<EOM
|
615
|
+
clients/
|
616
|
+
clients/client1.json
|
617
|
+
clients/client3.json
|
618
|
+
cookbooks/
|
619
|
+
cookbooks/cookbook1/
|
620
|
+
cookbooks/cookbook1/metadata.rb
|
621
|
+
cookbooks/cookbook3/
|
622
|
+
cookbooks/cookbook3/metadata.rb
|
623
|
+
data_bags/
|
624
|
+
data_bags/bag/
|
625
|
+
data_bags/bag/item.json
|
626
|
+
data_bags/bag3/
|
627
|
+
data_bags/bag3/item3.json
|
628
|
+
environments/
|
629
|
+
environments/env1.json
|
630
|
+
environments/env3.json
|
631
|
+
nodes/
|
632
|
+
nodes/node1.json
|
633
|
+
nodes/node3.json
|
634
|
+
roles/
|
635
|
+
roles/role1.json
|
636
|
+
roles/role3.json
|
637
|
+
users/
|
638
|
+
users/user1.json
|
639
|
+
users/user3.json
|
640
|
+
EOM
|
641
|
+
end
|
642
|
+
end
|
643
|
+
|
644
|
+
context 'when cwd is inside the data_bags directory' do
|
645
|
+
cwd 'data_bags'
|
646
|
+
it 'knife list --local -Rfp lists data bags' do
|
647
|
+
knife('list --local -Rfp').should_succeed <<EOM
|
648
|
+
bag/
|
649
|
+
bag/item.json
|
650
|
+
bag3/
|
651
|
+
bag3/item3.json
|
652
|
+
EOM
|
653
|
+
end
|
654
|
+
end
|
655
|
+
|
656
|
+
context 'when cwd is inside chef_repo2' do
|
657
|
+
cwd 'chef_repo2'
|
658
|
+
it 'knife list --local -Rfp lists everything' do
|
659
|
+
knife('list --local -Rfp').should_succeed <<EOM
|
660
|
+
clients/
|
661
|
+
clients/client1.json
|
662
|
+
clients/client3.json
|
663
|
+
cookbooks/
|
664
|
+
cookbooks/cookbook1/
|
665
|
+
cookbooks/cookbook1/metadata.rb
|
666
|
+
cookbooks/cookbook3/
|
667
|
+
cookbooks/cookbook3/metadata.rb
|
668
|
+
data_bags/
|
669
|
+
data_bags/bag/
|
670
|
+
data_bags/bag/item.json
|
671
|
+
data_bags/bag3/
|
672
|
+
data_bags/bag3/item3.json
|
673
|
+
environments/
|
674
|
+
environments/env1.json
|
675
|
+
environments/env3.json
|
676
|
+
nodes/
|
677
|
+
nodes/node1.json
|
678
|
+
nodes/node3.json
|
679
|
+
roles/
|
680
|
+
roles/role1.json
|
681
|
+
roles/role3.json
|
682
|
+
users/
|
683
|
+
users/user1.json
|
684
|
+
users/user3.json
|
685
|
+
EOM
|
686
|
+
end
|
687
|
+
end
|
688
|
+
|
689
|
+
context 'when cwd is inside chef_repo2/data_bags' do
|
690
|
+
cwd 'chef_repo2/data_bags'
|
691
|
+
it 'knife list --local -Rfp lists data bags' do
|
692
|
+
knife('list --local -Rfp').should_succeed <<EOM
|
693
|
+
bag/
|
694
|
+
bag/item.json
|
695
|
+
bag3/
|
696
|
+
bag3/item3.json
|
697
|
+
EOM
|
698
|
+
end
|
699
|
+
end
|
700
|
+
end
|
701
|
+
|
702
|
+
context 'when data_bag_path and chef_repo_path are set, and nothing else' do
|
703
|
+
before :each do
|
704
|
+
%w(client cookbook environment node role user).each do |object_name|
|
705
|
+
Chef::Config["#{object_name}_path".to_sym] = nil
|
706
|
+
end
|
707
|
+
Chef::Config.data_bag_path = File.join(Chef::Config.chef_repo_path, 'data_bags')
|
708
|
+
Chef::Config.chef_repo_path = File.join(Chef::Config.chef_repo_path, 'chef_repo2')
|
709
|
+
end
|
710
|
+
|
711
|
+
context 'when cwd is at the top level' do
|
712
|
+
cwd '.'
|
713
|
+
it 'knife list --local -Rfp fails' do
|
714
|
+
knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
|
715
|
+
end
|
716
|
+
end
|
717
|
+
|
718
|
+
context 'when cwd is inside the data_bags directory' do
|
719
|
+
cwd 'data_bags'
|
720
|
+
it 'knife list --local -Rfp lists data bags' do
|
721
|
+
knife('list --local -Rfp').should_succeed <<EOM
|
722
|
+
bag/
|
723
|
+
bag/item.json
|
724
|
+
EOM
|
725
|
+
end
|
726
|
+
end
|
727
|
+
|
728
|
+
context 'when cwd is inside chef_repo2' do
|
729
|
+
cwd 'chef_repo2'
|
730
|
+
it 'knife list --local -Rfp lists everything' do
|
731
|
+
knife('list --local -Rfp').should_succeed <<EOM
|
732
|
+
clients/
|
733
|
+
clients/client3.json
|
734
|
+
cookbooks/
|
735
|
+
cookbooks/cookbook3/
|
736
|
+
cookbooks/cookbook3/metadata.rb
|
737
|
+
data_bags/
|
738
|
+
data_bags/bag/
|
739
|
+
data_bags/bag/item.json
|
740
|
+
environments/
|
741
|
+
environments/env3.json
|
742
|
+
nodes/
|
743
|
+
nodes/node3.json
|
744
|
+
roles/
|
745
|
+
roles/role3.json
|
746
|
+
users/
|
747
|
+
users/user3.json
|
748
|
+
EOM
|
749
|
+
end
|
750
|
+
end
|
751
|
+
|
752
|
+
context 'when cwd is inside chef_repo2/data_bags' do
|
753
|
+
cwd 'chef_repo2/data_bags'
|
754
|
+
it 'knife list --local -Rfp fails' do
|
755
|
+
knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
|
756
|
+
end
|
757
|
+
end
|
758
|
+
end
|
759
|
+
|
760
|
+
context 'when data_bag_path is set and nothing else' do
|
761
|
+
before :each do
|
762
|
+
%w(client cookbook environment node role user).each do |object_name|
|
763
|
+
Chef::Config["#{object_name}_path".to_sym] = nil
|
764
|
+
end
|
765
|
+
Chef::Config.data_bag_path = File.join(Chef::Config.chef_repo_path, 'data_bags')
|
766
|
+
Chef::Config.chef_repo_path = nil
|
767
|
+
end
|
768
|
+
|
769
|
+
it 'knife list --local -Rfp / fails' do
|
770
|
+
knife('list --local -Rfp /').should_fail("ERROR: Must specify either chef_repo_path or cookbook_path in Chef config file\n")
|
771
|
+
end
|
772
|
+
|
773
|
+
it 'knife list --local -Rfp /data_bags fails' do
|
774
|
+
knife('list --local -Rfp /data_bags').should_fail("ERROR: Must specify either chef_repo_path or cookbook_path in Chef config file\n")
|
775
|
+
end
|
776
|
+
|
777
|
+
context 'when cwd is inside the data_bags directory' do
|
778
|
+
cwd 'data_bags'
|
779
|
+
it 'knife list --local -Rfp fails' do
|
780
|
+
knife('list --local -Rfp').should_fail("ERROR: Must specify either chef_repo_path or cookbook_path in Chef config file\n")
|
781
|
+
end
|
782
|
+
end
|
783
|
+
end
|
784
|
+
end
|
785
|
+
|
786
|
+
when_the_repository 'is empty' do
|
787
|
+
context 'when the repository _paths point to places that do not exist' do
|
788
|
+
before :each do
|
789
|
+
%w(client cookbook data_bag environment node role user).each do |object_name|
|
790
|
+
Chef::Config["#{object_name}_path".to_sym] = File.join(Chef::Config.chef_repo_path, 'nowhere', object_name)
|
791
|
+
end
|
792
|
+
Chef::Config.chef_repo_path = File.join(Chef::Config.chef_repo_path, 'nowhere')
|
793
|
+
end
|
794
|
+
|
795
|
+
it 'knife list --local -Rfp / fails' do
|
796
|
+
knife('list --local -Rfp /').should_succeed ''
|
797
|
+
end
|
798
|
+
|
799
|
+
it 'knife list --local -Rfp /data_bags fails' do
|
800
|
+
knife('list --local -Rfp /data_bags').should_fail("ERROR: /data_bags: No such file or directory\n")
|
801
|
+
end
|
802
|
+
end
|
803
|
+
end
|
804
|
+
end
|
805
|
+
end
|