chef 14.13.11-universal-mingw32 → 14.14.14-universal-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 +4 -4
- data/Gemfile +72 -72
- data/LICENSE +201 -201
- data/README.md +240 -240
- data/Rakefile +72 -72
- data/bin/chef-apply +24 -24
- data/bin/chef-client +25 -25
- data/bin/chef-resource-inspector +26 -26
- data/bin/chef-service-manager +37 -37
- data/bin/chef-shell +31 -31
- data/bin/chef-solo +24 -24
- data/bin/chef-windows-service +34 -34
- data/bin/knife +24 -24
- data/chef-universal-mingw32.gemspec +24 -24
- data/chef.gemspec +62 -62
- data/distro/powershell/chef/chef.psm1 +459 -459
- data/ext/win32-eventlog/Rakefile +53 -53
- data/ext/win32-eventlog/chef-log.man +56 -56
- data/lib/.DS_Store +0 -0
- data/lib/chef.rb +34 -34
- data/lib/chef/.DS_Store +0 -0
- data/lib/chef/api_client.rb +228 -228
- data/lib/chef/api_client/registration.rb +200 -200
- data/lib/chef/api_client_v1.rb +326 -326
- data/lib/chef/application.rb +398 -398
- data/lib/chef/application/apply.rb +226 -226
- data/lib/chef/application/client.rb +559 -559
- data/lib/chef/application/exit_code.rb +164 -164
- data/lib/chef/application/knife.rb +221 -221
- data/lib/chef/application/solo.rb +381 -381
- data/lib/chef/application/windows_service.rb +337 -337
- data/lib/chef/application/windows_service_manager.rb +204 -204
- data/lib/chef/applications.rb +4 -4
- data/lib/chef/audit/audit_event_proxy.rb +93 -93
- data/lib/chef/audit/audit_reporter.rb +176 -176
- data/lib/chef/audit/control_group_data.rb +145 -145
- data/lib/chef/audit/logger.rb +36 -36
- data/lib/chef/audit/rspec_formatter.rb +37 -37
- data/lib/chef/audit/runner.rb +196 -196
- data/lib/chef/blacklist.rb +81 -81
- data/lib/chef/chef_class.rb +248 -248
- data/lib/chef/chef_fs.rb +59 -59
- data/lib/chef/chef_fs/chef_fs_data_store.rb +870 -870
- data/lib/chef/chef_fs/command_line.rb +291 -291
- data/lib/chef/chef_fs/config.rb +284 -284
- data/lib/chef/chef_fs/data_handler/acl_data_handler.rb +26 -26
- data/lib/chef/chef_fs/data_handler/client_data_handler.rb +39 -39
- data/lib/chef/chef_fs/data_handler/client_key_data_handler.rb +11 -11
- data/lib/chef/chef_fs/data_handler/container_data_handler.rb +35 -35
- data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +38 -38
- data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +67 -67
- data/lib/chef/chef_fs/data_handler/data_handler_base.rb +207 -207
- data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +40 -40
- data/lib/chef/chef_fs/data_handler/group_data_handler.rb +55 -55
- data/lib/chef/chef_fs/data_handler/node_data_handler.rb +36 -36
- data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +36 -36
- data/lib/chef/chef_fs/data_handler/organization_invites_data_handler.rb +17 -17
- data/lib/chef/chef_fs/data_handler/organization_members_data_handler.rb +17 -17
- data/lib/chef/chef_fs/data_handler/policy_data_handler.rb +48 -48
- data/lib/chef/chef_fs/data_handler/policy_group_data_handler.rb +33 -33
- data/lib/chef/chef_fs/data_handler/role_data_handler.rb +40 -40
- data/lib/chef/chef_fs/data_handler/user_data_handler.rb +29 -29
- data/lib/chef/chef_fs/file_pattern.rb +301 -301
- data/lib/chef/chef_fs/file_system.rb +431 -431
- data/lib/chef/chef_fs/file_system/base_fs_dir.rb +47 -47
- data/lib/chef/chef_fs/file_system/base_fs_object.rb +187 -187
- data/lib/chef/chef_fs/file_system/chef_server/acl_dir.rb +65 -65
- data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +67 -67
- data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +75 -75
- data/lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb +196 -196
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifact_dir.rb +38 -38
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifacts_dir.rb +106 -106
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +208 -208
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +78 -78
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_subdir.rb +61 -61
- data/lib/chef/chef_fs/file_system/chef_server/cookbooks_acl_dir.rb +42 -42
- data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +105 -105
- data/lib/chef/chef_fs/file_system/chef_server/data_bag_dir.rb +76 -76
- data/lib/chef/chef_fs/file_system/chef_server/data_bag_entry.rb +19 -19
- data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +67 -67
- data/lib/chef/chef_fs/file_system/chef_server/environments_dir.rb +56 -56
- data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +51 -51
- data/lib/chef/chef_fs/file_system/chef_server/org_entry.rb +35 -35
- data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +65 -65
- data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +64 -64
- data/lib/chef/chef_fs/file_system/chef_server/policies_acl_dir.rb +41 -41
- data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +158 -158
- data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +135 -135
- data/lib/chef/chef_fs/file_system/chef_server/policy_groups_dir.rb +43 -43
- data/lib/chef/chef_fs/file_system/chef_server/policy_revision_entry.rb +38 -38
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +176 -176
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +207 -207
- data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbook_dir.rb +45 -45
- data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbooks_dir.rb +111 -111
- data/lib/chef/chef_fs/file_system/exceptions.rb +105 -105
- data/lib/chef/chef_fs/file_system/memory/memory_dir.rb +53 -53
- data/lib/chef/chef_fs/file_system/memory/memory_file.rb +20 -20
- data/lib/chef/chef_fs/file_system/memory/memory_root.rb +23 -23
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +62 -62
- data/lib/chef/chef_fs/file_system/nonexistent_fs_object.rb +32 -32
- data/lib/chef/chef_fs/file_system/repository/acl.rb +45 -45
- data/lib/chef/chef_fs/file_system/repository/acls_dir.rb +50 -50
- data/lib/chef/chef_fs/file_system/repository/acls_sub_dir.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/base_file.rb +155 -155
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_artifact_dir.rb +41 -41
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +143 -143
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +177 -177
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +232 -232
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_versioned_cookbook_dir.rb +42 -42
- data/lib/chef/chef_fs/file_system/repository/client.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/client_key.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/client_keys_dir.rb +42 -42
- data/lib/chef/chef_fs/file_system/repository/client_keys_sub_dir.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/clients_dir.rb +37 -37
- data/lib/chef/chef_fs/file_system/repository/container.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/containers_dir.rb +37 -37
- data/lib/chef/chef_fs/file_system/repository/cookbook_artifacts_dir.rb +36 -36
- data/lib/chef/chef_fs/file_system/repository/cookbooks_dir.rb +51 -51
- data/lib/chef/chef_fs/file_system/repository/data_bag.rb +39 -39
- data/lib/chef/chef_fs/file_system/repository/data_bag_item.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/data_bags_dir.rb +39 -39
- data/lib/chef/chef_fs/file_system/repository/directory.rb +167 -167
- data/lib/chef/chef_fs/file_system/repository/environment.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/environments_dir.rb +37 -37
- data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +151 -151
- data/lib/chef/chef_fs/file_system/repository/group.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/groups_dir.rb +37 -37
- data/lib/chef/chef_fs/file_system/repository/node.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +59 -59
- data/lib/chef/chef_fs/file_system/repository/policies_dir.rb +42 -42
- data/lib/chef/chef_fs/file_system/repository/policy.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/policy_group.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/policy_groups_dir.rb +37 -37
- data/lib/chef/chef_fs/file_system/repository/role.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/roles_dir.rb +37 -37
- data/lib/chef/chef_fs/file_system/repository/user.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/users_dir.rb +37 -37
- data/lib/chef/chef_fs/file_system/repository/versioned_cookbooks_dir.rb +34 -34
- data/lib/chef/chef_fs/file_system_cache.rb +80 -80
- data/lib/chef/chef_fs/knife.rb +161 -161
- data/lib/chef/chef_fs/parallelizer.rb +103 -103
- data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +35 -35
- data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +277 -277
- data/lib/chef/chef_fs/path_utils.rb +127 -127
- data/lib/chef/client.rb +1037 -1037
- data/lib/chef/config.rb +84 -84
- data/lib/chef/config_fetcher.rb +72 -72
- data/lib/chef/constants.rb +28 -28
- data/lib/chef/cookbook/chefignore.rb +78 -78
- data/lib/chef/cookbook/cookbook_collection.rb +63 -63
- data/lib/chef/cookbook/cookbook_version_loader.rb +267 -267
- data/lib/chef/cookbook/file_system_file_vendor.rb +58 -58
- data/lib/chef/cookbook/file_vendor.rb +71 -71
- data/lib/chef/cookbook/gem_installer.rb +100 -95
- data/lib/chef/cookbook/manifest_v0.rb +73 -73
- data/lib/chef/cookbook/manifest_v2.rb +45 -45
- data/lib/chef/cookbook/metadata.rb +804 -804
- data/lib/chef/cookbook/remote_file_vendor.rb +87 -87
- data/lib/chef/cookbook/synchronizer.rb +312 -312
- data/lib/chef/cookbook/syntax_check.rb +260 -260
- data/lib/chef/cookbook_loader.rb +208 -208
- data/lib/chef/cookbook_manifest.rb +328 -328
- data/lib/chef/cookbook_site_streaming_uploader.rb +241 -241
- data/lib/chef/cookbook_uploader.rb +156 -156
- data/lib/chef/cookbook_version.rb +544 -544
- data/lib/chef/daemon.rb +131 -131
- data/lib/chef/data_bag.rb +174 -174
- data/lib/chef/data_bag_item.rb +209 -209
- data/lib/chef/data_collector.rb +565 -565
- data/lib/chef/data_collector/messages.rb +100 -100
- data/lib/chef/data_collector/messages/helpers.rb +159 -159
- data/lib/chef/data_collector/resource_report.rb +123 -123
- data/lib/chef/decorator.rb +81 -81
- data/lib/chef/decorator/lazy.rb +60 -60
- data/lib/chef/decorator/lazy_array.rb +59 -59
- data/lib/chef/decorator/unchain.rb +43 -43
- data/lib/chef/delayed_evaluator.rb +21 -21
- data/lib/chef/deprecated.rb +248 -248
- data/lib/chef/deprecation/warnings.rb +38 -38
- data/lib/chef/digester.rb +74 -74
- data/lib/chef/dsl.rb +6 -6
- data/lib/chef/dsl/.DS_Store +0 -0
- data/lib/chef/dsl/audit.rb +51 -51
- data/lib/chef/dsl/chef_provisioning.rb +57 -57
- data/lib/chef/dsl/cheffish.rb +65 -65
- data/lib/chef/dsl/core.rb +52 -52
- data/lib/chef/dsl/data_query.rb +103 -103
- data/lib/chef/dsl/declare_resource.rb +319 -319
- data/lib/chef/dsl/definitions.rb +43 -43
- data/lib/chef/dsl/include_attribute.rb +57 -57
- data/lib/chef/dsl/include_recipe.rb +40 -40
- data/lib/chef/dsl/platform_introspection.rb +269 -269
- data/lib/chef/dsl/powershell.rb +29 -29
- data/lib/chef/dsl/reboot_pending.rb +57 -57
- data/lib/chef/dsl/recipe.rb +76 -76
- data/lib/chef/dsl/registry_helper.rb +63 -63
- data/lib/chef/dsl/resources.rb +49 -49
- data/lib/chef/dsl/universal.rb +60 -60
- data/lib/chef/encrypted_data_bag_item.rb +157 -157
- data/lib/chef/encrypted_data_bag_item/assertions.rb +54 -54
- data/lib/chef/encrypted_data_bag_item/check_encrypted.rb +56 -56
- data/lib/chef/encrypted_data_bag_item/decryption_failure.rb +22 -22
- data/lib/chef/encrypted_data_bag_item/decryptor.rb +227 -227
- data/lib/chef/encrypted_data_bag_item/encrypted_data_bag_item_assertions.rb +37 -37
- data/lib/chef/encrypted_data_bag_item/encryption_failure.rb +22 -22
- data/lib/chef/encrypted_data_bag_item/encryptor.rb +225 -225
- data/lib/chef/encrypted_data_bag_item/unacceptable_encrypted_data_bag_item_format.rb +22 -22
- data/lib/chef/encrypted_data_bag_item/unsupported_cipher.rb +22 -22
- data/lib/chef/encrypted_data_bag_item/unsupported_encrypted_data_bag_item_format.rb +22 -22
- data/lib/chef/environment.rb +319 -319
- data/lib/chef/event_dispatch/base.rb +445 -445
- data/lib/chef/event_dispatch/dispatcher.rb +62 -62
- data/lib/chef/event_dispatch/dsl.rb +65 -65
- data/lib/chef/event_dispatch/events_output_stream.rb +37 -37
- data/lib/chef/event_loggers/base.rb +62 -62
- data/lib/chef/event_loggers/windows_eventlog.rb +101 -101
- data/lib/chef/exceptions.rb +543 -531
- data/lib/chef/file_access_control.rb +75 -75
- data/lib/chef/file_access_control/unix.rb +290 -290
- data/lib/chef/file_access_control/windows.rb +337 -337
- data/lib/chef/file_cache.rb +223 -223
- data/lib/chef/file_content_management/content_base.rb +58 -58
- data/lib/chef/file_content_management/deploy.rb +37 -37
- data/lib/chef/file_content_management/deploy/cp.rb +48 -48
- data/lib/chef/file_content_management/deploy/mv_unix.rb +77 -77
- data/lib/chef/file_content_management/deploy/mv_windows.rb +103 -103
- data/lib/chef/file_content_management/tempfile.rb +107 -107
- data/lib/chef/formatters/base.rb +246 -246
- data/lib/chef/formatters/doc.rb +443 -443
- data/lib/chef/formatters/error_description.rb +86 -86
- data/lib/chef/formatters/error_inspectors.rb +19 -19
- data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +183 -183
- data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +154 -154
- data/lib/chef/formatters/error_inspectors/cookbook_resolve_error_inspector.rb +168 -168
- data/lib/chef/formatters/error_inspectors/cookbook_sync_error_inspector.rb +82 -82
- data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +128 -128
- data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +147 -147
- data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +124 -124
- data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +121 -121
- data/lib/chef/formatters/error_mapper.rb +85 -85
- data/lib/chef/formatters/indentable_output_stream.rb +182 -182
- data/lib/chef/formatters/minimal.rb +233 -233
- data/lib/chef/guard_interpreter.rb +32 -32
- data/lib/chef/guard_interpreter/default_guard_interpreter.rb +47 -47
- data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +138 -138
- data/lib/chef/handler.rb +266 -266
- data/lib/chef/handler/error_report.rb +33 -33
- data/lib/chef/handler/json_file.rb +62 -62
- data/lib/chef/http.rb +539 -539
- data/lib/chef/http/api_versions.rb +56 -56
- data/lib/chef/http/auth_credentials.rb +59 -59
- data/lib/chef/http/authenticator.rb +118 -118
- data/lib/chef/http/basic_client.rb +157 -157
- data/lib/chef/http/cookie_jar.rb +31 -31
- data/lib/chef/http/cookie_manager.rb +59 -59
- data/lib/chef/http/decompressor.rb +142 -142
- data/lib/chef/http/http_request.rb +189 -189
- data/lib/chef/http/json_input.rb +73 -73
- data/lib/chef/http/json_output.rb +81 -81
- data/lib/chef/http/json_to_model_output.rb +34 -34
- data/lib/chef/http/remote_request_id.rb +46 -46
- data/lib/chef/http/simple.rb +40 -40
- data/lib/chef/http/simple_json.rb +43 -43
- data/lib/chef/http/socketless_chef_zero_client.rb +209 -209
- data/lib/chef/http/ssl_policies.rb +130 -130
- data/lib/chef/http/validate_content_length.rb +114 -114
- data/lib/chef/json_compat.rb +68 -68
- data/lib/chef/key.rb +269 -269
- data/lib/chef/knife.rb +620 -620
- data/lib/chef/knife/.DS_Store +0 -0
- data/lib/chef/knife/bootstrap.rb +525 -501
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +159 -159
- data/lib/chef/knife/bootstrap/client_builder.rb +208 -208
- data/lib/chef/knife/bootstrap/templates/README.md +11 -11
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +243 -243
- data/lib/chef/knife/client_bulk_delete.rb +103 -103
- data/lib/chef/knife/client_create.rb +110 -110
- data/lib/chef/knife/client_delete.rb +62 -62
- data/lib/chef/knife/client_edit.rb +52 -52
- data/lib/chef/knife/client_key_create.rb +70 -70
- data/lib/chef/knife/client_key_delete.rb +77 -77
- data/lib/chef/knife/client_key_edit.rb +80 -80
- data/lib/chef/knife/client_key_list.rb +70 -70
- data/lib/chef/knife/client_key_show.rb +77 -77
- data/lib/chef/knife/client_list.rb +41 -41
- data/lib/chef/knife/client_reregister.rb +58 -58
- data/lib/chef/knife/client_show.rb +48 -48
- data/lib/chef/knife/config_get.rb +126 -126
- data/lib/chef/knife/config_get_profile.rb +37 -37
- data/lib/chef/knife/config_list_profiles.rb +121 -121
- data/lib/chef/knife/config_use_profile.rb +50 -50
- data/lib/chef/knife/configure.rb +147 -147
- data/lib/chef/knife/configure_client.rb +48 -48
- data/lib/chef/knife/cookbook_bulk_delete.rb +71 -71
- data/lib/chef/knife/cookbook_create.rb +29 -29
- data/lib/chef/knife/cookbook_delete.rb +151 -151
- data/lib/chef/knife/cookbook_download.rb +142 -142
- data/lib/chef/knife/cookbook_list.rb +47 -47
- data/lib/chef/knife/cookbook_metadata.rb +106 -106
- data/lib/chef/knife/cookbook_metadata_from_file.rb +43 -43
- data/lib/chef/knife/cookbook_show.rb +98 -98
- data/lib/chef/knife/cookbook_site_download.rb +40 -40
- data/lib/chef/knife/cookbook_site_install.rb +40 -40
- data/lib/chef/knife/cookbook_site_list.rb +40 -40
- data/lib/chef/knife/cookbook_site_search.rb +40 -40
- data/lib/chef/knife/cookbook_site_share.rb +41 -41
- data/lib/chef/knife/cookbook_site_show.rb +40 -40
- data/lib/chef/knife/cookbook_site_unshare.rb +41 -41
- data/lib/chef/knife/cookbook_test.rb +95 -95
- data/lib/chef/knife/cookbook_upload.rb +308 -308
- data/lib/chef/knife/core/bootstrap_context.rb +273 -273
- data/lib/chef/knife/core/cookbook_scm_repo.rb +159 -159
- data/lib/chef/knife/core/gem_glob_loader.rb +138 -138
- data/lib/chef/knife/core/generic_presenter.rb +231 -231
- data/lib/chef/knife/core/hashed_command_loader.rb +99 -99
- data/lib/chef/knife/core/node_editor.rb +130 -130
- data/lib/chef/knife/core/node_presenter.rb +158 -158
- data/lib/chef/knife/core/object_loader.rb +115 -115
- data/lib/chef/knife/core/status_presenter.rb +172 -172
- data/lib/chef/knife/core/subcommand_loader.rb +183 -183
- data/lib/chef/knife/core/text_formatter.rb +85 -85
- data/lib/chef/knife/core/ui.rb +286 -286
- data/lib/chef/knife/data_bag_create.rb +80 -80
- data/lib/chef/knife/data_bag_delete.rb +49 -49
- data/lib/chef/knife/data_bag_edit.rb +74 -74
- data/lib/chef/knife/data_bag_from_file.rb +113 -113
- data/lib/chef/knife/data_bag_list.rb +42 -42
- data/lib/chef/knife/data_bag_secret_options.rb +142 -142
- data/lib/chef/knife/data_bag_show.rb +69 -69
- data/lib/chef/knife/delete.rb +125 -125
- data/lib/chef/knife/deps.rb +154 -154
- data/lib/chef/knife/diff.rb +84 -84
- data/lib/chef/knife/download.rb +84 -84
- data/lib/chef/knife/edit.rb +88 -88
- data/lib/chef/knife/environment_compare.rb +127 -127
- data/lib/chef/knife/environment_create.rb +52 -52
- data/lib/chef/knife/environment_delete.rb +44 -44
- data/lib/chef/knife/environment_edit.rb +44 -44
- data/lib/chef/knife/environment_from_file.rb +84 -84
- data/lib/chef/knife/environment_list.rb +41 -41
- data/lib/chef/knife/environment_show.rb +47 -47
- data/lib/chef/knife/exec.rb +87 -87
- data/lib/chef/knife/key_create.rb +112 -112
- data/lib/chef/knife/key_create_base.rb +50 -50
- data/lib/chef/knife/key_delete.rb +55 -55
- data/lib/chef/knife/key_edit.rb +118 -118
- data/lib/chef/knife/key_edit_base.rb +55 -55
- data/lib/chef/knife/key_list.rb +88 -88
- data/lib/chef/knife/key_list_base.rb +45 -45
- data/lib/chef/knife/key_show.rb +53 -53
- data/lib/chef/knife/list.rb +172 -172
- data/lib/chef/knife/node_bulk_delete.rb +74 -74
- data/lib/chef/knife/node_create.rb +47 -47
- data/lib/chef/knife/node_delete.rb +46 -46
- data/lib/chef/knife/node_edit.rb +70 -70
- data/lib/chef/knife/node_environment_set.rb +54 -54
- data/lib/chef/knife/node_from_file.rb +51 -51
- data/lib/chef/knife/node_list.rb +44 -44
- data/lib/chef/knife/node_policy_set.rb +79 -79
- data/lib/chef/knife/node_run_list_add.rb +104 -104
- data/lib/chef/knife/node_run_list_remove.rb +67 -67
- data/lib/chef/knife/node_run_list_set.rb +66 -66
- data/lib/chef/knife/node_show.rb +61 -61
- data/lib/chef/knife/null.rb +10 -10
- data/lib/chef/knife/osc_user_create.rb +97 -97
- data/lib/chef/knife/osc_user_delete.rb +51 -51
- data/lib/chef/knife/osc_user_edit.rb +58 -58
- data/lib/chef/knife/osc_user_list.rb +47 -47
- data/lib/chef/knife/osc_user_reregister.rb +64 -64
- data/lib/chef/knife/osc_user_show.rb +53 -53
- data/lib/chef/knife/raw.rb +124 -124
- data/lib/chef/knife/recipe_list.rb +32 -32
- data/lib/chef/knife/rehash.rb +65 -65
- data/lib/chef/knife/role_bulk_delete.rb +65 -65
- data/lib/chef/knife/role_create.rb +53 -53
- data/lib/chef/knife/role_delete.rb +46 -46
- data/lib/chef/knife/role_edit.rb +45 -45
- data/lib/chef/knife/role_env_run_list_add.rb +87 -87
- data/lib/chef/knife/role_env_run_list_clear.rb +55 -55
- data/lib/chef/knife/role_env_run_list_remove.rb +57 -57
- data/lib/chef/knife/role_env_run_list_replace.rb +60 -60
- data/lib/chef/knife/role_env_run_list_set.rb +70 -70
- data/lib/chef/knife/role_from_file.rb +51 -51
- data/lib/chef/knife/role_list.rb +42 -42
- data/lib/chef/knife/role_run_list_add.rb +87 -87
- data/lib/chef/knife/role_run_list_clear.rb +55 -55
- data/lib/chef/knife/role_run_list_remove.rb +56 -56
- data/lib/chef/knife/role_run_list_replace.rb +60 -60
- data/lib/chef/knife/role_run_list_set.rb +69 -69
- data/lib/chef/knife/role_show.rb +48 -48
- data/lib/chef/knife/search.rb +194 -194
- data/lib/chef/knife/serve.rb +64 -64
- data/lib/chef/knife/show.rb +72 -72
- data/lib/chef/knife/ssh.rb +634 -634
- data/lib/chef/knife/ssl_check.rb +283 -283
- data/lib/chef/knife/ssl_fetch.rb +161 -161
- data/lib/chef/knife/status.rb +110 -110
- data/lib/chef/knife/supermarket_download.rb +122 -122
- data/lib/chef/knife/supermarket_install.rb +193 -193
- data/lib/chef/knife/supermarket_list.rb +65 -65
- data/lib/chef/knife/supermarket_search.rb +53 -53
- data/lib/chef/knife/supermarket_share.rb +166 -166
- data/lib/chef/knife/supermarket_show.rb +67 -67
- data/lib/chef/knife/supermarket_unshare.rb +61 -61
- data/lib/chef/knife/tag_create.rb +52 -52
- data/lib/chef/knife/tag_delete.rb +60 -60
- data/lib/chef/knife/tag_list.rb +47 -47
- data/lib/chef/knife/upload.rb +86 -86
- data/lib/chef/knife/user_create.rb +151 -151
- data/lib/chef/knife/user_delete.rb +96 -96
- data/lib/chef/knife/user_edit.rb +82 -82
- data/lib/chef/knife/user_key_create.rb +70 -70
- data/lib/chef/knife/user_key_delete.rb +77 -77
- data/lib/chef/knife/user_key_edit.rb +80 -80
- data/lib/chef/knife/user_key_list.rb +70 -70
- data/lib/chef/knife/user_key_show.rb +77 -77
- data/lib/chef/knife/user_list.rb +44 -44
- data/lib/chef/knife/user_reregister.rb +90 -90
- data/lib/chef/knife/user_show.rb +79 -79
- data/lib/chef/knife/xargs.rb +282 -282
- data/lib/chef/local_mode.rb +129 -129
- data/lib/chef/log.rb +70 -70
- data/lib/chef/log/syslog.rb +45 -45
- data/lib/chef/log/winevt.rb +99 -99
- data/lib/chef/mash.rb +232 -232
- data/lib/chef/mixin/.DS_Store +0 -0
- data/lib/chef/mixin/api_version_request_handling.rb +64 -64
- data/lib/chef/mixin/checksum.rb +37 -37
- data/lib/chef/mixin/convert_to_class_name.rb +126 -126
- data/lib/chef/mixin/create_path.rb +71 -71
- data/lib/chef/mixin/deep_merge.rb +140 -140
- data/lib/chef/mixin/deprecation.rb +117 -117
- data/lib/chef/mixin/descendants_tracker.rb +81 -81
- data/lib/chef/mixin/enforce_ownership_and_permissions.rb +39 -39
- data/lib/chef/mixin/file_class.rb +35 -35
- data/lib/chef/mixin/from_file.rb +55 -55
- data/lib/chef/mixin/get_source_from_package.rb +47 -47
- data/lib/chef/mixin/homebrew_user.rb +79 -79
- data/lib/chef/mixin/lazy_module_include.rb +77 -77
- data/lib/chef/mixin/notifying_block.rb +51 -51
- data/lib/chef/mixin/openssl_helper.rb +402 -402
- data/lib/chef/mixin/params_validate.rb +498 -498
- data/lib/chef/mixin/path_sanity.rb +66 -66
- data/lib/chef/mixin/powershell_exec.rb +105 -105
- data/lib/chef/mixin/powershell_out.rb +98 -98
- data/lib/chef/mixin/powershell_type_coercions.rb +84 -84
- data/lib/chef/mixin/properties.rb +323 -323
- data/lib/chef/mixin/provides.rb +29 -29
- data/lib/chef/mixin/proxified_socket.rb +42 -42
- data/lib/chef/mixin/securable.rb +192 -192
- data/lib/chef/mixin/shell_out.rb +258 -258
- data/lib/chef/mixin/subclass_directive.rb +37 -37
- data/lib/chef/mixin/template.rb +265 -265
- data/lib/chef/mixin/unformatter.rb +32 -32
- data/lib/chef/mixin/uris.rb +42 -42
- data/lib/chef/mixin/user_context.rb +55 -55
- data/lib/chef/mixin/versioned_api.rb +84 -84
- data/lib/chef/mixin/which.rb +52 -52
- data/lib/chef/mixin/why_run.rb +326 -326
- data/lib/chef/mixin/wide_string.rb +54 -54
- data/lib/chef/mixin/windows_architecture_helper.rb +113 -113
- data/lib/chef/mixin/windows_env_helper.rb +67 -67
- data/lib/chef/mixin/xml_escape.rb +138 -138
- data/lib/chef/mixins.rb +12 -12
- data/lib/chef/monkey_patches/net_http.rb +64 -64
- data/lib/chef/monkey_patches/webrick-utils.rb +51 -51
- data/lib/chef/monkey_patches/win32/registry.rb +86 -86
- data/lib/chef/monologger.rb +4 -4
- data/lib/chef/nil_argument.rb +3 -3
- data/lib/chef/node.rb +688 -688
- data/lib/chef/node/attribute.rb +649 -649
- data/lib/chef/node/attribute_collections.rb +213 -213
- data/lib/chef/node/common_api.rb +121 -121
- data/lib/chef/node/immutable_collections.rb +182 -182
- data/lib/chef/node/mixin/deep_merge_cache.rb +61 -61
- data/lib/chef/node/mixin/immutablize_array.rb +180 -180
- data/lib/chef/node/mixin/immutablize_hash.rb +165 -165
- data/lib/chef/node/mixin/state_tracking.rb +96 -96
- data/lib/chef/node_map.rb +315 -315
- data/lib/chef/null_logger.rb +79 -79
- data/lib/chef/org.rb +144 -144
- data/lib/chef/platform.rb +30 -30
- data/lib/chef/platform/priority_map.rb +41 -41
- data/lib/chef/platform/provider_handler_map.rb +29 -29
- data/lib/chef/platform/provider_mapping.rb +55 -55
- data/lib/chef/platform/provider_priority_map.rb +11 -11
- data/lib/chef/platform/query_helpers.rb +100 -100
- data/lib/chef/platform/rebooter.rb +71 -71
- data/lib/chef/platform/resource_handler_map.rb +29 -29
- data/lib/chef/platform/resource_priority_map.rb +11 -11
- data/lib/chef/platform/service_helpers.rb +122 -122
- data/lib/chef/policy_builder.rb +42 -42
- data/lib/chef/policy_builder/dynamic.rb +185 -185
- data/lib/chef/policy_builder/expand_node_object.rb +252 -252
- data/lib/chef/policy_builder/policyfile.rb +569 -569
- data/lib/chef/powershell.rb +57 -57
- data/lib/chef/property.rb +731 -731
- data/lib/chef/provider.rb +410 -408
- data/lib/chef/provider/.DS_Store +0 -0
- data/lib/chef/provider/apt_preference.rb +94 -94
- data/lib/chef/provider/apt_repository.rb +360 -360
- data/lib/chef/provider/apt_update.rb +80 -80
- data/lib/chef/provider/batch.rb +45 -45
- data/lib/chef/provider/cookbook_file.rb +47 -47
- data/lib/chef/provider/cookbook_file/content.rb +49 -49
- data/lib/chef/provider/cron.rb +256 -256
- data/lib/chef/provider/cron/aix.rb +50 -50
- data/lib/chef/provider/cron/solaris.rb +22 -22
- data/lib/chef/provider/cron/unix.rb +83 -83
- data/lib/chef/provider/directory.rb +164 -164
- data/lib/chef/provider/dsc_resource.rb +209 -209
- data/lib/chef/provider/dsc_script.rb +185 -185
- data/lib/chef/provider/execute.rb +130 -130
- data/lib/chef/provider/file.rb +478 -478
- data/lib/chef/provider/file/content.rb +39 -39
- data/lib/chef/provider/git.rb +357 -357
- data/lib/chef/provider/group.rb +179 -179
- data/lib/chef/provider/group/aix.rb +79 -79
- data/lib/chef/provider/group/dscl.rb +177 -177
- data/lib/chef/provider/group/gpasswd.rb +58 -58
- data/lib/chef/provider/group/groupadd.rb +133 -133
- data/lib/chef/provider/group/groupmod.rb +123 -123
- data/lib/chef/provider/group/pw.rb +137 -137
- data/lib/chef/provider/group/suse.rb +83 -83
- data/lib/chef/provider/group/usermod.rb +90 -90
- data/lib/chef/provider/group/windows.rb +110 -110
- data/lib/chef/provider/http_request.rb +132 -132
- data/lib/chef/provider/ifconfig.rb +271 -271
- data/lib/chef/provider/ifconfig/aix.rb +94 -94
- data/lib/chef/provider/ifconfig/debian.rb +88 -88
- data/lib/chef/provider/ifconfig/redhat.rb +54 -54
- data/lib/chef/provider/launchd.rb +231 -231
- data/lib/chef/provider/link.rb +168 -168
- data/lib/chef/provider/log.rb +43 -43
- data/lib/chef/provider/lwrp_base.rb +89 -89
- data/lib/chef/provider/mdadm.rb +85 -85
- data/lib/chef/provider/mount.rb +175 -175
- data/lib/chef/provider/mount/aix.rb +221 -221
- data/lib/chef/provider/mount/mount.rb +283 -283
- data/lib/chef/provider/mount/solaris.rb +275 -275
- data/lib/chef/provider/mount/windows.rb +92 -92
- data/lib/chef/provider/noop.rb +37 -37
- data/lib/chef/provider/ohai.rb +45 -45
- data/lib/chef/provider/osx_profile.rb +251 -251
- data/lib/chef/provider/package.rb +687 -687
- data/lib/chef/provider/package/.DS_Store +0 -0
- data/lib/chef/provider/package/apt.rb +249 -249
- data/lib/chef/provider/package/bff.rb +142 -142
- data/lib/chef/provider/package/cab.rb +187 -187
- data/lib/chef/provider/package/chocolatey.rb +285 -285
- data/lib/chef/provider/package/dnf.rb +196 -196
- data/lib/chef/provider/package/dnf/dnf_helper.py +114 -100
- data/lib/chef/provider/package/dnf/python_helper.rb +173 -173
- data/lib/chef/provider/package/dnf/version.rb +56 -56
- data/lib/chef/provider/package/dpkg.rb +241 -241
- data/lib/chef/provider/package/freebsd/.DS_Store +0 -0
- data/lib/chef/provider/package/freebsd/base.rb +89 -89
- data/lib/chef/provider/package/freebsd/pkg.rb +114 -114
- data/lib/chef/provider/package/freebsd/pkgng.rb +76 -76
- data/lib/chef/provider/package/freebsd/port.rb +60 -60
- data/lib/chef/provider/package/homebrew.rb +138 -138
- data/lib/chef/provider/package/ips.rb +85 -85
- data/lib/chef/provider/package/macports.rb +101 -101
- data/lib/chef/provider/package/msu.rb +161 -161
- data/lib/chef/provider/package/openbsd.rb +139 -139
- data/lib/chef/provider/package/pacman.rb +103 -103
- data/lib/chef/provider/package/paludis.rb +85 -85
- data/lib/chef/provider/package/portage.rb +133 -133
- data/lib/chef/provider/package/powershell.rb +133 -133
- data/lib/chef/provider/package/rpm.rb +126 -126
- data/lib/chef/provider/package/rubygems.rb +617 -617
- data/lib/chef/provider/package/smartos.rb +92 -92
- data/lib/chef/provider/package/solaris.rb +137 -137
- data/lib/chef/provider/package/windows.rb +317 -317
- data/lib/chef/provider/package/windows/exe.rb +117 -117
- data/lib/chef/provider/package/windows/msi.rb +96 -96
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +99 -99
- data/lib/chef/provider/package/yum.rb +289 -289
- data/lib/chef/provider/package/yum/python_helper.rb +222 -222
- data/lib/chef/provider/package/yum/rpm_utils.rb +651 -651
- data/lib/chef/provider/package/yum/simplejson/LICENSE.txt +79 -79
- data/lib/chef/provider/package/yum/simplejson/__init__.py +318 -318
- data/lib/chef/provider/package/yum/simplejson/decoder.py +354 -354
- data/lib/chef/provider/package/yum/simplejson/encoder.py +440 -440
- data/lib/chef/provider/package/yum/simplejson/scanner.py +65 -65
- data/lib/chef/provider/package/yum/simplejson/tool.py +37 -37
- data/lib/chef/provider/package/yum/version.rb +56 -56
- data/lib/chef/provider/package/yum/yum_cache.rb +93 -93
- data/lib/chef/provider/package/yum/yum_helper.py +211 -211
- data/lib/chef/provider/package/zypper.rb +167 -167
- data/lib/chef/provider/powershell_script.rb +223 -223
- data/lib/chef/provider/reboot.rb +78 -78
- data/lib/chef/provider/registry_key.rb +199 -199
- data/lib/chef/provider/remote_directory.rb +269 -269
- data/lib/chef/provider/remote_file.rb +66 -66
- data/lib/chef/provider/remote_file/cache_control_data.rb +195 -195
- data/lib/chef/provider/remote_file/content.rb +81 -81
- data/lib/chef/provider/remote_file/fetcher.rb +60 -60
- data/lib/chef/provider/remote_file/ftp.rb +172 -172
- data/lib/chef/provider/remote_file/http.rb +143 -143
- data/lib/chef/provider/remote_file/local_file.rb +60 -60
- data/lib/chef/provider/remote_file/network_file.rb +61 -61
- data/lib/chef/provider/remote_file/sftp.rb +105 -105
- data/lib/chef/provider/resource_update.rb +52 -52
- data/lib/chef/provider/route.rb +248 -248
- data/lib/chef/provider/ruby_block.rb +40 -40
- data/lib/chef/provider/script.rb +121 -121
- data/lib/chef/provider/service.rb +252 -252
- data/lib/chef/provider/service/aix.rb +125 -125
- data/lib/chef/provider/service/aixinit.rb +117 -117
- data/lib/chef/provider/service/arch.rb +118 -118
- data/lib/chef/provider/service/debian.rb +193 -193
- data/lib/chef/provider/service/freebsd.rb +194 -194
- data/lib/chef/provider/service/gentoo.rb +70 -70
- data/lib/chef/provider/service/init.rb +93 -93
- data/lib/chef/provider/service/insserv.rb +61 -61
- data/lib/chef/provider/service/invokercd.rb +41 -41
- data/lib/chef/provider/service/macosx.rb +252 -252
- data/lib/chef/provider/service/openbsd.rb +216 -216
- data/lib/chef/provider/service/redhat.rb +126 -126
- data/lib/chef/provider/service/simple.rb +172 -172
- data/lib/chef/provider/service/solaris.rb +127 -127
- data/lib/chef/provider/service/systemd.rb +189 -189
- data/lib/chef/provider/service/upstart.rb +260 -260
- data/lib/chef/provider/service/windows.rb +488 -488
- data/lib/chef/provider/subversion.rb +227 -227
- data/lib/chef/provider/support/yum_repo.erb +138 -138
- data/lib/chef/provider/support/zypper_repo.erb +17 -17
- data/lib/chef/provider/systemd_unit.rb +261 -261
- data/lib/chef/provider/template.rb +59 -59
- data/lib/chef/provider/template/content.rb +93 -93
- data/lib/chef/provider/template_finder.rb +62 -62
- data/lib/chef/provider/user.rb +221 -221
- data/lib/chef/provider/user/aix.rb +131 -131
- data/lib/chef/provider/user/dscl.rb +712 -712
- data/lib/chef/provider/user/linux.rb +116 -116
- data/lib/chef/provider/user/pw.rb +105 -105
- data/lib/chef/provider/user/solaris.rb +160 -160
- data/lib/chef/provider/user/useradd.rb +161 -161
- data/lib/chef/provider/user/windows.rb +126 -126
- data/lib/chef/provider/whyrun_safe_ruby_block.rb +32 -32
- data/lib/chef/provider/windows_env.rb +207 -207
- data/lib/chef/provider/windows_path.rb +61 -61
- data/lib/chef/provider/windows_script.rb +75 -75
- data/lib/chef/provider/windows_task.rb +631 -631
- data/lib/chef/provider/yum_repository.rb +130 -130
- data/lib/chef/provider/zypper_repository.rb +169 -169
- data/lib/chef/provider_resolver.rb +146 -146
- data/lib/chef/providers.rb +146 -146
- data/lib/chef/recipe.rb +110 -110
- data/lib/chef/request_id.rb +37 -37
- data/lib/chef/reserved_names.rb +9 -9
- data/lib/chef/resource.rb +1593 -1584
- data/lib/chef/resource/.DS_Store +0 -0
- data/lib/chef/resource/action_class.rb +90 -90
- data/lib/chef/resource/apt_package.rb +40 -40
- data/lib/chef/resource/apt_preference.rb +52 -52
- data/lib/chef/resource/apt_repository.rb +86 -86
- data/lib/chef/resource/apt_update.rb +41 -41
- data/lib/chef/resource/bash.rb +34 -34
- data/lib/chef/resource/batch.rb +34 -34
- data/lib/chef/resource/bff_package.rb +31 -31
- data/lib/chef/resource/breakpoint.rb +47 -47
- data/lib/chef/resource/build_essential.rb +142 -142
- data/lib/chef/resource/cab_package.rb +45 -45
- data/lib/chef/resource/chef_gem.rb +59 -59
- data/lib/chef/resource/chef_handler.rb +132 -132
- data/lib/chef/resource/chocolatey_config.rb +83 -83
- data/lib/chef/resource/chocolatey_package.rb +50 -50
- data/lib/chef/resource/chocolatey_source.rb +95 -95
- data/lib/chef/resource/conditional.rb +135 -135
- data/lib/chef/resource/conditional_action_not_nothing.rb +48 -48
- data/lib/chef/resource/cookbook_file.rb +45 -45
- data/lib/chef/resource/cron.rb +174 -174
- data/lib/chef/resource/cron_access.rb +70 -70
- data/lib/chef/resource/cron_d.rb +238 -238
- data/lib/chef/resource/csh.rb +39 -39
- data/lib/chef/resource/directory.rb +51 -51
- data/lib/chef/resource/dmg_package.rb +171 -171
- data/lib/chef/resource/dnf_package.rb +79 -79
- data/lib/chef/resource/dpkg_package.rb +33 -33
- data/lib/chef/resource/dsc_resource.rb +120 -120
- data/lib/chef/resource/dsc_script.rb +124 -124
- data/lib/chef/resource/execute.rb +201 -201
- data/lib/chef/resource/file.rb +105 -105
- data/lib/chef/resource/file/.DS_Store +0 -0
- data/lib/chef/resource/file/verification.rb +139 -139
- data/lib/chef/resource/file/verification/systemd_unit.rb +67 -67
- data/lib/chef/resource/freebsd_package.rb +73 -73
- data/lib/chef/resource/gem_package.rb +58 -58
- data/lib/chef/resource/git.rb +35 -35
- data/lib/chef/resource/group.rb +61 -61
- data/lib/chef/resource/homebrew_cask.rb +100 -100
- data/lib/chef/resource/homebrew_package.rb +38 -38
- data/lib/chef/resource/homebrew_tap.rb +87 -87
- data/lib/chef/resource/hostname.rb +265 -265
- data/lib/chef/resource/http_request.rb +55 -55
- data/lib/chef/resource/ifconfig.rb +105 -105
- data/lib/chef/resource/ips_package.rb +38 -38
- data/lib/chef/resource/kernel_module.rb +135 -135
- data/lib/chef/resource/ksh.rb +39 -39
- data/lib/chef/resource/launchd.rb +252 -252
- data/lib/chef/resource/link.rb +93 -93
- data/lib/chef/resource/locale.rb +94 -94
- data/lib/chef/resource/log.rb +52 -52
- data/lib/chef/resource/lwrp_base.rb +123 -123
- data/lib/chef/resource/macos_userdefaults.rb +132 -132
- data/lib/chef/resource/macosx_service.rb +41 -41
- data/lib/chef/resource/macports_package.rb +29 -29
- data/lib/chef/resource/mdadm.rb +67 -67
- data/lib/chef/resource/mount.rb +96 -96
- data/lib/chef/resource/msu_package.rb +49 -49
- data/lib/chef/resource/ohai.rb +41 -41
- data/lib/chef/resource/ohai_hint.rb +95 -95
- data/lib/chef/resource/openbsd_package.rb +38 -38
- data/lib/chef/resource/openssl_dhparam.rb +77 -77
- data/lib/chef/resource/openssl_ec_private_key.rb +93 -93
- data/lib/chef/resource/openssl_ec_public_key.rb +75 -75
- data/lib/chef/resource/openssl_rsa_private_key.rb +91 -91
- data/lib/chef/resource/openssl_rsa_public_key.rb +74 -74
- data/lib/chef/resource/openssl_x509_certificate.rb +221 -221
- data/lib/chef/resource/openssl_x509_crl.rb +132 -132
- data/lib/chef/resource/openssl_x509_request.rb +151 -151
- data/lib/chef/resource/osx_profile.rb +48 -48
- data/lib/chef/resource/package.rb +73 -73
- data/lib/chef/resource/pacman_package.rb +30 -30
- data/lib/chef/resource/paludis_package.rb +38 -38
- data/lib/chef/resource/perl.rb +38 -38
- data/lib/chef/resource/portage_package.rb +33 -33
- data/lib/chef/resource/powershell_package.rb +52 -52
- data/lib/chef/resource/powershell_package_source.rb +169 -169
- data/lib/chef/resource/powershell_script.rb +59 -59
- data/lib/chef/resource/python.rb +36 -36
- data/lib/chef/resource/reboot.rb +46 -46
- data/lib/chef/resource/registry_key.rb +130 -130
- data/lib/chef/resource/remote_directory.rb +87 -87
- data/lib/chef/resource/remote_file.rb +181 -181
- data/lib/chef/resource/resource_notification.rb +143 -139
- data/lib/chef/resource/rhsm_errata.rb +46 -46
- data/lib/chef/resource/rhsm_errata_level.rb +51 -51
- data/lib/chef/resource/rhsm_register.rb +168 -168
- data/lib/chef/resource/rhsm_repo.rb +65 -65
- data/lib/chef/resource/rhsm_subscription.rb +98 -98
- data/lib/chef/resource/route.rb +46 -46
- data/lib/chef/resource/rpm_package.rb +33 -33
- data/lib/chef/resource/ruby.rb +37 -37
- data/lib/chef/resource/ruby_block.rb +45 -45
- data/lib/chef/resource/scm.rb +75 -75
- data/lib/chef/resource/script.rb +54 -54
- data/lib/chef/resource/service.rb +221 -221
- data/lib/chef/resource/smartos_package.rb +31 -31
- data/lib/chef/resource/solaris_package.rb +33 -33
- data/lib/chef/resource/ssh_known_hosts_entry.rb +146 -146
- data/lib/chef/resource/subversion.rb +55 -55
- data/lib/chef/resource/sudo.rb +230 -230
- data/lib/chef/resource/support/cron.d.erb +28 -28
- data/lib/chef/resource/support/cron_access.erb +4 -4
- data/lib/chef/resource/support/ssh_known_hosts.erb +3 -3
- data/lib/chef/resource/support/sudoer.erb +18 -18
- data/lib/chef/resource/swap_file.rb +209 -209
- data/lib/chef/resource/sysctl.rb +151 -151
- data/lib/chef/resource/systemd_unit.rb +86 -86
- data/lib/chef/resource/template.rb +211 -211
- data/lib/chef/resource/timezone.rb +135 -135
- data/lib/chef/resource/user.rb +159 -159
- data/lib/chef/resource/user/aix_user.rb +31 -31
- data/lib/chef/resource/user/dscl_user.rb +31 -31
- data/lib/chef/resource/user/linux_user.rb +32 -32
- data/lib/chef/resource/user/pw_user.rb +31 -31
- data/lib/chef/resource/user/solaris_user.rb +31 -31
- data/lib/chef/resource/user/windows_user.rb +35 -35
- data/lib/chef/resource/whyrun_safe_ruby_block.rb +24 -24
- data/lib/chef/resource/windows_ad_join.rb +120 -120
- data/lib/chef/resource/windows_auto_run.rb +87 -87
- data/lib/chef/resource/windows_certificate.rb +332 -332
- data/lib/chef/resource/windows_env.rb +49 -49
- data/lib/chef/resource/windows_feature.rb +90 -90
- data/lib/chef/resource/windows_feature_dism.rb +222 -222
- data/lib/chef/resource/windows_feature_powershell.rb +262 -262
- data/lib/chef/resource/windows_firewall_rule.rb +205 -205
- data/lib/chef/resource/windows_font.rb +125 -125
- data/lib/chef/resource/windows_package.rb +61 -61
- data/lib/chef/resource/windows_pagefile.rb +206 -206
- data/lib/chef/resource/windows_path.rb +38 -38
- data/lib/chef/resource/windows_printer.rb +146 -146
- data/lib/chef/resource/windows_printer_port.rb +136 -136
- data/lib/chef/resource/windows_script.rb +65 -65
- data/lib/chef/resource/windows_service.rb +121 -121
- data/lib/chef/resource/windows_share.rb +324 -324
- data/lib/chef/resource/windows_shortcut.rb +79 -79
- data/lib/chef/resource/windows_task.rb +349 -349
- data/lib/chef/resource/windows_workgroup.rb +112 -112
- data/lib/chef/resource/yum_package.rb +77 -77
- data/lib/chef/resource/yum_repository.rb +187 -187
- data/lib/chef/resource/zypper_package.rb +44 -44
- data/lib/chef/resource/zypper_repository.rb +103 -103
- data/lib/chef/resource_builder.rb +92 -92
- data/lib/chef/resource_collection.rb +153 -147
- data/lib/chef/resource_collection/resource_collection_serialization.rb +68 -68
- data/lib/chef/resource_collection/resource_list.rb +106 -106
- data/lib/chef/resource_collection/resource_set.rb +200 -200
- data/lib/chef/resource_collection/stepable_iterator.rb +122 -122
- data/lib/chef/resource_definition.rb +68 -68
- data/lib/chef/resource_definition_list.rb +38 -38
- data/lib/chef/resource_inspector.rb +108 -108
- data/lib/chef/resource_reporter.rb +337 -337
- data/lib/chef/resource_resolver.rb +160 -160
- data/lib/chef/resources.rb +147 -147
- data/lib/chef/role.rb +274 -274
- data/lib/chef/run_context.rb +708 -682
- data/lib/chef/run_context/cookbook_compiler.rb +344 -344
- data/lib/chef/run_list.rb +168 -168
- data/lib/chef/run_list/run_list_expansion.rb +236 -236
- data/lib/chef/run_list/run_list_item.rb +98 -98
- data/lib/chef/run_list/versioned_recipe_list.rb +104 -104
- data/lib/chef/run_lock.rb +197 -197
- data/lib/chef/run_status.rb +127 -127
- data/lib/chef/runner.rb +184 -144
- data/lib/chef/sandbox.rb +20 -20
- data/lib/chef/scan_access_control.rb +138 -138
- data/lib/chef/search/query.rb +182 -182
- data/lib/chef/server_api.rb +83 -83
- data/lib/chef/server_api_versions.rb +59 -59
- data/lib/chef/shell.rb +353 -353
- data/lib/chef/shell/ext.rb +593 -593
- data/lib/chef/shell/model_wrapper.rb +120 -120
- data/lib/chef/shell/shell_session.rb +310 -310
- data/lib/chef/user.rb +194 -194
- data/lib/chef/user_v1.rb +325 -325
- data/lib/chef/util/backup.rb +94 -94
- data/lib/chef/util/diff.rb +184 -184
- data/lib/chef/util/dsc/configuration_generator.rb +139 -139
- data/lib/chef/util/dsc/lcm_output_parser.rb +192 -192
- data/lib/chef/util/dsc/local_configuration_manager.rb +151 -151
- data/lib/chef/util/dsc/resource_info.rb +26 -26
- data/lib/chef/util/dsc/resource_store.rb +109 -109
- data/lib/chef/util/editor.rb +91 -91
- data/lib/chef/util/file_edit.rb +100 -100
- data/lib/chef/util/path_helper.rb +25 -25
- data/lib/chef/util/powershell/cmdlet.rb +173 -173
- data/lib/chef/util/powershell/cmdlet_result.rb +61 -61
- data/lib/chef/util/powershell/ps_credential.rb +41 -41
- data/lib/chef/util/selinux.rb +93 -93
- data/lib/chef/util/threaded_job_queue.rb +61 -61
- data/lib/chef/util/windows.rb +24 -24
- data/lib/chef/util/windows/logon_session.rb +129 -129
- data/lib/chef/util/windows/net_group.rb +78 -78
- data/lib/chef/util/windows/net_use.rb +81 -81
- data/lib/chef/util/windows/net_user.rb +172 -172
- data/lib/chef/util/windows/volume.rb +49 -49
- data/lib/chef/version.rb +36 -36
- data/lib/chef/version/platform.rb +62 -62
- data/lib/chef/version_class.rb +75 -75
- data/lib/chef/version_constraint.rb +118 -118
- data/lib/chef/version_constraint/platform.rb +28 -28
- data/lib/chef/version_string.rb +143 -143
- data/lib/chef/whitelist.rb +86 -86
- data/lib/chef/win32/api.rb +372 -372
- data/lib/chef/win32/api/crypto.rb +63 -63
- data/lib/chef/win32/api/error.rb +953 -953
- data/lib/chef/win32/api/file.rb +620 -620
- data/lib/chef/win32/api/installer.rb +165 -165
- data/lib/chef/win32/api/memory.rb +105 -105
- data/lib/chef/win32/api/net.rb +328 -328
- data/lib/chef/win32/api/process.rb +42 -42
- data/lib/chef/win32/api/psapi.rb +51 -51
- data/lib/chef/win32/api/registry.rb +51 -51
- data/lib/chef/win32/api/security.rb +476 -476
- data/lib/chef/win32/api/synchronization.rb +89 -89
- data/lib/chef/win32/api/system.rb +238 -238
- data/lib/chef/win32/api/unicode.rb +135 -135
- data/lib/chef/win32/crypto.rb +50 -50
- data/lib/chef/win32/error.rb +86 -86
- data/lib/chef/win32/eventlog.rb +31 -31
- data/lib/chef/win32/file.rb +226 -226
- data/lib/chef/win32/file/info.rb +99 -99
- data/lib/chef/win32/file/version_info.rb +93 -93
- data/lib/chef/win32/handle.rb +55 -55
- data/lib/chef/win32/memory.rb +101 -101
- data/lib/chef/win32/mutex.rb +116 -116
- data/lib/chef/win32/net.rb +326 -326
- data/lib/chef/win32/process.rb +97 -97
- data/lib/chef/win32/registry.rb +374 -374
- data/lib/chef/win32/security.rb +698 -698
- data/lib/chef/win32/security/ace.rb +123 -123
- data/lib/chef/win32/security/acl.rb +103 -103
- data/lib/chef/win32/security/securable_object.rb +109 -109
- data/lib/chef/win32/security/security_descriptor.rb +93 -93
- data/lib/chef/win32/security/sid.rb +347 -347
- data/lib/chef/win32/security/token.rb +72 -72
- data/lib/chef/win32/system.rb +62 -62
- data/lib/chef/win32/unicode.rb +66 -66
- data/lib/chef/win32/version.rb +151 -151
- data/lib/chef/win32_service_constants.rb +143 -143
- data/lib/chef/workstation_config_loader.rb +23 -23
- data/spec/.DS_Store +0 -0
- data/spec/data/.DS_Store +0 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/changelog +5 -5
- data/spec/data/apt/chef-integration-test-1.0/debian/compat +1 -1
- data/spec/data/apt/chef-integration-test-1.0/debian/control +13 -13
- data/spec/data/apt/chef-integration-test-1.0/debian/copyright +34 -34
- data/spec/data/apt/chef-integration-test-1.0/debian/files +1 -1
- data/spec/data/apt/chef-integration-test-1.0/debian/rules +13 -13
- data/spec/data/apt/chef-integration-test-1.0/debian/source/format +1 -1
- data/spec/data/apt/chef-integration-test-1.1/debian/changelog +11 -11
- data/spec/data/apt/chef-integration-test-1.1/debian/compat +1 -1
- data/spec/data/apt/chef-integration-test-1.1/debian/control +13 -13
- data/spec/data/apt/chef-integration-test-1.1/debian/copyright +34 -34
- data/spec/data/apt/chef-integration-test-1.1/debian/files +1 -1
- data/spec/data/apt/chef-integration-test-1.1/debian/rules +13 -13
- data/spec/data/apt/chef-integration-test-1.1/debian/source/format +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/changelog +5 -5
- data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2.debhelper.log +45 -45
- data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2.substvars +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/conffiles +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/control +10 -10
- data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/md5sums +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/compat +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/conffiles +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/control +13 -13
- data/spec/data/apt/chef-integration-test2-1.0/debian/copyright +34 -34
- data/spec/data/apt/chef-integration-test2-1.0/debian/files +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/rules +13 -13
- data/spec/data/apt/chef-integration-test2-1.0/debian/source/format +1 -1
- data/spec/data/apt/chef-integration-test2_1.0-1.dsc +18 -18
- data/spec/data/apt/chef-integration-test2_1.0-1_amd64.build +91 -91
- data/spec/data/apt/chef-integration-test2_1.0-1_amd64.changes +31 -31
- data/spec/data/apt/chef-integration-test_1.0-1_amd64.changes +22 -22
- data/spec/data/apt/chef-integration-test_1.1-1_amd64.changes +22 -22
- data/spec/data/apt/var/www/apt/conf/distributions +7 -7
- data/spec/data/apt/var/www/apt/conf/incoming +4 -4
- data/spec/data/apt/var/www/apt/conf/pulls +3 -3
- data/spec/data/apt/var/www/apt/db/version +4 -4
- data/spec/data/apt/var/www/apt/dists/sid/Release +19 -19
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages +16 -16
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Release +5 -5
- data/spec/data/bootstrap/encrypted_data_bag_secret +1 -1
- data/spec/data/bootstrap/no_proxy.erb +2 -2
- data/spec/data/bootstrap/secret.erb +9 -9
- data/spec/data/bootstrap/test-hints.erb +12 -12
- data/spec/data/bootstrap/test.erb +1 -1
- data/spec/data/cb_version_cookbooks/tatft/README.rdoc +2 -2
- data/spec/data/cb_version_cookbooks/tatft/attributes/default.rb +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-600hhz-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ahd2gq-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-api8ux-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-b0r1m1-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-bfygsi-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-el14l6-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ivrl3y-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-kkbs85-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ory1ux-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-pgsq76-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ra8uim-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-t7k1g-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-t8g0sv-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ufy6g3-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-x2d6j9-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-xi0l6h-0 +1 -1
- data/spec/data/client.d_00/00-foo.rb +2 -2
- data/spec/data/client.d_00/01-bar.rb +1 -1
- data/spec/data/client.d_00/02-strings.rb +2 -2
- data/spec/data/client.d_00/bar +1 -1
- data/spec/data/client.d_01/foo/bar.rb +1 -1
- data/spec/data/client.d_02/foo.rb/foo.txt +1 -1
- data/spec/data/config.rb +6 -6
- data/spec/data/cookbooks/.DS_Store +0 -0
- data/spec/data/cookbooks/angrybash/metadata.rb +2 -2
- data/spec/data/cookbooks/angrybash/recipes/default.rb +8 -8
- data/spec/data/cookbooks/apache2/files/default/apache2_module_conf_generate.pl +2 -2
- data/spec/data/cookbooks/apache2/metadata.rb +2 -2
- data/spec/data/cookbooks/apache2/recipes/default.rb +2 -2
- data/spec/data/cookbooks/borken/metadata.rb +2 -2
- data/spec/data/cookbooks/borken/recipes/default.rb +1 -1
- data/spec/data/cookbooks/borken/templates/default/borken.erb +1 -1
- data/spec/data/cookbooks/chefignore +8 -8
- data/spec/data/cookbooks/ignorken/files/default/not_me.rb +2 -2
- data/spec/data/cookbooks/ignorken/metadata.rb +2 -2
- data/spec/data/cookbooks/ignorken/recipes/ignoreme.rb +1 -1
- data/spec/data/cookbooks/ignorken/templates/ubuntu-12.10/not_me.rb +2 -2
- data/spec/data/cookbooks/java/.DS_Store +0 -0
- data/spec/data/cookbooks/java/files/.DS_Store +0 -0
- data/spec/data/cookbooks/java/files/default/java.response +1 -1
- data/spec/data/cookbooks/java/metadata.rb +2 -2
- data/spec/data/cookbooks/name-mismatch-versionnumber/README.md +4 -4
- data/spec/data/cookbooks/name-mismatch-versionnumber/metadata.rb +8 -8
- data/spec/data/cookbooks/name-mismatch-versionnumber/recipes/default.rb +8 -8
- data/spec/data/cookbooks/openldap/attributes/default.rb +16 -16
- data/spec/data/cookbooks/openldap/attributes/smokey.rb +1 -1
- data/spec/data/cookbooks/openldap/definitions/client.rb +5 -5
- data/spec/data/cookbooks/openldap/definitions/server.rb +5 -5
- data/spec/data/cookbooks/openldap/files/default/.dotfile +1 -1
- data/spec/data/cookbooks/openldap/files/default/remotedir/.a_dotdir/.a_dotfile_in_a_dotdir +1 -1
- data/spec/data/cookbooks/openldap/files/default/remotedir/not_a_template.erb +2 -2
- data/spec/data/cookbooks/openldap/files/default/remotedir/remote_dir_file1.txt +2 -2
- data/spec/data/cookbooks/openldap/files/default/remotedir/remote_dir_file2.txt +2 -2
- data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/.a_dotfile +1 -1
- data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/remote_subdir_file1.txt +2 -2
- data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/remote_subdir_file2.txt +2 -2
- data/spec/data/cookbooks/openldap/files/default/remotedir/subdir_with_no_file_just_a_subsubdir/the_subsubdir/some_file.txt +3 -3
- data/spec/data/cookbooks/openldap/libraries/openldap.rb +4 -4
- data/spec/data/cookbooks/openldap/libraries/openldap/version.rb +3 -3
- data/spec/data/cookbooks/openldap/metadata.rb +8 -8
- data/spec/data/cookbooks/openldap/recipes/default.rb +4 -4
- data/spec/data/cookbooks/openldap/recipes/gigantor.rb +3 -3
- data/spec/data/cookbooks/openldap/recipes/one.rb +15 -15
- data/spec/data/cookbooks/openldap/recipes/return.rb +2 -2
- data/spec/data/cookbooks/openldap/templates/default/helper_test.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/helpers.erb +14 -14
- data/spec/data/cookbooks/openldap/templates/default/helpers_via_partial_test.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/nested_openldap_partials.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/nested_partial.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/no_windows_line_endings.erb +4 -4
- data/spec/data/cookbooks/openldap/templates/default/openldap_nested_variable_stuff.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/openldap_variable_stuff.conf.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/test.erb +1 -1
- data/spec/data/cookbooks/preseed/files/default/preseed-file.seed +1 -1
- data/spec/data/cookbooks/preseed/files/default/preseed-template.seed +4 -4
- data/spec/data/cookbooks/preseed/metadata.rb +2 -2
- data/spec/data/cookbooks/preseed/templates/default/preseed-template-variables.seed +1 -1
- data/spec/data/cookbooks/preseed/templates/default/preseed-template.seed +1 -1
- data/spec/data/cookbooks/supports-platform-constraints/metadata.rb +5 -5
- data/spec/data/definitions/test.rb +4 -4
- data/spec/data/environment-config.rb +4 -4
- data/spec/data/file-providers-method-snapshot-chef-11-4.json +127 -127
- data/spec/data/fileedit/hosts +4 -4
- data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/README.md +4 -4
- data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/metadata.rb +13 -13
- data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/recipes/default.rb +8 -8
- data/spec/data/invalid-metadata-chef-repo/invalid-metadata/README.md +4 -4
- data/spec/data/invalid-metadata-chef-repo/invalid-metadata/metadata.rb +9 -9
- data/spec/data/invalid-metadata-chef-repo/invalid-metadata/recipes/default.rb +8 -8
- data/spec/data/kitchen/chefignore +6 -6
- data/spec/data/kitchen/openldap/attributes/default.rb +3 -3
- data/spec/data/kitchen/openldap/attributes/robinson.rb +2 -2
- data/spec/data/kitchen/openldap/definitions/client.rb +3 -3
- data/spec/data/kitchen/openldap/definitions/drewbarrymore.rb +2 -2
- data/spec/data/kitchen/openldap/recipes/gigantor.rb +2 -2
- data/spec/data/kitchen/openldap/recipes/ignoreme.rb +2 -2
- data/spec/data/kitchen/openldap/recipes/woot.rb +3 -3
- data/spec/data/knife_subcommand/test_explicit_category.rb +6 -6
- data/spec/data/knife_subcommand/test_name_mapping.rb +4 -4
- data/spec/data/knife_subcommand/test_yourself.rb +21 -21
- data/spec/data/lwrp/providers/buck_passer.rb +28 -28
- data/spec/data/lwrp/providers/buck_passer_2.rb +26 -26
- data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +28 -28
- data/spec/data/lwrp/providers/inline_compiler.rb +24 -24
- data/spec/data/lwrp/providers/monkey_name_printer.rb +5 -5
- data/spec/data/lwrp/providers/paint_drying_watcher.rb +7 -7
- data/spec/data/lwrp/providers/thumb_twiddler.rb +7 -7
- data/spec/data/lwrp/resources/bar.rb +2 -2
- data/spec/data/lwrp/resources/buck_passer.rb +5 -5
- data/spec/data/lwrp/resources/buck_passer_2.rb +3 -3
- data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +3 -3
- data/spec/data/lwrp/resources/foo.rb +4 -4
- data/spec/data/lwrp/resources/inline_compiler.rb +3 -3
- data/spec/data/lwrp/resources/monkey_name_printer.rb +5 -5
- data/spec/data/lwrp/resources/paint_drying_watcher.rb +3 -3
- data/spec/data/lwrp/resources/thumb_twiddler.rb +3 -3
- data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +1 -1
- data/spec/data/lwrp_override/providers/buck_passer.rb +5 -5
- data/spec/data/lwrp_override/resources/foo.rb +10 -10
- data/spec/data/mac_users/.DS_Store +0 -0
- data/spec/data/mac_users/10.7-8.plist.xml +559 -559
- data/spec/data/mac_users/10.7-8.shadow.xml +11 -11
- data/spec/data/mac_users/10.7.plist.xml +559 -559
- data/spec/data/mac_users/10.7.shadow.xml +11 -11
- data/spec/data/mac_users/10.8.plist.xml +559 -559
- data/spec/data/mac_users/10.8.shadow.xml +21 -21
- data/spec/data/mac_users/10.9.plist.xml +560 -560
- data/spec/data/mac_users/10.9.shadow.xml +21 -21
- data/spec/data/metadata/quick_start/metadata.rb +19 -19
- data/spec/data/mixin/invalid_data.rb +3 -3
- data/spec/data/mixin/real_data.rb +2 -2
- data/spec/data/nested.json +2 -2
- data/spec/data/nodes/Tim.local.json +3 -0
- data/spec/data/nodes/Tims-MBP.local.json +3 -0
- data/spec/data/nodes/default.rb +15 -15
- data/spec/data/nodes/test.example.com.rb +17 -17
- data/spec/data/nodes/test.rb +15 -15
- data/spec/data/null_config.rb +1 -1
- data/spec/data/object_loader/environments/test.json +7 -7
- data/spec/data/object_loader/environments/test.rb +2 -2
- data/spec/data/object_loader/environments/test_json_class.json +8 -8
- data/spec/data/object_loader/nodes/test.json +7 -7
- data/spec/data/object_loader/nodes/test.rb +2 -2
- data/spec/data/object_loader/nodes/test_json_class.json +8 -8
- data/spec/data/object_loader/roles/test.json +7 -7
- data/spec/data/object_loader/roles/test.rb +2 -2
- data/spec/data/object_loader/roles/test_json_class.json +8 -8
- data/spec/data/partial_one.erb +1 -1
- data/spec/data/prefer_metadata_json/metadata.json +51 -51
- data/spec/data/prefer_metadata_json/metadata.rb +6 -6
- data/spec/data/recipes/test.rb +7 -7
- data/spec/data/root_alias_cookbooks/dup_attr/attributes.rb +1 -1
- data/spec/data/root_alias_cookbooks/dup_attr/attributes/default.rb +1 -1
- data/spec/data/root_alias_cookbooks/dup_attr/metadata.rb +2 -2
- data/spec/data/root_alias_cookbooks/dup_attr/recipe.rb +3 -3
- data/spec/data/root_alias_cookbooks/dup_recipe/attributes.rb +1 -1
- data/spec/data/root_alias_cookbooks/dup_recipe/metadata.rb +2 -2
- data/spec/data/root_alias_cookbooks/dup_recipe/recipe.rb +3 -3
- data/spec/data/root_alias_cookbooks/dup_recipe/recipes/default.rb +3 -3
- data/spec/data/root_alias_cookbooks/simple/attributes.rb +1 -1
- data/spec/data/root_alias_cookbooks/simple/metadata.rb +2 -2
- data/spec/data/root_alias_cookbooks/simple/recipe.rb +3 -3
- data/spec/data/run_context/.DS_Store +0 -0
- data/spec/data/run_context/cookbooks/.DS_Store +0 -0
- data/spec/data/run_context/cookbooks/circular-dep1/attributes/default.rb +2 -2
- data/spec/data/run_context/cookbooks/circular-dep1/definitions/circular_dep1_res.rb +1 -1
- data/spec/data/run_context/cookbooks/circular-dep1/libraries/lib.rb +2 -2
- data/spec/data/run_context/cookbooks/circular-dep1/metadata.rb +2 -2
- data/spec/data/run_context/cookbooks/circular-dep1/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -1
- data/spec/data/run_context/cookbooks/circular-dep2/attributes/default.rb +2 -2
- data/spec/data/run_context/cookbooks/circular-dep2/definitions/circular_dep2_res.rb +1 -1
- data/spec/data/run_context/cookbooks/circular-dep2/libraries/lib.rb +2 -2
- data/spec/data/run_context/cookbooks/circular-dep2/metadata.rb +2 -2
- data/spec/data/run_context/cookbooks/circular-dep2/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -1
- data/spec/data/run_context/cookbooks/dependency1/attributes/aa_first.rb +2 -2
- data/spec/data/run_context/cookbooks/dependency1/attributes/default.rb +2 -2
- data/spec/data/run_context/cookbooks/dependency1/attributes/zz_last.rb +2 -2
- data/spec/data/run_context/cookbooks/dependency1/definitions/dependency1_res.rb +1 -1
- data/spec/data/run_context/cookbooks/dependency1/libraries/lib.rb +2 -2
- data/spec/data/run_context/cookbooks/dependency1/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -1
- data/spec/data/run_context/cookbooks/dependency2/attributes/default.rb +2 -2
- data/spec/data/run_context/cookbooks/dependency2/definitions/dependency2_res.rb +1 -1
- data/spec/data/run_context/cookbooks/dependency2/libraries/lib.rb +2 -2
- data/spec/data/run_context/cookbooks/dependency2/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -1
- data/spec/data/run_context/cookbooks/include/recipes/default.rb +24 -24
- data/spec/data/run_context/cookbooks/include/recipes/includee.rb +3 -3
- data/spec/data/run_context/cookbooks/no-default-attr/attributes/server.rb +2 -2
- data/spec/data/run_context/cookbooks/no-default-attr/definitions/no_default-attr_res.rb +1 -1
- data/spec/data/run_context/cookbooks/no-default-attr/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -1
- data/spec/data/run_context/cookbooks/test-with-circular-deps/attributes/default.rb +2 -2
- data/spec/data/run_context/cookbooks/test-with-circular-deps/definitions/test_with-circular-deps_res.rb +1 -1
- data/spec/data/run_context/cookbooks/test-with-circular-deps/libraries/lib.rb +2 -2
- data/spec/data/run_context/cookbooks/test-with-circular-deps/metadata.rb +2 -2
- data/spec/data/run_context/cookbooks/test-with-circular-deps/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +1 -1
- data/spec/data/run_context/cookbooks/test-with-deps/attributes/default.rb +2 -2
- data/spec/data/run_context/cookbooks/test-with-deps/definitions/test_with-deps_res.rb +1 -1
- data/spec/data/run_context/cookbooks/test-with-deps/libraries/lib.rb +1 -1
- data/spec/data/run_context/cookbooks/test-with-deps/metadata.rb +3 -3
- data/spec/data/run_context/cookbooks/test-with-deps/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -1
- data/spec/data/run_context/cookbooks/test/attributes/george.rb +1 -1
- data/spec/data/run_context/cookbooks/test/definitions/new_animals.rb +9 -9
- data/spec/data/run_context/cookbooks/test/definitions/new_cat.rb +5 -5
- data/spec/data/run_context/cookbooks/test/definitions/test_res.rb +1 -1
- data/spec/data/run_context/cookbooks/test/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/test/recipes/default.rb +5 -5
- data/spec/data/run_context/cookbooks/test/recipes/one.rb +7 -7
- data/spec/data/run_context/cookbooks/test/recipes/two.rb +7 -7
- data/spec/data/run_context/cookbooks/test/resources/resource.rb +1 -1
- data/spec/data/run_context/nodes/run_context.rb +5 -5
- data/spec/data/sample_msu1.xml +10 -10
- data/spec/data/sample_msu2.xml +14 -14
- data/spec/data/sample_msu3.xml +16 -16
- data/spec/data/search_queries_to_transform.txt +98 -98
- data/spec/data/shef-config.rb +11 -11
- data/spec/data/ssl/5e707473.0 +18 -18
- data/spec/data/ssl/chef-rspec.cert +27 -27
- data/spec/data/ssl/chef-rspec.key +27 -27
- data/spec/data/ssl/key.pem +15 -15
- data/spec/data/ssl/private_key.pem +27 -27
- data/spec/data/ssl/private_key_with_whitespace.pem +32 -32
- data/spec/data/standalone_cookbook/chefignore +9 -9
- data/spec/data/standalone_cookbook/recipes/default.rb +2 -2
- data/spec/data/templates/failed.erb +5 -5
- data/spec/data/trusted_certs/example.crt +22 -22
- data/spec/data/trusted_certs/example_no_cn.crt +36 -36
- data/spec/data/trusted_certs/intermediate.pem +27 -27
- data/spec/data/trusted_certs/opscode.pem +57 -57
- data/spec/data/trusted_certs/root.pem +22 -22
- data/spec/data/windows_certificates/base64_test.cer +22 -22
- data/spec/data/windows_certificates/test.pem +21 -21
- data/spec/functional/.DS_Store +0 -0
- data/spec/functional/application_spec.rb +58 -58
- data/spec/functional/assets/chefinittest +36 -36
- data/spec/functional/assets/inittest +36 -36
- data/spec/functional/assets/testchefsubsys +10 -10
- data/spec/functional/assets/yumrepo/repodata/repomd.xml +21 -21
- data/spec/functional/audit/rspec_formatter_spec.rb +54 -54
- data/spec/functional/audit/runner_spec.rb +121 -121
- data/spec/functional/dsl/reboot_pending_spec.rb +106 -106
- data/spec/functional/dsl/registry_helper_spec.rb +61 -61
- data/spec/functional/event_loggers/windows_eventlog_spec.rb +104 -104
- data/spec/functional/file_content_management/deploy_strategies_spec.rb +229 -229
- data/spec/functional/http/simple_spec.rb +146 -146
- data/spec/functional/knife/configure_spec.rb +33 -33
- data/spec/functional/knife/cookbook_delete_spec.rb +156 -156
- data/spec/functional/knife/exec_spec.rb +55 -55
- data/spec/functional/knife/rehash_spec.rb +39 -39
- data/spec/functional/knife/smoke_test.rb +42 -42
- data/spec/functional/knife/ssh_spec.rb +359 -359
- data/spec/functional/mixin/from_file_spec.rb +82 -82
- data/spec/functional/mixin/powershell_out_spec.rb +43 -43
- data/spec/functional/mixin/shell_out_spec.rb +78 -78
- data/spec/functional/mixin/user_context_spec.rb +117 -117
- data/spec/functional/notifications_spec.rb +238 -238
- data/spec/functional/provider/remote_file/cache_control_data_spec.rb +100 -100
- data/spec/functional/provider/whyrun_safe_ruby_block_spec.rb +51 -51
- data/spec/functional/rebooter_spec.rb +117 -117
- data/spec/functional/resource/.DS_Store +0 -0
- data/spec/functional/resource/aix_service_spec.rb +138 -138
- data/spec/functional/resource/aixinit_service_spec.rb +211 -211
- data/spec/functional/resource/apt_package_spec.rb +386 -386
- data/spec/functional/resource/base.rb +28 -28
- data/spec/functional/resource/bash_spec.rb +54 -54
- data/spec/functional/resource/batch_spec.rb +34 -34
- data/spec/functional/resource/bff_spec.rb +120 -120
- data/spec/functional/resource/chocolatey_package_spec.rb +118 -118
- data/spec/functional/resource/cookbook_file_spec.rb +81 -81
- data/spec/functional/resource/cron_spec.rb +179 -179
- data/spec/functional/resource/directory_spec.rb +43 -43
- data/spec/functional/resource/dnf_package_spec.rb +686 -686
- data/spec/functional/resource/dpkg_package_spec.rb +339 -339
- data/spec/functional/resource/dsc_resource_spec.rb +90 -90
- data/spec/functional/resource/dsc_script_spec.rb +484 -484
- data/spec/functional/resource/execute_spec.rb +171 -171
- data/spec/functional/resource/file_spec.rb +167 -167
- data/spec/functional/resource/git_spec.rb +257 -257
- data/spec/functional/resource/group_spec.rb +497 -497
- data/spec/functional/resource/ifconfig_spec.rb +172 -172
- data/spec/functional/resource/insserv_spec.rb +206 -205
- data/spec/functional/resource/link_spec.rb +699 -699
- data/spec/functional/resource/mount_spec.rb +207 -207
- data/spec/functional/resource/msu_package_spec.rb +98 -98
- data/spec/functional/resource/ohai_spec.rb +62 -62
- data/spec/functional/resource/powershell_script_spec.rb +599 -599
- data/spec/functional/resource/reboot_spec.rb +103 -103
- data/spec/functional/resource/registry_spec.rb +676 -676
- data/spec/functional/resource/remote_directory_spec.rb +220 -220
- data/spec/functional/resource/remote_file_spec.rb +424 -424
- data/spec/functional/resource/rpm_spec.rb +120 -120
- data/spec/functional/resource/template_spec.rb +245 -245
- data/spec/functional/resource/timezone_spec.rb +39 -39
- data/spec/functional/resource/user/dscl_spec.rb +195 -195
- data/spec/functional/resource/user/windows_spec.rb +245 -245
- data/spec/functional/resource/windows_certificate_spec.rb +492 -492
- data/spec/functional/resource/windows_env_spec.rb +285 -285
- data/spec/functional/resource/windows_package_spec.rb +168 -168
- data/spec/functional/resource/windows_path_spec.rb +64 -64
- data/spec/functional/resource/windows_service_spec.rb +102 -102
- data/spec/functional/resource/windows_task_spec.rb +1917 -1917
- data/spec/functional/resource/yum_package_spec.rb +959 -959
- data/spec/functional/resource/zypper_package_spec.rb +233 -233
- data/spec/functional/root_alias_spec.rb +78 -78
- data/spec/functional/run_lock_spec.rb +473 -473
- data/spec/functional/shell_spec.rb +146 -146
- data/spec/functional/tiny_server_spec.rb +79 -79
- data/spec/functional/util/.DS_Store +0 -0
- data/spec/functional/util/path_helper_spec.rb +37 -37
- data/spec/functional/util/powershell/cmdlet_spec.rb +111 -111
- data/spec/functional/version_spec.rb +35 -35
- data/spec/functional/win32/crypto_spec.rb +54 -54
- data/spec/functional/win32/registry_spec.rb +624 -624
- data/spec/functional/win32/security_spec.rb +206 -206
- data/spec/functional/win32/service_manager_spec.rb +220 -220
- data/spec/functional/win32/sid_spec.rb +55 -55
- data/spec/functional/win32/version_info_spec.rb +50 -50
- data/spec/functional/win32/versions_spec.rb +115 -115
- data/spec/integration/.DS_Store +0 -0
- data/spec/integration/client/client_spec.rb +732 -732
- data/spec/integration/client/exit_code_spec.rb +142 -142
- data/spec/integration/client/ipv6_spec.rb +134 -134
- data/spec/integration/knife/chef_fs_data_store_spec.rb +556 -556
- data/spec/integration/knife/chef_repo_path_spec.rb +961 -959
- data/spec/integration/knife/chef_repository_file_system_spec.rb +199 -199
- data/spec/integration/knife/chefignore_spec.rb +300 -300
- data/spec/integration/knife/client_bulk_delete_spec.rb +130 -130
- data/spec/integration/knife/client_create_spec.rb +69 -69
- data/spec/integration/knife/client_delete_spec.rb +63 -63
- data/spec/integration/knife/client_key_create_spec.rb +65 -65
- data/spec/integration/knife/client_key_delete_spec.rb +42 -42
- data/spec/integration/knife/client_key_list_spec.rb +60 -60
- data/spec/integration/knife/client_key_show_spec.rb +44 -44
- data/spec/integration/knife/client_list_spec.rb +48 -48
- data/spec/integration/knife/client_show_spec.rb +36 -36
- data/spec/integration/knife/common_options_spec.rb +173 -173
- data/spec/integration/knife/config_get_profile_spec.rb +112 -112
- data/spec/integration/knife/config_get_spec.rb +183 -183
- data/spec/integration/knife/config_list_profiles_spec.rb +188 -188
- data/spec/integration/knife/config_use_profile_spec.rb +100 -100
- data/spec/integration/knife/cookbook_api_ipv6_spec.rb +112 -112
- data/spec/integration/knife/cookbook_bulk_delete_spec.rb +64 -64
- data/spec/integration/knife/cookbook_download_spec.rb +71 -71
- data/spec/integration/knife/cookbook_list_spec.rb +54 -54
- data/spec/integration/knife/cookbook_show_spec.rb +148 -148
- data/spec/integration/knife/cookbook_upload_spec.rb +90 -90
- data/spec/integration/knife/data_bag_create_spec.rb +124 -124
- data/spec/integration/knife/data_bag_delete_spec.rb +58 -58
- data/spec/integration/knife/data_bag_edit_spec.rb +104 -104
- data/spec/integration/knife/data_bag_from_file_spec.rb +115 -115
- data/spec/integration/knife/data_bag_list_spec.rb +43 -43
- data/spec/integration/knife/data_bag_show_spec.rb +94 -94
- data/spec/integration/knife/delete_spec.rb +1017 -1017
- data/spec/integration/knife/deps_spec.rb +702 -702
- data/spec/integration/knife/diff_spec.rb +602 -602
- data/spec/integration/knife/download_spec.rb +1333 -1333
- data/spec/integration/knife/environment_compare_spec.rb +74 -74
- data/spec/integration/knife/environment_create_spec.rb +40 -40
- data/spec/integration/knife/environment_delete_spec.rb +36 -36
- data/spec/integration/knife/environment_from_file_spec.rb +115 -115
- data/spec/integration/knife/environment_list_spec.rb +41 -41
- data/spec/integration/knife/environment_show_spec.rb +76 -76
- data/spec/integration/knife/list_spec.rb +1059 -1059
- data/spec/integration/knife/node_bulk_delete_spec.rb +51 -51
- data/spec/integration/knife/node_create_spec.rb +46 -46
- data/spec/integration/knife/node_delete_spec.rb +47 -47
- data/spec/integration/knife/node_environment_set_spec.rb +45 -45
- data/spec/integration/knife/node_from_file_spec.rb +58 -58
- data/spec/integration/knife/node_list_spec.rb +44 -44
- data/spec/integration/knife/node_run_list_add_spec.rb +53 -53
- data/spec/integration/knife/node_run_list_remove_spec.rb +35 -35
- data/spec/integration/knife/node_run_list_set_spec.rb +40 -40
- data/spec/integration/knife/node_show_spec.rb +35 -35
- data/spec/integration/knife/raw_spec.rb +248 -248
- data/spec/integration/knife/redirection_spec.rb +54 -54
- data/spec/integration/knife/role_bulk_delete_spec.rb +51 -51
- data/spec/integration/knife/role_create_spec.rb +40 -40
- data/spec/integration/knife/role_delete_spec.rb +47 -47
- data/spec/integration/knife/role_from_file_spec.rb +95 -95
- data/spec/integration/knife/role_list_spec.rb +44 -44
- data/spec/integration/knife/role_show_spec.rb +50 -50
- data/spec/integration/knife/search_node_spec.rb +39 -39
- data/spec/integration/knife/serve_spec.rb +93 -93
- data/spec/integration/knife/show_spec.rb +167 -167
- data/spec/integration/knife/upload_spec.rb +1540 -1540
- data/spec/integration/recipes/accumulator_spec.rb +232 -232
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +171 -171
- data/spec/integration/recipes/lwrp_spec.rb +53 -53
- data/spec/integration/recipes/noop_resource_spec.rb +24 -24
- data/spec/integration/recipes/notifies_spec.rb +394 -394
- data/spec/integration/recipes/notifying_block_spec.rb +111 -111
- data/spec/integration/recipes/provider_choice.rb +37 -37
- data/spec/integration/recipes/recipe_dsl_spec.rb +1373 -1373
- data/spec/integration/recipes/remote_directory.rb +74 -74
- data/spec/integration/recipes/resource_action_spec.rb +504 -504
- data/spec/integration/recipes/resource_converge_if_changed_spec.rb +552 -552
- data/spec/integration/recipes/resource_load_spec.rb +192 -192
- data/spec/integration/recipes/unified_mode_spec.rb +876 -0
- data/spec/integration/solo/solo_spec.rb +217 -217
- data/spec/rcov.opts +2 -2
- data/spec/scripts/ssl-serve.rb +47 -47
- data/spec/spec_helper.rb +332 -328
- data/spec/stress/.DS_Store +0 -0
- data/spec/stress/win32/file_spec.rb +37 -37
- data/spec/stress/win32/memory_spec.rb +22 -22
- data/spec/stress/win32/security_spec.rb +69 -69
- data/spec/support/.DS_Store +0 -0
- data/spec/support/chef_helpers.rb +115 -115
- data/spec/support/key_helpers.rb +104 -104
- data/spec/support/lib/chef/provider/easy.rb +35 -35
- data/spec/support/lib/chef/provider/openldap_includer.rb +29 -29
- data/spec/support/lib/chef/provider/snakeoil.rb +42 -42
- data/spec/support/lib/chef/resource/cat.rb +39 -39
- data/spec/support/lib/chef/resource/one_two_three_four.rb +36 -36
- data/spec/support/lib/chef/resource/openldap_includer.rb +28 -28
- data/spec/support/lib/chef/resource/with_state.rb +30 -30
- data/spec/support/lib/chef/resource/zen_follower.rb +35 -35
- data/spec/support/lib/chef/resource/zen_master.rb +40 -40
- data/spec/support/lib/library_load_order.rb +20 -20
- data/spec/support/matchers/leak.rb +98 -98
- data/spec/support/mock/constant.rb +52 -52
- data/spec/support/mock/platform.rb +25 -25
- data/spec/support/platform_helpers.rb +276 -268
- data/spec/support/platforms/prof/gc.rb +51 -51
- data/spec/support/platforms/prof/win32.rb +45 -45
- data/spec/support/platforms/win32/spec_service.rb +59 -59
- data/spec/support/shared/context/client.rb +305 -305
- data/spec/support/shared/context/config.rb +21 -21
- data/spec/support/shared/context/win32.rb +34 -34
- data/spec/support/shared/examples/client.rb +104 -104
- data/spec/support/shared/functional/diff_disabled.rb +10 -10
- data/spec/support/shared/functional/directory_resource.rb +178 -178
- data/spec/support/shared/functional/execute_resource.rb +150 -150
- data/spec/support/shared/functional/file_resource.rb +1050 -1050
- data/spec/support/shared/functional/http.rb +248 -248
- data/spec/support/shared/functional/knife.rb +37 -37
- data/spec/support/shared/functional/securable_resource.rb +578 -578
- data/spec/support/shared/functional/securable_resource_with_reporting.rb +394 -394
- data/spec/support/shared/functional/win32_service.rb +57 -57
- data/spec/support/shared/functional/windows_script.rb +272 -272
- data/spec/support/shared/integration/app_server_support.rb +40 -40
- data/spec/support/shared/integration/integration_helper.rb +154 -154
- data/spec/support/shared/integration/knife_support.rb +196 -196
- data/spec/support/shared/matchers/exit_with_code.rb +32 -32
- data/spec/support/shared/matchers/match_environment_variable.rb +17 -17
- data/spec/support/shared/shared_examples.rb +14 -14
- data/spec/support/shared/unit/api_error_inspector.rb +190 -190
- data/spec/support/shared/unit/api_versioning.rb +77 -77
- data/spec/support/shared/unit/application_dot_d.rb +75 -75
- data/spec/support/shared/unit/execute_resource.rb +168 -168
- data/spec/support/shared/unit/file_system_support.rb +69 -69
- data/spec/support/shared/unit/knife_shared.rb +39 -39
- data/spec/support/shared/unit/mock_shellout.rb +49 -49
- data/spec/support/shared/unit/platform_introspector.rb +189 -189
- data/spec/support/shared/unit/provider/file.rb +854 -854
- data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +402 -402
- data/spec/support/shared/unit/resource/static_provider_resolution.rb +63 -63
- data/spec/support/shared/unit/script_resource.rb +90 -90
- data/spec/support/shared/unit/user_and_client_shared.rb +114 -114
- data/spec/support/shared/unit/windows_script_resource.rb +80 -80
- data/spec/tiny_server.rb +191 -191
- data/spec/unit/.DS_Store +0 -0
- data/spec/unit/api_client/registration_spec.rb +278 -278
- data/spec/unit/api_client_spec.rb +341 -341
- data/spec/unit/api_client_v1_spec.rb +455 -455
- data/spec/unit/application/apply_spec.rb +113 -113
- data/spec/unit/application/client_spec.rb +559 -559
- data/spec/unit/application/exit_code_spec.rb +144 -144
- data/spec/unit/application/knife_spec.rb +229 -229
- data/spec/unit/application/solo_spec.rb +225 -225
- data/spec/unit/application_spec.rb +486 -486
- data/spec/unit/audit/audit_event_proxy_spec.rb +318 -318
- data/spec/unit/audit/audit_reporter_spec.rb +435 -435
- data/spec/unit/audit/control_group_data_spec.rb +482 -482
- data/spec/unit/audit/logger_spec.rb +42 -42
- data/spec/unit/audit/rspec_formatter_spec.rb +29 -29
- data/spec/unit/audit/runner_spec.rb +144 -144
- data/spec/unit/chef_class_spec.rb +240 -240
- data/spec/unit/chef_fs/config_spec.rb +235 -235
- data/spec/unit/chef_fs/data_handler/data_bag_item_data_handler.rb +82 -82
- data/spec/unit/chef_fs/data_handler/data_handler_base_spec.rb +65 -65
- data/spec/unit/chef_fs/data_handler/group_handler_spec.rb +63 -63
- data/spec/unit/chef_fs/diff_spec.rb +328 -328
- data/spec/unit/chef_fs/file_pattern_spec.rb +512 -512
- data/spec/unit/chef_fs/file_system/cookbook_subdir_spec.rb +34 -34
- data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +47 -47
- data/spec/unit/chef_fs/file_system/repository/base_file_spec.rb +126 -126
- data/spec/unit/chef_fs/file_system/repository/directory_spec.rb +175 -175
- data/spec/unit/chef_fs/file_system_spec.rb +148 -148
- data/spec/unit/chef_fs/parallelizer.rb +477 -477
- data/spec/unit/chef_fs/path_util_spec.rb +108 -108
- data/spec/unit/chef_spec.rb +25 -25
- data/spec/unit/client_spec.rb +595 -595
- data/spec/unit/config_fetcher_spec.rb +125 -125
- data/spec/unit/config_spec.rb +31 -31
- data/spec/unit/cookbook/chefignore_spec.rb +49 -49
- data/spec/unit/cookbook/cookbook_version_loader_spec.rb +210 -210
- data/spec/unit/cookbook/file_vendor_spec.rb +123 -123
- data/spec/unit/cookbook/gem_installer_spec.rb +113 -92
- data/spec/unit/cookbook/manifest_v0_spec.rb +133 -133
- data/spec/unit/cookbook/manifest_v2_spec.rb +70 -70
- data/spec/unit/cookbook/metadata_spec.rb +892 -892
- data/spec/unit/cookbook/synchronizer_spec.rb +557 -557
- data/spec/unit/cookbook/syntax_check_spec.rb +226 -226
- data/spec/unit/cookbook_loader_spec.rb +302 -302
- data/spec/unit/cookbook_manifest_spec.rb +228 -228
- data/spec/unit/cookbook_site_streaming_uploader_spec.rb +199 -199
- data/spec/unit/cookbook_spec.rb +62 -62
- data/spec/unit/cookbook_uploader_spec.rb +199 -199
- data/spec/unit/cookbook_version_file_specificity_spec.rb +623 -623
- data/spec/unit/cookbook_version_spec.rb +250 -250
- data/spec/unit/daemon_spec.rb +183 -183
- data/spec/unit/data_bag_item_spec.rb +392 -392
- data/spec/unit/data_bag_spec.rb +260 -260
- data/spec/unit/data_collector/messages/helpers_spec.rb +202 -202
- data/spec/unit/data_collector/messages_spec.rb +329 -329
- data/spec/unit/data_collector/resource_report_spec.rb +145 -145
- data/spec/unit/data_collector_spec.rb +876 -876
- data/spec/unit/decorator/lazy_array_spec.rb +58 -58
- data/spec/unit/decorator/lazy_spec.rb +39 -39
- data/spec/unit/decorator_spec.rb +142 -142
- data/spec/unit/deprecated_spec.rb +65 -65
- data/spec/unit/deprecation_spec.rb +129 -129
- data/spec/unit/digester_spec.rb +49 -49
- data/spec/unit/dsl/audit_spec.rb +43 -43
- data/spec/unit/dsl/data_query_spec.rb +107 -107
- data/spec/unit/dsl/declare_resource_spec.rb +374 -374
- data/spec/unit/dsl/platform_introspection_spec.rb +129 -129
- data/spec/unit/dsl/reboot_pending_spec.rb +87 -87
- data/spec/unit/dsl/recipe_spec.rb +76 -76
- data/spec/unit/dsl/registry_helper_spec.rb +52 -52
- data/spec/unit/dsl/resources_spec.rb +85 -85
- data/spec/unit/encrypted_data_bag_item/check_encrypted_spec.rb +96 -96
- data/spec/unit/encrypted_data_bag_item_spec.rb +438 -438
- data/spec/unit/environment_spec.rb +470 -470
- data/spec/unit/event_dispatch/dispatcher_spec.rb +122 -122
- data/spec/unit/event_dispatch/dsl_spec.rb +83 -83
- data/spec/unit/exceptions_spec.rb +132 -132
- data/spec/unit/file_access_control_spec.rb +308 -308
- data/spec/unit/file_cache_spec.rb +114 -114
- data/spec/unit/file_content_management/deploy/cp_spec.rb +44 -44
- data/spec/unit/file_content_management/deploy/mv_unix_spec.rb +113 -113
- data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +232 -232
- data/spec/unit/file_content_management/tempfile_spec.rb +115 -115
- data/spec/unit/formatters/base_spec.rb +100 -100
- data/spec/unit/formatters/doc_spec.rb +110 -92
- data/spec/unit/formatters/error_description_spec.rb +141 -141
- data/spec/unit/formatters/error_inspectors/api_error_formatting_spec.rb +76 -76
- data/spec/unit/formatters/error_inspectors/compile_error_inspector_spec.rb +265 -265
- data/spec/unit/formatters/error_inspectors/cookbook_resolve_error_inspector_spec.rb +126 -126
- data/spec/unit/formatters/error_inspectors/cookbook_sync_error_inspector_spec.rb +43 -43
- data/spec/unit/formatters/error_inspectors/node_load_error_inspector_spec.rb +26 -26
- data/spec/unit/formatters/error_inspectors/registration_error_inspector_spec.rb +26 -26
- data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +191 -191
- data/spec/unit/formatters/error_inspectors/run_list_expansion_error_inspector_spec.rb +91 -91
- data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +155 -155
- data/spec/unit/guard_interpreter_spec.rb +41 -41
- data/spec/unit/handler/json_file_spec.rb +63 -63
- data/spec/unit/handler_spec.rb +302 -302
- data/spec/unit/http/api_versions_spec.rb +82 -82
- data/spec/unit/http/authenticator_spec.rb +125 -125
- data/spec/unit/http/basic_client_spec.rb +72 -72
- data/spec/unit/http/http_request_spec.rb +97 -97
- data/spec/unit/http/json_input_spec.rb +128 -128
- data/spec/unit/http/simple_spec.rb +32 -32
- data/spec/unit/http/socketless_chef_zero_client_spec.rb +174 -174
- data/spec/unit/http/ssl_policies_spec.rb +169 -169
- data/spec/unit/http/validate_content_length_spec.rb +207 -207
- data/spec/unit/http_spec.rb +229 -229
- data/spec/unit/json_compat_spec.rb +73 -73
- data/spec/unit/key_spec.rb +631 -631
- data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +152 -152
- data/spec/unit/knife/bootstrap/client_builder_spec.rb +207 -207
- data/spec/unit/knife/bootstrap_spec.rb +972 -886
- data/spec/unit/knife/client_bulk_delete_spec.rb +166 -166
- data/spec/unit/knife/client_create_spec.rb +186 -186
- data/spec/unit/knife/client_delete_spec.rb +99 -99
- data/spec/unit/knife/client_edit_spec.rb +53 -53
- data/spec/unit/knife/client_list_spec.rb +34 -34
- data/spec/unit/knife/client_reregister_spec.rb +62 -62
- data/spec/unit/knife/client_show_spec.rb +52 -52
- data/spec/unit/knife/configure_client_spec.rb +81 -81
- data/spec/unit/knife/configure_spec.rb +190 -190
- data/spec/unit/knife/cookbook_bulk_delete_spec.rb +87 -87
- data/spec/unit/knife/cookbook_create_spec.rb +42 -42
- data/spec/unit/knife/cookbook_delete_spec.rb +239 -239
- data/spec/unit/knife/cookbook_download_spec.rb +255 -255
- data/spec/unit/knife/cookbook_list_spec.rb +88 -88
- data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +65 -65
- data/spec/unit/knife/cookbook_metadata_spec.rb +182 -182
- data/spec/unit/knife/cookbook_show_spec.rb +254 -254
- data/spec/unit/knife/cookbook_test_spec.rb +84 -84
- data/spec/unit/knife/cookbook_upload_spec.rb +331 -331
- data/spec/unit/knife/core/bootstrap_context_spec.rb +324 -324
- data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +187 -187
- data/spec/unit/knife/core/gem_glob_loader_spec.rb +209 -209
- data/spec/unit/knife/core/hashed_command_loader_spec.rb +110 -110
- data/spec/unit/knife/core/node_editor_spec.rb +211 -211
- data/spec/unit/knife/core/object_loader_spec.rb +81 -81
- data/spec/unit/knife/core/subcommand_loader_spec.rb +64 -64
- data/spec/unit/knife/core/ui_spec.rb +639 -639
- data/spec/unit/knife/data_bag_create_spec.rb +175 -175
- data/spec/unit/knife/data_bag_edit_spec.rb +126 -126
- data/spec/unit/knife/data_bag_from_file_spec.rb +173 -173
- data/spec/unit/knife/data_bag_secret_options_spec.rb +165 -165
- data/spec/unit/knife/data_bag_show_spec.rb +138 -138
- data/spec/unit/knife/environment_compare_spec.rb +112 -112
- data/spec/unit/knife/environment_create_spec.rb +91 -91
- data/spec/unit/knife/environment_delete_spec.rb +71 -71
- data/spec/unit/knife/environment_edit_spec.rb +79 -79
- data/spec/unit/knife/environment_from_file_spec.rb +90 -90
- data/spec/unit/knife/environment_list_spec.rb +54 -54
- data/spec/unit/knife/environment_show_spec.rb +52 -52
- data/spec/unit/knife/key_create_spec.rb +223 -223
- data/spec/unit/knife/key_delete_spec.rb +133 -133
- data/spec/unit/knife/key_edit_spec.rb +264 -264
- data/spec/unit/knife/key_helper.rb +74 -74
- data/spec/unit/knife/key_list_spec.rb +216 -216
- data/spec/unit/knife/key_show_spec.rb +126 -126
- data/spec/unit/knife/node_bulk_delete_spec.rb +94 -94
- data/spec/unit/knife/node_delete_spec.rb +77 -77
- data/spec/unit/knife/node_edit_spec.rb +116 -116
- data/spec/unit/knife/node_environment_set_spec.rb +56 -56
- data/spec/unit/knife/node_from_file_spec.rb +59 -59
- data/spec/unit/knife/node_list_spec.rb +62 -62
- data/spec/unit/knife/node_policy_set_spec.rb +122 -122
- data/spec/unit/knife/node_run_list_add_spec.rb +145 -145
- data/spec/unit/knife/node_run_list_remove_spec.rb +106 -106
- data/spec/unit/knife/node_run_list_set_spec.rb +115 -115
- data/spec/unit/knife/node_show_spec.rb +65 -65
- data/spec/unit/knife/osc_user_create_spec.rb +93 -93
- data/spec/unit/knife/osc_user_delete_spec.rb +44 -44
- data/spec/unit/knife/osc_user_edit_spec.rb +52 -52
- data/spec/unit/knife/osc_user_list_spec.rb +37 -37
- data/spec/unit/knife/osc_user_reregister_spec.rb +58 -58
- data/spec/unit/knife/osc_user_show_spec.rb +46 -46
- data/spec/unit/knife/raw_spec.rb +43 -43
- data/spec/unit/knife/role_bulk_delete_spec.rb +80 -80
- data/spec/unit/knife/role_create_spec.rb +80 -80
- data/spec/unit/knife/role_delete_spec.rb +67 -67
- data/spec/unit/knife/role_edit_spec.rb +77 -77
- data/spec/unit/knife/role_env_run_list_add_spec.rb +217 -217
- data/spec/unit/knife/role_env_run_list_clear_spec.rb +94 -94
- data/spec/unit/knife/role_env_run_list_remove_spec.rb +102 -102
- data/spec/unit/knife/role_env_run_list_replace_spec.rb +105 -105
- data/spec/unit/knife/role_env_run_list_set_spec.rb +99 -99
- data/spec/unit/knife/role_from_file_spec.rb +69 -69
- data/spec/unit/knife/role_list_spec.rb +54 -54
- data/spec/unit/knife/role_run_list_add_spec.rb +179 -179
- data/spec/unit/knife/role_run_list_clear_spec.rb +84 -84
- data/spec/unit/knife/role_run_list_remove_spec.rb +92 -92
- data/spec/unit/knife/role_run_list_replace_spec.rb +98 -98
- data/spec/unit/knife/role_run_list_set_spec.rb +89 -89
- data/spec/unit/knife/role_show_spec.rb +59 -59
- data/spec/unit/knife/ssh_spec.rb +496 -496
- data/spec/unit/knife/ssl_check_spec.rb +256 -256
- data/spec/unit/knife/ssl_fetch_spec.rb +222 -222
- data/spec/unit/knife/status_spec.rb +111 -111
- data/spec/unit/knife/supermarket_download_spec.rb +152 -152
- data/spec/unit/knife/supermarket_install_spec.rb +201 -201
- data/spec/unit/knife/supermarket_share_spec.rb +209 -209
- data/spec/unit/knife/supermarket_unshare_spec.rb +78 -78
- data/spec/unit/knife/tag_create_spec.rb +23 -23
- data/spec/unit/knife/tag_delete_spec.rb +25 -25
- data/spec/unit/knife/tag_list_spec.rb +23 -23
- data/spec/unit/knife/user_create_spec.rb +214 -214
- data/spec/unit/knife/user_delete_spec.rb +65 -65
- data/spec/unit/knife/user_edit_spec.rb +66 -66
- data/spec/unit/knife/user_list_spec.rb +36 -36
- data/spec/unit/knife/user_reregister_spec.rb +74 -74
- data/spec/unit/knife/user_show_spec.rb +65 -65
- data/spec/unit/knife_spec.rb +588 -588
- data/spec/unit/log/syslog_spec.rb +51 -51
- data/spec/unit/log/winevt_spec.rb +54 -54
- data/spec/unit/log_spec.rb +24 -24
- data/spec/unit/lwrp_spec.rb +690 -690
- data/spec/unit/mash_spec.rb +51 -51
- data/spec/unit/mixin/api_version_request_handling_spec.rb +126 -126
- data/spec/unit/mixin/checksum_spec.rb +54 -54
- data/spec/unit/mixin/convert_to_class_name_spec.rb +54 -54
- data/spec/unit/mixin/deep_merge_spec.rb +342 -342
- data/spec/unit/mixin/deprecation_spec.rb +57 -57
- data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +96 -96
- data/spec/unit/mixin/homebrew_user_spec.rb +96 -96
- data/spec/unit/mixin/lazy_module_include.rb +71 -71
- data/spec/unit/mixin/openssl_helper_spec.rb +857 -857
- data/spec/unit/mixin/params_validate_spec.rb +421 -421
- data/spec/unit/mixin/path_sanity_spec.rb +92 -92
- data/spec/unit/mixin/powershell_exec_spec.rb +43 -43
- data/spec/unit/mixin/powershell_out_spec.rb +94 -94
- data/spec/unit/mixin/powershell_type_coercions_spec.rb +84 -84
- data/spec/unit/mixin/properties_spec.rb +107 -107
- data/spec/unit/mixin/proxified_socket_spec.rb +97 -97
- data/spec/unit/mixin/securable_spec.rb +314 -314
- data/spec/unit/mixin/shell_out_spec.rb +450 -450
- data/spec/unit/mixin/subclass_directive_spec.rb +45 -45
- data/spec/unit/mixin/template_spec.rb +321 -321
- data/spec/unit/mixin/unformatter_spec.rb +61 -61
- data/spec/unit/mixin/uris_spec.rb +57 -57
- data/spec/unit/mixin/user_context_spec.rb +108 -108
- data/spec/unit/mixin/versioned_api_spec.rb +128 -128
- data/spec/unit/mixin/which.rb +160 -160
- data/spec/unit/mixin/windows_architecture_helper_spec.rb +85 -85
- data/spec/unit/mixin/xml_escape_spec.rb +54 -54
- data/spec/unit/monkey_patches/uri_spec.rb +34 -34
- data/spec/unit/monologger_spec.rb +45 -45
- data/spec/unit/node/attribute_spec.rb +1276 -1276
- data/spec/unit/node/immutable_collections_spec.rb +327 -327
- data/spec/unit/node/vivid_mash_spec.rb +353 -353
- data/spec/unit/node_map_spec.rb +242 -242
- data/spec/unit/node_spec.rb +1851 -1851
- data/spec/unit/org_spec.rb +196 -196
- data/spec/unit/platform/query_helpers_spec.rb +207 -207
- data/spec/unit/policy_builder/dynamic_spec.rb +273 -273
- data/spec/unit/policy_builder/expand_node_object_spec.rb +311 -311
- data/spec/unit/policy_builder/policyfile_spec.rb +872 -872
- data/spec/unit/policy_builder_spec.rb +26 -26
- data/spec/unit/property/state_spec.rb +508 -508
- data/spec/unit/property/validation_spec.rb +758 -758
- data/spec/unit/property_spec.rb +1231 -1231
- data/spec/unit/provider/apt_preference_spec.rb +87 -87
- data/spec/unit/provider/apt_repository_spec.rb +254 -254
- data/spec/unit/provider/apt_update_spec.rb +116 -116
- data/spec/unit/provider/cookbook_file/content_spec.rb +39 -39
- data/spec/unit/provider/cookbook_file_spec.rb +59 -59
- data/spec/unit/provider/cron/unix_spec.rb +144 -144
- data/spec/unit/provider/cron_spec.rb +1084 -1084
- data/spec/unit/provider/directory_spec.rb +300 -300
- data/spec/unit/provider/dsc_resource_spec.rb +343 -343
- data/spec/unit/provider/dsc_script_spec.rb +173 -173
- data/spec/unit/provider/execute_spec.rb +251 -251
- data/spec/unit/provider/file/content_spec.rb +114 -114
- data/spec/unit/provider/file_spec.rb +57 -57
- data/spec/unit/provider/git_spec.rb +782 -782
- data/spec/unit/provider/group/dscl_spec.rb +339 -339
- data/spec/unit/provider/group/gpasswd_spec.rb +119 -119
- data/spec/unit/provider/group/groupadd_spec.rb +194 -194
- data/spec/unit/provider/group/groupmod_spec.rb +136 -136
- data/spec/unit/provider/group/pw_spec.rb +141 -141
- data/spec/unit/provider/group/suse_spec.rb +90 -90
- data/spec/unit/provider/group/usermod_spec.rb +115 -115
- data/spec/unit/provider/group/windows_spec.rb +124 -124
- data/spec/unit/provider/group_spec.rb +286 -286
- data/spec/unit/provider/http_request_spec.rb +159 -159
- data/spec/unit/provider/ifconfig/aix_spec.rb +180 -180
- data/spec/unit/provider/ifconfig/debian_spec.rb +332 -332
- data/spec/unit/provider/ifconfig/redhat_spec.rb +83 -83
- data/spec/unit/provider/ifconfig_spec.rb +206 -206
- data/spec/unit/provider/launchd_spec.rb +268 -268
- data/spec/unit/provider/link_spec.rb +409 -409
- data/spec/unit/provider/log_spec.rb +94 -94
- data/spec/unit/provider/mdadm_spec.rb +140 -140
- data/spec/unit/provider/mount/aix_spec.rb +277 -277
- data/spec/unit/provider/mount/mount_spec.rb +527 -527
- data/spec/unit/provider/mount/solaris_spec.rb +822 -822
- data/spec/unit/provider/mount/windows_spec.rb +149 -149
- data/spec/unit/provider/mount_spec.rb +191 -191
- data/spec/unit/provider/ohai_spec.rb +84 -84
- data/spec/unit/provider/osx_profile_spec.rb +257 -257
- data/spec/unit/provider/package/apt_spec.rb +610 -610
- data/spec/unit/provider/package/bff_spec.rb +187 -187
- data/spec/unit/provider/package/cab_spec.rb +272 -272
- data/spec/unit/provider/package/chocolatey_spec.rb +507 -507
- data/spec/unit/provider/package/dnf/python_helper_spec.rb +29 -29
- data/spec/unit/provider/package/dpkg_spec.rb +287 -287
- data/spec/unit/provider/package/freebsd/pkg_spec.rb +274 -274
- data/spec/unit/provider/package/freebsd/pkgng_spec.rb +148 -148
- data/spec/unit/provider/package/freebsd/port_spec.rb +163 -163
- data/spec/unit/provider/package/homebrew_spec.rb +293 -293
- data/spec/unit/provider/package/ips_spec.rb +233 -233
- data/spec/unit/provider/package/macports_spec.rb +203 -203
- data/spec/unit/provider/package/msu_spec.rb +283 -283
- data/spec/unit/provider/package/openbsd_spec.rb +132 -132
- data/spec/unit/provider/package/pacman_spec.rb +194 -194
- data/spec/unit/provider/package/paludis_spec.rb +134 -134
- data/spec/unit/provider/package/portage_spec.rb +179 -179
- data/spec/unit/provider/package/powershell_spec.rb +501 -501
- data/spec/unit/provider/package/rpm_spec.rb +429 -429
- data/spec/unit/provider/package/rubygems_spec.rb +981 -981
- data/spec/unit/provider/package/smartos_spec.rb +110 -110
- data/spec/unit/provider/package/solaris_spec.rb +167 -167
- data/spec/unit/provider/package/windows/exe_spec.rb +201 -201
- data/spec/unit/provider/package/windows/msi_spec.rb +168 -168
- data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +78 -78
- data/spec/unit/provider/package/windows_spec.rb +463 -463
- data/spec/unit/provider/package/yum/python_helper_spec.rb +29 -29
- data/spec/unit/provider/package/yum/yum_cache_spec.rb +109 -109
- data/spec/unit/provider/package/zypper_spec.rb +487 -478
- data/spec/unit/provider/package_spec.rb +1013 -1013
- data/spec/unit/provider/powershell_script_spec.rb +116 -116
- data/spec/unit/provider/registry_key_spec.rb +487 -487
- data/spec/unit/provider/remote_directory_spec.rb +236 -236
- data/spec/unit/provider/remote_file/cache_control_data_spec.rb +245 -245
- data/spec/unit/provider/remote_file/content_spec.rb +253 -253
- data/spec/unit/provider/remote_file/fetcher_spec.rb +95 -95
- data/spec/unit/provider/remote_file/ftp_spec.rb +217 -217
- data/spec/unit/provider/remote_file/http_spec.rb +324 -324
- data/spec/unit/provider/remote_file/local_file_spec.rb +105 -105
- data/spec/unit/provider/remote_file/network_file_spec.rb +50 -50
- data/spec/unit/provider/remote_file/sftp_spec.rb +150 -150
- data/spec/unit/provider/remote_file_spec.rb +62 -62
- data/spec/unit/provider/route_spec.rb +270 -270
- data/spec/unit/provider/ruby_block_spec.rb +45 -45
- data/spec/unit/provider/script_spec.rb +157 -157
- data/spec/unit/provider/service/aix_service_spec.rb +195 -195
- data/spec/unit/provider/service/aixinit_service_spec.rb +272 -272
- data/spec/unit/provider/service/arch_service_spec.rb +324 -324
- data/spec/unit/provider/service/debian_service_spec.rb +249 -249
- data/spec/unit/provider/service/freebsd_service_spec.rb +617 -617
- data/spec/unit/provider/service/gentoo_service_spec.rb +144 -144
- data/spec/unit/provider/service/init_service_spec.rb +235 -235
- data/spec/unit/provider/service/insserv_service_spec.rb +75 -75
- data/spec/unit/provider/service/invokercd_service_spec.rb +211 -211
- data/spec/unit/provider/service/macosx_spec.rb +340 -340
- data/spec/unit/provider/service/openbsd_service_spec.rb +549 -549
- data/spec/unit/provider/service/redhat_spec.rb +250 -250
- data/spec/unit/provider/service/simple_service_spec.rb +169 -169
- data/spec/unit/provider/service/solaris_smf_service_spec.rb +292 -292
- data/spec/unit/provider/service/systemd_service_spec.rb +364 -364
- data/spec/unit/provider/service/upstart_service_spec.rb +351 -351
- data/spec/unit/provider/service/windows_spec.rb +910 -910
- data/spec/unit/provider/service_spec.rb +168 -168
- data/spec/unit/provider/subversion_spec.rb +361 -361
- data/spec/unit/provider/systemd_unit_spec.rb +967 -967
- data/spec/unit/provider/template/content_spec.rb +169 -169
- data/spec/unit/provider/template_spec.rb +87 -87
- data/spec/unit/provider/user/aix_spec.rb +96 -96
- data/spec/unit/provider/user/dscl_spec.rb +920 -920
- data/spec/unit/provider/user/linux_spec.rb +74 -74
- data/spec/unit/provider/user/pw_spec.rb +235 -235
- data/spec/unit/provider/user/solaris_spec.rb +177 -177
- data/spec/unit/provider/user/windows_spec.rb +197 -197
- data/spec/unit/provider/user_spec.rb +478 -478
- data/spec/unit/provider/whyrun_safe_ruby_block_spec.rb +46 -46
- data/spec/unit/provider/windows_env_spec.rb +400 -400
- data/spec/unit/provider/windows_path_spec.rb +65 -65
- data/spec/unit/provider/windows_task_spec.rb +430 -430
- data/spec/unit/provider/yum_repository_spec.rb +35 -35
- data/spec/unit/provider/zypper_repository_spec.rb +126 -126
- data/spec/unit/provider_resolver_spec.rb +923 -923
- data/spec/unit/provider_spec.rb +201 -201
- data/spec/unit/pure_application_spec.rb +32 -32
- data/spec/unit/recipe_spec.rb +589 -589
- data/spec/unit/resource/apt_package_spec.rb +56 -56
- data/spec/unit/resource/apt_preference_spec.rb +57 -57
- data/spec/unit/resource/apt_repository_spec.rb +92 -92
- data/spec/unit/resource/apt_update_spec.rb +62 -62
- data/spec/unit/resource/bash_spec.rb +45 -45
- data/spec/unit/resource/batch_spec.rb +46 -46
- data/spec/unit/resource/bff_package_spec.rb +51 -51
- data/spec/unit/resource/breakpoint_spec.rb +64 -64
- data/spec/unit/resource/build_essential_spec.rb +43 -43
- data/spec/unit/resource/cab_package_spec.rb +64 -64
- data/spec/unit/resource/chef_gem_spec.rb +125 -125
- data/spec/unit/resource/chef_handler_spec.rb +40 -40
- data/spec/unit/resource/chocolatey_config_spec.rb +98 -98
- data/spec/unit/resource/chocolatey_package_spec.rb +91 -91
- data/spec/unit/resource/chocolatey_source_spec.rb +102 -102
- data/spec/unit/resource/conditional_action_not_nothing_spec.rb +45 -45
- data/spec/unit/resource/conditional_spec.rb +254 -254
- data/spec/unit/resource/cookbook_file_spec.rb +93 -93
- data/spec/unit/resource/cron_access_spec.rb +36 -36
- data/spec/unit/resource/cron_d_spec.rb +90 -90
- data/spec/unit/resource/cron_spec.rb +173 -173
- data/spec/unit/resource/csh_spec.rb +45 -45
- data/spec/unit/resource/directory_spec.rb +69 -69
- data/spec/unit/resource/dmg_package_spec.rb +39 -39
- data/spec/unit/resource/dnf_package_spec.rb +108 -108
- data/spec/unit/resource/dpkg_package_spec.rb +50 -50
- data/spec/unit/resource/dsc_resource_spec.rb +102 -102
- data/spec/unit/resource/dsc_script_spec.rb +134 -134
- data/spec/unit/resource/execute_spec.rb +277 -277
- data/spec/unit/resource/file/verification/systemd_unit_spec.rb +103 -103
- data/spec/unit/resource/file/verification_spec.rb +147 -147
- data/spec/unit/resource/file_spec.rb +127 -127
- data/spec/unit/resource/freebsd_package_spec.rb +103 -103
- data/spec/unit/resource/gem_package_spec.rb +67 -67
- data/spec/unit/resource/git_spec.rb +62 -62
- data/spec/unit/resource/group_spec.rb +165 -165
- data/spec/unit/resource/homebrew_cask_spec.rb +40 -40
- data/spec/unit/resource/homebrew_package_spec.rb +68 -68
- data/spec/unit/resource/homebrew_tap_spec.rb +44 -44
- data/spec/unit/resource/hostname_spec.rb +47 -47
- data/spec/unit/resource/http_request_spec.rb +65 -65
- data/spec/unit/resource/ifconfig_spec.rb +109 -109
- data/spec/unit/resource/ips_package_spec.rb +54 -54
- data/spec/unit/resource/kernel_module_spec.rb +48 -48
- data/spec/unit/resource/ksh_spec.rb +45 -45
- data/spec/unit/resource/launchd_spec.rb +40 -40
- data/spec/unit/resource/link_spec.rb +124 -124
- data/spec/unit/resource/locale_spec.rb +60 -60
- data/spec/unit/resource/log_spec.rb +64 -64
- data/spec/unit/resource/macos_user_defaults_spec.rb +35 -35
- data/spec/unit/resource/macports_package_spec.rb +51 -51
- data/spec/unit/resource/mdadm_spec.rb +104 -104
- data/spec/unit/resource/mount_spec.rb +178 -178
- data/spec/unit/resource/msu_package_spec.rb +63 -63
- data/spec/unit/resource/ohai_hint_spec.rb +44 -44
- data/spec/unit/resource/ohai_spec.rb +62 -62
- data/spec/unit/resource/openbsd_package_spec.rb +58 -58
- data/spec/unit/resource/openssl_dhparam.rb +61 -61
- data/spec/unit/resource/openssl_ec_private_key_spec.rb +64 -64
- data/spec/unit/resource/openssl_ec_public_key_spec.rb +43 -43
- data/spec/unit/resource/openssl_rsa_private_key_spec.rb +64 -64
- data/spec/unit/resource/openssl_rsa_public_key_spec.rb +43 -43
- data/spec/unit/resource/openssl_x509_certificate_spec.rb +72 -72
- data/spec/unit/resource/openssl_x509_crl_spec.rb +61 -61
- data/spec/unit/resource/openssl_x509_request.rb +68 -68
- data/spec/unit/resource/osx_profile_spec.rb +60 -60
- data/spec/unit/resource/package_spec.rb +108 -108
- data/spec/unit/resource/pacman_package_spec.rb +46 -46
- data/spec/unit/resource/paludis_package_spec.rb +36 -36
- data/spec/unit/resource/perl_spec.rb +44 -44
- data/spec/unit/resource/portage_package_spec.rb +46 -46
- data/spec/unit/resource/powershell_package_source_spec.rb +219 -219
- data/spec/unit/resource/powershell_package_spec.rb +98 -98
- data/spec/unit/resource/powershell_script_spec.rb +136 -136
- data/spec/unit/resource/python_spec.rb +40 -40
- data/spec/unit/resource/reboot_spec.rb +47 -47
- data/spec/unit/resource/registry_key_spec.rb +215 -215
- data/spec/unit/resource/remote_directory_spec.rb +105 -105
- data/spec/unit/resource/remote_file_spec.rb +220 -220
- data/spec/unit/resource/resource_notification_spec.rb +169 -169
- data/spec/unit/resource/rhsm_errata_level_spec.rb +50 -50
- data/spec/unit/resource/rhsm_errata_spec.rb +39 -39
- data/spec/unit/resource/rhsm_register_spec.rb +204 -204
- data/spec/unit/resource/rhsm_repo_spec.rb +64 -64
- data/spec/unit/resource/rhsm_subscription_spec.rb +98 -98
- data/spec/unit/resource/route_spec.rb +95 -95
- data/spec/unit/resource/rpm_package_spec.rb +62 -62
- data/spec/unit/resource/ruby_block_spec.rb +58 -58
- data/spec/unit/resource/ruby_spec.rb +39 -39
- data/spec/unit/resource/scm_spec.rb +173 -173
- data/spec/unit/resource/script_spec.rb +52 -52
- data/spec/unit/resource/service_spec.rb +206 -206
- data/spec/unit/resource/smartos_package_spec.rb +52 -52
- data/spec/unit/resource/solaris_package_spec.rb +54 -54
- data/spec/unit/resource/ssh_known_hosts_entry_spec.rb +55 -55
- data/spec/unit/resource/subversion_spec.rb +91 -91
- data/spec/unit/resource/sudo_spec.rb +99 -99
- data/spec/unit/resource/swap_file_spec.rb +39 -39
- data/spec/unit/resource/sysctl_spec.rb +54 -54
- data/spec/unit/resource/systemd_unit_spec.rb +130 -130
- data/spec/unit/resource/template_spec.rb +222 -222
- data/spec/unit/resource/timezone.rb +39 -39
- data/spec/unit/resource/user_spec.rb +122 -122
- data/spec/unit/resource/windows_ad_join_spec.rb +51 -51
- data/spec/unit/resource/windows_auto_run_spec.rb +50 -50
- data/spec/unit/resource/windows_certificate.rb +83 -83
- data/spec/unit/resource/windows_env_spec.rb +75 -75
- data/spec/unit/resource/windows_feature.rb +64 -64
- data/spec/unit/resource/windows_feature_dism.rb +72 -72
- data/spec/unit/resource/windows_feature_powershell.rb +72 -72
- data/spec/unit/resource/windows_firewall_rule_spec.rb +401 -401
- data/spec/unit/resource/windows_font_spec.rb +43 -43
- data/spec/unit/resource/windows_package_spec.rb +105 -105
- data/spec/unit/resource/windows_pagefile_spec.rb +49 -49
- data/spec/unit/resource/windows_path_spec.rb +40 -40
- data/spec/unit/resource/windows_printer_port_spec.rb +62 -62
- data/spec/unit/resource/windows_printer_spec.rb +52 -52
- data/spec/unit/resource/windows_service_spec.rb +93 -93
- data/spec/unit/resource/windows_share.rb +39 -39
- data/spec/unit/resource/windows_shortcut_spec.rb +38 -38
- data/spec/unit/resource/windows_task_spec.rb +399 -399
- data/spec/unit/resource/windows_workgroup_spec.rb +74 -74
- data/spec/unit/resource/yum_package_spec.rb +150 -150
- data/spec/unit/resource/yum_repository_spec.rb +152 -152
- data/spec/unit/resource/zypper_package_spec.rb +51 -51
- data/spec/unit/resource/zypper_repository_spec.rb +115 -115
- data/spec/unit/resource_builder_spec.rb +1 -1
- data/spec/unit/resource_collection/resource_list_spec.rb +137 -137
- data/spec/unit/resource_collection/resource_set_spec.rb +244 -244
- data/spec/unit/resource_collection/stepable_iterator_spec.rb +144 -144
- data/spec/unit/resource_collection_spec.rb +408 -408
- data/spec/unit/resource_definition_spec.rb +117 -117
- data/spec/unit/resource_inspector_spec.rb +60 -60
- data/spec/unit/resource_reporter_spec.rb +782 -782
- data/spec/unit/resource_resolver_spec.rb +52 -52
- data/spec/unit/resource_spec.rb +1195 -1195
- data/spec/unit/role_spec.rb +358 -358
- data/spec/unit/run_context/child_run_context_spec.rb +133 -133
- data/spec/unit/run_context/cookbook_compiler_spec.rb +224 -224
- data/spec/unit/run_context_spec.rb +241 -241
- data/spec/unit/run_list/run_list_expansion_spec.rb +144 -144
- data/spec/unit/run_list/run_list_item_spec.rb +117 -117
- data/spec/unit/run_list/versioned_recipe_list_spec.rb +197 -197
- data/spec/unit/run_list_spec.rb +312 -312
- data/spec/unit/run_lock_spec.rb +140 -140
- data/spec/unit/run_status_spec.rb +144 -144
- data/spec/unit/runner_spec.rb +398 -398
- data/spec/unit/scan_access_control_spec.rb +183 -183
- data/spec/unit/search/query_spec.rb +283 -283
- data/spec/unit/server_api_spec.rb +124 -124
- data/spec/unit/server_api_versions_spec.rb +66 -66
- data/spec/unit/shell/model_wrapper_spec.rb +96 -96
- data/spec/unit/shell/shell_ext_spec.rb +153 -153
- data/spec/unit/shell/shell_session_spec.rb +250 -250
- data/spec/unit/shell_spec.rb +162 -162
- data/spec/unit/user_spec.rb +275 -275
- data/spec/unit/user_v1_spec.rb +583 -583
- data/spec/unit/util/backup_spec.rb +141 -141
- data/spec/unit/util/diff_spec.rb +576 -576
- data/spec/unit/util/dsc/configuration_generator_spec.rb +193 -193
- data/spec/unit/util/dsc/lcm_output_parser_spec.rb +248 -248
- data/spec/unit/util/dsc/local_configuration_manager_spec.rb +200 -200
- data/spec/unit/util/dsc/resource_store.rb +78 -78
- data/spec/unit/util/editor_spec.rb +152 -152
- data/spec/unit/util/file_edit_spec.rb +224 -224
- data/spec/unit/util/powershell/cmdlet_spec.rb +106 -106
- data/spec/unit/util/powershell/ps_credential_spec.rb +44 -44
- data/spec/unit/util/selinux_spec.rb +157 -157
- data/spec/unit/util/threaded_job_queue_spec.rb +51 -51
- data/spec/unit/util/windows/logon_session_spec.rb +285 -285
- data/spec/unit/version/platform_spec.rb +60 -60
- data/spec/unit/version_class_spec.rb +171 -171
- data/spec/unit/version_constraint/platform_spec.rb +45 -45
- data/spec/unit/version_constraint_spec.rb +179 -179
- data/spec/unit/version_string_spec.rb +79 -79
- data/spec/unit/win32/error_spec.rb +77 -77
- data/spec/unit/win32/link_spec.rb +73 -73
- data/spec/unit/win32/registry_spec.rb +394 -394
- data/spec/unit/win32/security_spec.rb +134 -134
- data/spec/unit/windows_service_spec.rb +118 -118
- data/tasks/.DS_Store +0 -0
- data/tasks/announce.rb +58 -58
- data/tasks/bin/run_external_test +29 -29
- data/tasks/dependencies.rb +58 -58
- data/tasks/maintainers.rb +211 -211
- data/tasks/rspec.rb +90 -90
- data/tasks/templates/prerelease.md.erb +35 -35
- data/tasks/templates/release.md.erb +34 -34
- metadata +34 -6
@@ -1,111 +1,111 @@
|
|
1
|
-
#
|
2
|
-
# Author:: John Keiser (<jkeiser@chef.io>)
|
3
|
-
# Copyright:: Copyright 2013-2016, Chef Software 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/mixin/shell_out"
|
20
|
-
|
21
|
-
describe "notifying_block" do
|
22
|
-
include IntegrationSupport
|
23
|
-
include Chef::Mixin::ShellOut
|
24
|
-
|
25
|
-
let(:chef_dir) { File.expand_path("../../../../bin", __FILE__) }
|
26
|
-
let(:chef_client) { "ruby '#{chef_dir}/chef-client' --minimal-ohai" }
|
27
|
-
|
28
|
-
when_the_repository "notifying_block test one" do
|
29
|
-
before do
|
30
|
-
directory "cookbooks/x" do
|
31
|
-
file "recipes/default.rb", <<-EOM
|
32
|
-
notifying_block do
|
33
|
-
log "gamma" do
|
34
|
-
action :nothing
|
35
|
-
end
|
36
|
-
log "alpha" do
|
37
|
-
notifies :write, "log[gamma]", :delayed
|
38
|
-
end
|
39
|
-
log "beta" do
|
40
|
-
notifies :write, "log[gamma]", :delayed
|
41
|
-
end
|
42
|
-
end
|
43
|
-
log "delta"
|
44
|
-
EOM
|
45
|
-
end
|
46
|
-
file "config/client.rb", <<-EOM
|
47
|
-
local_mode true
|
48
|
-
cookbook_path "#{path_to('cookbooks')}"
|
49
|
-
log_level :warn
|
50
|
-
EOM
|
51
|
-
end
|
52
|
-
|
53
|
-
# implicitly tests -
|
54
|
-
# 1. notifying block opens up a subcontext
|
55
|
-
# 2. delayed notifications are de-dup'd in the subcontext
|
56
|
-
# 3. delayed notifications (to resources inside the subcontext) are run at the end of the subcontext
|
57
|
-
it "should run alpha, beta, gamma, and delta in that order" do
|
58
|
-
result = shell_out("#{chef_client} -c \"#{path_to('config/client.rb')}\" --no-color -F doc -o 'x::default'", cwd: chef_dir)
|
59
|
-
expect(result.stdout).to match(/\* log\[alpha\] action write\s+\* log\[beta\] action write\s+\* log\[gamma\] action write\s+Converging 1 resources\s+\* log\[delta\] action write/)
|
60
|
-
result.error!
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
when_the_repository "notifying_block test two" do
|
65
|
-
before do
|
66
|
-
directory "cookbooks/x" do
|
67
|
-
file "resources/nb_test.rb", <<-EOM
|
68
|
-
default_action :run
|
69
|
-
provides :nb_test
|
70
|
-
resource_name :nb_test
|
71
|
-
|
72
|
-
action :run do
|
73
|
-
notifying_block do
|
74
|
-
log "foo" do
|
75
|
-
notifies :write, 'log[bar]', :delayed
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
79
|
-
EOM
|
80
|
-
file "recipes/default.rb", <<-EOM
|
81
|
-
log "bar" do
|
82
|
-
action :nothing
|
83
|
-
end
|
84
|
-
log "baz" do
|
85
|
-
action :nothing
|
86
|
-
end
|
87
|
-
|
88
|
-
nb_test "testing" do
|
89
|
-
notifies :write, 'log[baz]', :delayed
|
90
|
-
end
|
91
|
-
|
92
|
-
log "quux"
|
93
|
-
EOM
|
94
|
-
end
|
95
|
-
file "config/client.rb", <<-EOM
|
96
|
-
local_mode true
|
97
|
-
cookbook_path "#{path_to('cookbooks')}"
|
98
|
-
log_level :warn
|
99
|
-
EOM
|
100
|
-
end
|
101
|
-
|
102
|
-
# implicitly tests -
|
103
|
-
# 1. notifying block will correctly update wrapping new_resource updated_by_last_action status
|
104
|
-
# 2. delayed notifications from a subcontext inside a resource will notify resources in their outer run_context
|
105
|
-
it "should run foo, quux, bar, and baz in that order" do
|
106
|
-
result = shell_out("#{chef_client} -c \"#{path_to('config/client.rb')}\" --no-color -F doc -o 'x::default'", cwd: chef_dir)
|
107
|
-
expect(result.stdout).to match(/\* log\[foo\] action write\s+\* log\[quux\] action write\s+\* log\[bar\] action write\s+\* log\[baz\] action write/)
|
108
|
-
result.error!
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|
1
|
+
#
|
2
|
+
# Author:: John Keiser (<jkeiser@chef.io>)
|
3
|
+
# Copyright:: Copyright 2013-2016, Chef Software 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/mixin/shell_out"
|
20
|
+
|
21
|
+
describe "notifying_block" do
|
22
|
+
include IntegrationSupport
|
23
|
+
include Chef::Mixin::ShellOut
|
24
|
+
|
25
|
+
let(:chef_dir) { File.expand_path("../../../../bin", __FILE__) }
|
26
|
+
let(:chef_client) { "ruby '#{chef_dir}/chef-client' --minimal-ohai" }
|
27
|
+
|
28
|
+
when_the_repository "notifying_block test one" do
|
29
|
+
before do
|
30
|
+
directory "cookbooks/x" do
|
31
|
+
file "recipes/default.rb", <<-EOM
|
32
|
+
notifying_block do
|
33
|
+
log "gamma" do
|
34
|
+
action :nothing
|
35
|
+
end
|
36
|
+
log "alpha" do
|
37
|
+
notifies :write, "log[gamma]", :delayed
|
38
|
+
end
|
39
|
+
log "beta" do
|
40
|
+
notifies :write, "log[gamma]", :delayed
|
41
|
+
end
|
42
|
+
end
|
43
|
+
log "delta"
|
44
|
+
EOM
|
45
|
+
end
|
46
|
+
file "config/client.rb", <<-EOM
|
47
|
+
local_mode true
|
48
|
+
cookbook_path "#{path_to('cookbooks')}"
|
49
|
+
log_level :warn
|
50
|
+
EOM
|
51
|
+
end
|
52
|
+
|
53
|
+
# implicitly tests -
|
54
|
+
# 1. notifying block opens up a subcontext
|
55
|
+
# 2. delayed notifications are de-dup'd in the subcontext
|
56
|
+
# 3. delayed notifications (to resources inside the subcontext) are run at the end of the subcontext
|
57
|
+
it "should run alpha, beta, gamma, and delta in that order" do
|
58
|
+
result = shell_out("#{chef_client} -c \"#{path_to('config/client.rb')}\" --no-color -F doc -o 'x::default'", cwd: chef_dir)
|
59
|
+
expect(result.stdout).to match(/\* log\[alpha\] action write\s+\* log\[beta\] action write\s+\* log\[gamma\] action write\s+Converging 1 resources\s+\* log\[delta\] action write/)
|
60
|
+
result.error!
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
when_the_repository "notifying_block test two" do
|
65
|
+
before do
|
66
|
+
directory "cookbooks/x" do
|
67
|
+
file "resources/nb_test.rb", <<-EOM
|
68
|
+
default_action :run
|
69
|
+
provides :nb_test
|
70
|
+
resource_name :nb_test
|
71
|
+
|
72
|
+
action :run do
|
73
|
+
notifying_block do
|
74
|
+
log "foo" do
|
75
|
+
notifies :write, 'log[bar]', :delayed
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
EOM
|
80
|
+
file "recipes/default.rb", <<-EOM
|
81
|
+
log "bar" do
|
82
|
+
action :nothing
|
83
|
+
end
|
84
|
+
log "baz" do
|
85
|
+
action :nothing
|
86
|
+
end
|
87
|
+
|
88
|
+
nb_test "testing" do
|
89
|
+
notifies :write, 'log[baz]', :delayed
|
90
|
+
end
|
91
|
+
|
92
|
+
log "quux"
|
93
|
+
EOM
|
94
|
+
end
|
95
|
+
file "config/client.rb", <<-EOM
|
96
|
+
local_mode true
|
97
|
+
cookbook_path "#{path_to('cookbooks')}"
|
98
|
+
log_level :warn
|
99
|
+
EOM
|
100
|
+
end
|
101
|
+
|
102
|
+
# implicitly tests -
|
103
|
+
# 1. notifying block will correctly update wrapping new_resource updated_by_last_action status
|
104
|
+
# 2. delayed notifications from a subcontext inside a resource will notify resources in their outer run_context
|
105
|
+
it "should run foo, quux, bar, and baz in that order" do
|
106
|
+
result = shell_out("#{chef_client} -c \"#{path_to('config/client.rb')}\" --no-color -F doc -o 'x::default'", cwd: chef_dir)
|
107
|
+
expect(result.stdout).to match(/\* log\[foo\] action write\s+\* log\[quux\] action write\s+\* log\[bar\] action write\s+\* log\[baz\] action write/)
|
108
|
+
result.error!
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
@@ -1,37 +1,37 @@
|
|
1
|
-
require "support/shared/integration/integration_helper"
|
2
|
-
|
3
|
-
describe "Recipe DSL methods" do
|
4
|
-
include IntegrationSupport
|
5
|
-
|
6
|
-
context "With resource class providing 'provider_thingy'" do
|
7
|
-
before :context do
|
8
|
-
class Chef::Resource::ProviderThingy < Chef::Resource
|
9
|
-
resource_name :provider_thingy
|
10
|
-
default_action :create
|
11
|
-
def to_s
|
12
|
-
"provider_thingy resource class"
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
context "And class Chef::Provider::ProviderThingy with no provides" do
|
17
|
-
before :context do
|
18
|
-
class Chef::Provider::ProviderThingy < Chef::Provider
|
19
|
-
def load_current_resource
|
20
|
-
end
|
21
|
-
|
22
|
-
def action_create
|
23
|
-
Chef::Log.warn("hello from #{self.class.name}")
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
it "provider_thingy 'blah' runs the provider and warns" do
|
29
|
-
recipe = converge do
|
30
|
-
provider_thingy("blah") {}
|
31
|
-
end
|
32
|
-
expect(recipe.logged_warnings).to match /hello from Chef::Provider::ProviderThingy/
|
33
|
-
expect(recipe.logged_warnings).to match /you must use 'provides' to provide DSL/i
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
1
|
+
require "support/shared/integration/integration_helper"
|
2
|
+
|
3
|
+
describe "Recipe DSL methods" do
|
4
|
+
include IntegrationSupport
|
5
|
+
|
6
|
+
context "With resource class providing 'provider_thingy'" do
|
7
|
+
before :context do
|
8
|
+
class Chef::Resource::ProviderThingy < Chef::Resource
|
9
|
+
resource_name :provider_thingy
|
10
|
+
default_action :create
|
11
|
+
def to_s
|
12
|
+
"provider_thingy resource class"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
context "And class Chef::Provider::ProviderThingy with no provides" do
|
17
|
+
before :context do
|
18
|
+
class Chef::Provider::ProviderThingy < Chef::Provider
|
19
|
+
def load_current_resource
|
20
|
+
end
|
21
|
+
|
22
|
+
def action_create
|
23
|
+
Chef::Log.warn("hello from #{self.class.name}")
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
it "provider_thingy 'blah' runs the provider and warns" do
|
29
|
+
recipe = converge do
|
30
|
+
provider_thingy("blah") {}
|
31
|
+
end
|
32
|
+
expect(recipe.logged_warnings).to match /hello from Chef::Provider::ProviderThingy/
|
33
|
+
expect(recipe.logged_warnings).to match /you must use 'provides' to provide DSL/i
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -1,1373 +1,1373 @@
|
|
1
|
-
require "support/shared/integration/integration_helper"
|
2
|
-
|
3
|
-
describe "Recipe DSL methods" do
|
4
|
-
include IntegrationSupport
|
5
|
-
|
6
|
-
module Namer
|
7
|
-
extend self
|
8
|
-
attr_accessor :current_index
|
9
|
-
end
|
10
|
-
|
11
|
-
before(:all) { Namer.current_index = 1 }
|
12
|
-
before { Namer.current_index += 1 }
|
13
|
-
|
14
|
-
context "with resource 'base_thingy' declared as BaseThingy" do
|
15
|
-
before(:each) do
|
16
|
-
|
17
|
-
class BaseThingy < Chef::Resource
|
18
|
-
resource_name "base_thingy"
|
19
|
-
default_action :create
|
20
|
-
|
21
|
-
class<<self
|
22
|
-
attr_accessor :created_name
|
23
|
-
attr_accessor :created_resource
|
24
|
-
attr_accessor :created_provider
|
25
|
-
end
|
26
|
-
|
27
|
-
def provider
|
28
|
-
Provider
|
29
|
-
end
|
30
|
-
class Provider < Chef::Provider
|
31
|
-
def load_current_resource
|
32
|
-
end
|
33
|
-
|
34
|
-
def action_create
|
35
|
-
BaseThingy.created_name = new_resource.name
|
36
|
-
BaseThingy.created_resource = new_resource.class
|
37
|
-
BaseThingy.created_provider = self.class
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
# Modules to put stuff in
|
43
|
-
module RecipeDSLSpecNamespace; end
|
44
|
-
module RecipeDSLSpecNamespace::Bar; end
|
45
|
-
|
46
|
-
end
|
47
|
-
|
48
|
-
before :each do
|
49
|
-
BaseThingy.created_resource = nil
|
50
|
-
BaseThingy.created_provider = nil
|
51
|
-
end
|
52
|
-
|
53
|
-
it "creates base_thingy when you call base_thingy in a recipe" do
|
54
|
-
recipe = converge do
|
55
|
-
base_thingy("blah") {}
|
56
|
-
end
|
57
|
-
expect(recipe.logged_warnings).to eq ""
|
58
|
-
expect(BaseThingy.created_name).to eq "blah"
|
59
|
-
expect(BaseThingy.created_resource).to eq BaseThingy
|
60
|
-
end
|
61
|
-
|
62
|
-
it "errors when you call base_thingy do ... end in a recipe" do
|
63
|
-
expect_converge do
|
64
|
-
base_thingy { ; }
|
65
|
-
end.to raise_error(Chef::Exceptions::ValidationFailed)
|
66
|
-
end
|
67
|
-
|
68
|
-
context "nameless resources" do
|
69
|
-
before(:each) do
|
70
|
-
class NamelessThingy < BaseThingy
|
71
|
-
resource_name :nameless_thingy
|
72
|
-
provides :nameless_thingy
|
73
|
-
|
74
|
-
property :name, String, default: ""
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
it "does not error when not given a name" do
|
79
|
-
recipe = converge do
|
80
|
-
nameless_thingy {}
|
81
|
-
end
|
82
|
-
expect(recipe.logged_warnings).to eq ""
|
83
|
-
expect(BaseThingy.created_name).to eq ""
|
84
|
-
expect(BaseThingy.created_resource).to eq NamelessThingy
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
context "Deprecated automatic resource DSL" do
|
89
|
-
before do
|
90
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
91
|
-
end
|
92
|
-
|
93
|
-
context "with a resource named RecipeDSLSpecNamespace::Bar::BarThingy" do
|
94
|
-
before(:each) do
|
95
|
-
|
96
|
-
class RecipeDSLSpecNamespace::Bar::BarThingy < BaseThingy
|
97
|
-
end
|
98
|
-
|
99
|
-
end
|
100
|
-
|
101
|
-
it "bar_thingy does not work" do
|
102
|
-
expect_converge do
|
103
|
-
bar_thingy("blah") {}
|
104
|
-
end.to raise_error(NoMethodError)
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
context "with a resource named Chef::Resource::NoNameThingy with resource_name nil" do
|
109
|
-
before(:each) do
|
110
|
-
|
111
|
-
class Chef::Resource::NoNameThingy < BaseThingy
|
112
|
-
resource_name nil
|
113
|
-
end
|
114
|
-
|
115
|
-
end
|
116
|
-
|
117
|
-
it "no_name_thingy does not work" do
|
118
|
-
expect_converge do
|
119
|
-
no_name_thingy("blah") {}
|
120
|
-
end.to raise_error(NoMethodError)
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
context "with a resource named AnotherNoNameThingy with resource_name :another_thingy_name" do
|
125
|
-
before(:each) do
|
126
|
-
|
127
|
-
class AnotherNoNameThingy < BaseThingy
|
128
|
-
resource_name :another_thingy_name
|
129
|
-
end
|
130
|
-
|
131
|
-
end
|
132
|
-
|
133
|
-
it "another_no_name_thingy does not work" do
|
134
|
-
expect_converge do
|
135
|
-
another_no_name_thingy("blah") {}
|
136
|
-
end.to raise_error(NoMethodError)
|
137
|
-
end
|
138
|
-
|
139
|
-
it "another_thingy_name works" do
|
140
|
-
recipe = converge do
|
141
|
-
another_thingy_name("blah") {}
|
142
|
-
end
|
143
|
-
expect(recipe.logged_warnings).to eq ""
|
144
|
-
expect(BaseThingy.created_resource).to eq(AnotherNoNameThingy)
|
145
|
-
end
|
146
|
-
end
|
147
|
-
|
148
|
-
context "with a resource named AnotherNoNameThingy2 with resource_name :another_thingy_name2; resource_name :another_thingy_name3" do
|
149
|
-
before(:each) do
|
150
|
-
|
151
|
-
class AnotherNoNameThingy2 < BaseThingy
|
152
|
-
resource_name :another_thingy_name2
|
153
|
-
resource_name :another_thingy_name3
|
154
|
-
end
|
155
|
-
|
156
|
-
end
|
157
|
-
|
158
|
-
it "another_no_name_thingy does not work" do
|
159
|
-
expect_converge do
|
160
|
-
another_no_name_thingy2("blah") {}
|
161
|
-
end.to raise_error(NoMethodError)
|
162
|
-
end
|
163
|
-
|
164
|
-
it "another_thingy_name2 does not work" do
|
165
|
-
expect_converge do
|
166
|
-
another_thingy_name2("blah") {}
|
167
|
-
end.to raise_error(NoMethodError)
|
168
|
-
end
|
169
|
-
|
170
|
-
it "yet_another_thingy_name3 works" do
|
171
|
-
recipe = converge do
|
172
|
-
another_thingy_name3("blah") {}
|
173
|
-
end
|
174
|
-
expect(recipe.logged_warnings).to eq ""
|
175
|
-
expect(BaseThingy.created_resource).to eq(AnotherNoNameThingy2)
|
176
|
-
end
|
177
|
-
end
|
178
|
-
|
179
|
-
context "provides overriding resource_name" do
|
180
|
-
context "with a resource named AnotherNoNameThingy3 with provides :another_no_name_thingy3, os: 'blarghle'" do
|
181
|
-
before(:each) do
|
182
|
-
|
183
|
-
class AnotherNoNameThingy3 < BaseThingy
|
184
|
-
resource_name :another_no_name_thingy_3
|
185
|
-
provides :another_no_name_thingy3, os: "blarghle"
|
186
|
-
end
|
187
|
-
|
188
|
-
end
|
189
|
-
|
190
|
-
it "and os = linux, another_no_name_thingy3 does not work" do
|
191
|
-
expect_converge do
|
192
|
-
# TODO this is an ugly way to test, make Cheffish expose node attrs
|
193
|
-
run_context.node.automatic[:os] = "linux"
|
194
|
-
another_no_name_thingy3("blah") {}
|
195
|
-
end.to raise_error(Chef::Exceptions::NoSuchResourceType)
|
196
|
-
end
|
197
|
-
|
198
|
-
it "and os = blarghle, another_no_name_thingy3 works" do
|
199
|
-
recipe = converge do
|
200
|
-
# TODO this is an ugly way to test, make Cheffish expose node attrs
|
201
|
-
run_context.node.automatic[:os] = "blarghle"
|
202
|
-
another_no_name_thingy3("blah") {}
|
203
|
-
end
|
204
|
-
expect(recipe.logged_warnings).to eq ""
|
205
|
-
expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy3)
|
206
|
-
end
|
207
|
-
end
|
208
|
-
|
209
|
-
context "with a resource named AnotherNoNameThingy4 with two provides" do
|
210
|
-
before(:each) do
|
211
|
-
|
212
|
-
class AnotherNoNameThingy4 < BaseThingy
|
213
|
-
resource_name :another_no_name_thingy_4
|
214
|
-
provides :another_no_name_thingy4, os: "blarghle"
|
215
|
-
provides :another_no_name_thingy4, platform_family: "foo"
|
216
|
-
end
|
217
|
-
|
218
|
-
end
|
219
|
-
|
220
|
-
it "and os = linux, another_no_name_thingy4 does not work" do
|
221
|
-
expect_converge do
|
222
|
-
# TODO this is an ugly way to test, make Cheffish expose node attrs
|
223
|
-
run_context.node.automatic[:os] = "linux"
|
224
|
-
another_no_name_thingy4("blah") {}
|
225
|
-
end.to raise_error(Chef::Exceptions::NoSuchResourceType)
|
226
|
-
end
|
227
|
-
|
228
|
-
it "and os = blarghle, another_no_name_thingy4 works" do
|
229
|
-
recipe = converge do
|
230
|
-
# TODO this is an ugly way to test, make Cheffish expose node attrs
|
231
|
-
run_context.node.automatic[:os] = "blarghle"
|
232
|
-
another_no_name_thingy4("blah") {}
|
233
|
-
end
|
234
|
-
expect(recipe.logged_warnings).to eq ""
|
235
|
-
expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy4)
|
236
|
-
end
|
237
|
-
|
238
|
-
it "and platform_family = foo, another_no_name_thingy4 works" do
|
239
|
-
recipe = converge do
|
240
|
-
# TODO this is an ugly way to test, make Cheffish expose node attrs
|
241
|
-
run_context.node.automatic[:platform_family] = "foo"
|
242
|
-
another_no_name_thingy4("blah") {}
|
243
|
-
end
|
244
|
-
expect(recipe.logged_warnings).to eq ""
|
245
|
-
expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy4)
|
246
|
-
end
|
247
|
-
end
|
248
|
-
|
249
|
-
context "with a resource named AnotherNoNameThingy5, a different resource_name, and a provides with the original resource_name" do
|
250
|
-
before(:each) do
|
251
|
-
|
252
|
-
class AnotherNoNameThingy5 < BaseThingy
|
253
|
-
resource_name :another_thingy_name_for_another_no_name_thingy5
|
254
|
-
provides :another_no_name_thingy5, os: "blarghle"
|
255
|
-
end
|
256
|
-
|
257
|
-
end
|
258
|
-
|
259
|
-
it "and os = linux, another_no_name_thingy5 does not work" do
|
260
|
-
expect_converge do
|
261
|
-
# this is an ugly way to test, make Cheffish expose node attrs
|
262
|
-
run_context.node.automatic[:os] = "linux"
|
263
|
-
another_no_name_thingy5("blah") {}
|
264
|
-
end.to raise_error(Chef::Exceptions::NoSuchResourceType)
|
265
|
-
end
|
266
|
-
|
267
|
-
it "and os = blarghle, another_no_name_thingy5 works" do
|
268
|
-
recipe = converge do
|
269
|
-
# this is an ugly way to test, make Cheffish expose node attrs
|
270
|
-
run_context.node.automatic[:os] = "blarghle"
|
271
|
-
another_no_name_thingy5("blah") {}
|
272
|
-
end
|
273
|
-
expect(recipe.logged_warnings).to eq ""
|
274
|
-
expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy5)
|
275
|
-
end
|
276
|
-
|
277
|
-
it "the new resource name can be used in a recipe" do
|
278
|
-
recipe = converge do
|
279
|
-
another_thingy_name_for_another_no_name_thingy5("blah") {}
|
280
|
-
end
|
281
|
-
expect(recipe.logged_warnings).to eq ""
|
282
|
-
expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy5)
|
283
|
-
end
|
284
|
-
end
|
285
|
-
|
286
|
-
context "with a resource named AnotherNoNameThingy6, a provides with the original resource name, and a different resource_name" do
|
287
|
-
before(:each) do
|
288
|
-
|
289
|
-
class AnotherNoNameThingy6 < BaseThingy
|
290
|
-
provides :another_no_name_thingy6, os: "blarghle"
|
291
|
-
resource_name :another_thingy_name_for_another_no_name_thingy6
|
292
|
-
end
|
293
|
-
|
294
|
-
end
|
295
|
-
|
296
|
-
it "and os = linux, another_no_name_thingy6 does not work" do
|
297
|
-
expect_converge do
|
298
|
-
# this is an ugly way to test, make Cheffish expose node attrs
|
299
|
-
run_context.node.automatic[:os] = "linux"
|
300
|
-
another_no_name_thingy6("blah") {}
|
301
|
-
end.to raise_error(Chef::Exceptions::NoSuchResourceType)
|
302
|
-
end
|
303
|
-
|
304
|
-
it "and os = blarghle, another_no_name_thingy6 works" do
|
305
|
-
recipe = converge do
|
306
|
-
# this is an ugly way to test, make Cheffish expose node attrs
|
307
|
-
run_context.node.automatic[:os] = "blarghle"
|
308
|
-
another_no_name_thingy6("blah") {}
|
309
|
-
end
|
310
|
-
expect(recipe.logged_warnings).to eq ""
|
311
|
-
expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy6)
|
312
|
-
end
|
313
|
-
|
314
|
-
it "the new resource name can be used in a recipe" do
|
315
|
-
recipe = converge do
|
316
|
-
another_thingy_name_for_another_no_name_thingy6("blah") {}
|
317
|
-
end
|
318
|
-
expect(recipe.logged_warnings).to eq ""
|
319
|
-
expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy6)
|
320
|
-
end
|
321
|
-
end
|
322
|
-
|
323
|
-
context "with a resource named AnotherNoNameThingy7, a new resource_name, and provides with that new resource name" do
|
324
|
-
before(:each) do
|
325
|
-
|
326
|
-
class AnotherNoNameThingy7 < BaseThingy
|
327
|
-
resource_name :another_thingy_name_for_another_no_name_thingy7
|
328
|
-
provides :another_thingy_name_for_another_no_name_thingy7, os: "blarghle"
|
329
|
-
end
|
330
|
-
|
331
|
-
end
|
332
|
-
|
333
|
-
it "and os = linux, another_thingy_name_for_another_no_name_thingy7 does not work" do
|
334
|
-
expect_converge do
|
335
|
-
# this is an ugly way to test, make Cheffish expose node attrs
|
336
|
-
run_context.node.automatic[:os] = "linux"
|
337
|
-
another_thingy_name_for_another_no_name_thingy7("blah") {}
|
338
|
-
end.to raise_error(Chef::Exceptions::NoSuchResourceType)
|
339
|
-
end
|
340
|
-
|
341
|
-
it "and os = blarghle, another_thingy_name_for_another_no_name_thingy7 works" do
|
342
|
-
recipe = converge do
|
343
|
-
# this is an ugly way to test, make Cheffish expose node attrs
|
344
|
-
run_context.node.automatic[:os] = "blarghle"
|
345
|
-
another_thingy_name_for_another_no_name_thingy7("blah") {}
|
346
|
-
end
|
347
|
-
expect(recipe.logged_warnings).to eq ""
|
348
|
-
expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy7)
|
349
|
-
end
|
350
|
-
|
351
|
-
it "the old resource name does not work" do
|
352
|
-
expect_converge do
|
353
|
-
# this is an ugly way to test, make Cheffish expose node attrs
|
354
|
-
run_context.node.automatic[:os] = "linux"
|
355
|
-
another_no_name_thingy_7("blah") {}
|
356
|
-
end.to raise_error(NoMethodError)
|
357
|
-
end
|
358
|
-
end
|
359
|
-
|
360
|
-
# opposite order from the previous test (provides, then resource_name)
|
361
|
-
context "with a resource named AnotherNoNameThingy8, a provides with a new resource name, and resource_name with that new resource name" do
|
362
|
-
before(:each) do
|
363
|
-
|
364
|
-
class AnotherNoNameThingy8 < BaseThingy
|
365
|
-
provides :another_thingy_name_for_another_no_name_thingy8, os: "blarghle"
|
366
|
-
resource_name :another_thingy_name_for_another_no_name_thingy8
|
367
|
-
end
|
368
|
-
|
369
|
-
end
|
370
|
-
|
371
|
-
it "and os = linux, another_thingy_name_for_another_no_name_thingy8 does not work" do
|
372
|
-
expect_converge do
|
373
|
-
# this is an ugly way to test, make Cheffish expose node attrs
|
374
|
-
run_context.node.automatic[:os] = "linux"
|
375
|
-
another_thingy_name_for_another_no_name_thingy8("blah") {}
|
376
|
-
end.to raise_error(Chef::Exceptions::NoSuchResourceType)
|
377
|
-
end
|
378
|
-
|
379
|
-
it "and os = blarghle, another_thingy_name_for_another_no_name_thingy8 works" do
|
380
|
-
recipe = converge do
|
381
|
-
# this is an ugly way to test, make Cheffish expose node attrs
|
382
|
-
run_context.node.automatic[:os] = "blarghle"
|
383
|
-
another_thingy_name_for_another_no_name_thingy8("blah") {}
|
384
|
-
end
|
385
|
-
expect(recipe.logged_warnings).to eq ""
|
386
|
-
expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy8)
|
387
|
-
end
|
388
|
-
|
389
|
-
it "the old resource name does not work" do
|
390
|
-
expect_converge do
|
391
|
-
# this is an ugly way to test, make Cheffish expose node attrs
|
392
|
-
run_context.node.automatic[:os] = "linux"
|
393
|
-
another_thingy_name8("blah") {}
|
394
|
-
end.to raise_error(NoMethodError)
|
395
|
-
end
|
396
|
-
end
|
397
|
-
end
|
398
|
-
end
|
399
|
-
|
400
|
-
context "provides" do
|
401
|
-
context "when MySupplier provides :hemlock" do
|
402
|
-
before(:each) do
|
403
|
-
|
404
|
-
class RecipeDSLSpecNamespace::MySupplier < BaseThingy
|
405
|
-
resource_name :hemlock
|
406
|
-
end
|
407
|
-
|
408
|
-
end
|
409
|
-
|
410
|
-
it "my_supplier does not work in a recipe" do
|
411
|
-
expect_converge do
|
412
|
-
my_supplier("blah") {}
|
413
|
-
end.to raise_error(NoMethodError)
|
414
|
-
end
|
415
|
-
|
416
|
-
it "hemlock works in a recipe" do
|
417
|
-
expect_recipe do
|
418
|
-
hemlock("blah") {}
|
419
|
-
end.to emit_no_warnings_or_errors
|
420
|
-
expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::MySupplier
|
421
|
-
end
|
422
|
-
end
|
423
|
-
|
424
|
-
context "when Thingy3 has resource_name :thingy3" do
|
425
|
-
before(:each) do
|
426
|
-
|
427
|
-
class RecipeDSLSpecNamespace::Thingy3 < BaseThingy
|
428
|
-
resource_name :thingy3
|
429
|
-
end
|
430
|
-
|
431
|
-
end
|
432
|
-
|
433
|
-
it "thingy3 works in a recipe" do
|
434
|
-
expect_recipe do
|
435
|
-
thingy3("blah") {}
|
436
|
-
end.to emit_no_warnings_or_errors
|
437
|
-
expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy3
|
438
|
-
end
|
439
|
-
|
440
|
-
context "and Thingy4 has resource_name :thingy3" do
|
441
|
-
before(:each) do
|
442
|
-
|
443
|
-
class RecipeDSLSpecNamespace::Thingy4 < BaseThingy
|
444
|
-
resource_name :thingy3
|
445
|
-
end
|
446
|
-
|
447
|
-
end
|
448
|
-
|
449
|
-
it "thingy3 works in a recipe and yields Thingy4 (the last one)" do
|
450
|
-
recipe = converge do
|
451
|
-
thingy3("blah") {}
|
452
|
-
end
|
453
|
-
expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy4
|
454
|
-
end
|
455
|
-
|
456
|
-
it "thingy4 does not work in a recipe" do
|
457
|
-
expect_converge do
|
458
|
-
thingy4("blah") {}
|
459
|
-
end.to raise_error(NoMethodError)
|
460
|
-
end
|
461
|
-
|
462
|
-
it "resource_matching_short_name returns Thingy4" do
|
463
|
-
expect(Chef::Resource.resource_matching_short_name(:thingy3)).to eq RecipeDSLSpecNamespace::Thingy4
|
464
|
-
end
|
465
|
-
end
|
466
|
-
end
|
467
|
-
|
468
|
-
context "when Thingy5 has resource_name :thingy5 and provides :thingy5reverse, :thingy5_2 and :thingy5_2reverse" do
|
469
|
-
before(:each) do
|
470
|
-
|
471
|
-
class RecipeDSLSpecNamespace::Thingy5 < BaseThingy
|
472
|
-
resource_name :thingy5
|
473
|
-
provides :thingy5reverse
|
474
|
-
provides :thingy5_2
|
475
|
-
provides :thingy5_2reverse
|
476
|
-
end
|
477
|
-
|
478
|
-
end
|
479
|
-
|
480
|
-
it "thingy5 works in a recipe" do
|
481
|
-
expect_recipe do
|
482
|
-
thingy5("blah") {}
|
483
|
-
end.to emit_no_warnings_or_errors
|
484
|
-
expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy5
|
485
|
-
end
|
486
|
-
|
487
|
-
context "and Thingy6 provides :thingy5" do
|
488
|
-
before(:each) do
|
489
|
-
|
490
|
-
class RecipeDSLSpecNamespace::Thingy6 < BaseThingy
|
491
|
-
resource_name :thingy6
|
492
|
-
provides :thingy5
|
493
|
-
end
|
494
|
-
|
495
|
-
end
|
496
|
-
|
497
|
-
it "thingy6 works in a recipe and yields Thingy6" do
|
498
|
-
recipe = converge do
|
499
|
-
thingy6("blah") {}
|
500
|
-
end
|
501
|
-
expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy6
|
502
|
-
end
|
503
|
-
|
504
|
-
it "thingy5 works in a recipe and yields Foo::Thingy6 (the last one)" do
|
505
|
-
recipe = converge do
|
506
|
-
thingy5("blah") {}
|
507
|
-
end
|
508
|
-
expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy6
|
509
|
-
end
|
510
|
-
|
511
|
-
it "resource_matching_short_name returns Thingy6" do
|
512
|
-
expect(Chef::Resource.resource_matching_short_name(:thingy5)).to eq RecipeDSLSpecNamespace::Thingy5
|
513
|
-
end
|
514
|
-
|
515
|
-
context "and AThingy5 provides :thingy5reverse" do
|
516
|
-
before(:each) do
|
517
|
-
|
518
|
-
class RecipeDSLSpecNamespace::AThingy5 < BaseThingy
|
519
|
-
resource_name :thingy5reverse
|
520
|
-
end
|
521
|
-
|
522
|
-
end
|
523
|
-
|
524
|
-
it "thingy5reverse works in a recipe and yields AThingy5 (the alphabetical one)" do
|
525
|
-
recipe = converge do
|
526
|
-
thingy5reverse("blah") {}
|
527
|
-
end
|
528
|
-
expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::AThingy5
|
529
|
-
end
|
530
|
-
end
|
531
|
-
|
532
|
-
context "and ZRecipeDSLSpecNamespace::Thingy5 provides :thingy5_2" do
|
533
|
-
before(:each) do
|
534
|
-
|
535
|
-
module ZRecipeDSLSpecNamespace
|
536
|
-
class Thingy5 < BaseThingy
|
537
|
-
resource_name :thingy5_2
|
538
|
-
end
|
539
|
-
end
|
540
|
-
|
541
|
-
end
|
542
|
-
|
543
|
-
it "thingy5_2 works in a recipe and yields the ZRecipeDSLSpaceNamespace one (the last one)" do
|
544
|
-
recipe = converge do
|
545
|
-
thingy5_2("blah") {}
|
546
|
-
end
|
547
|
-
expect(BaseThingy.created_resource).to eq ZRecipeDSLSpecNamespace::Thingy5
|
548
|
-
end
|
549
|
-
end
|
550
|
-
|
551
|
-
context "and ARecipeDSLSpecNamespace::Thingy5 provides :thingy5_2" do
|
552
|
-
before(:each) do
|
553
|
-
|
554
|
-
module ARecipeDSLSpecNamespace
|
555
|
-
class Thingy5 < BaseThingy
|
556
|
-
resource_name :thingy5_2reverse
|
557
|
-
end
|
558
|
-
end
|
559
|
-
|
560
|
-
end
|
561
|
-
|
562
|
-
it "thingy5_2reverse works in a recipe and yields the ARecipeDSLSpaceNamespace one (the alphabetical one)" do
|
563
|
-
recipe = converge do
|
564
|
-
thingy5_2reverse("blah") {}
|
565
|
-
end
|
566
|
-
expect(BaseThingy.created_resource).to eq ARecipeDSLSpecNamespace::Thingy5
|
567
|
-
end
|
568
|
-
end
|
569
|
-
end
|
570
|
-
|
571
|
-
context "when Thingy3 has resource_name :thingy3" do
|
572
|
-
before(:each) do
|
573
|
-
|
574
|
-
class RecipeDSLSpecNamespace::Thingy3 < BaseThingy
|
575
|
-
resource_name :thingy3
|
576
|
-
end
|
577
|
-
|
578
|
-
end
|
579
|
-
|
580
|
-
it "thingy3 works in a recipe" do
|
581
|
-
expect_recipe do
|
582
|
-
thingy3("blah") {}
|
583
|
-
end.to emit_no_warnings_or_errors
|
584
|
-
expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy3
|
585
|
-
end
|
586
|
-
|
587
|
-
context "and Thingy4 has resource_name :thingy3" do
|
588
|
-
before(:each) do
|
589
|
-
|
590
|
-
class RecipeDSLSpecNamespace::Thingy4 < BaseThingy
|
591
|
-
resource_name :thingy3
|
592
|
-
end
|
593
|
-
|
594
|
-
end
|
595
|
-
|
596
|
-
it "thingy3 works in a recipe and yields Thingy4 (the last one)" do
|
597
|
-
recipe = converge do
|
598
|
-
thingy3("blah") {}
|
599
|
-
end
|
600
|
-
expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy4
|
601
|
-
end
|
602
|
-
|
603
|
-
it "thingy4 does not work in a recipe" do
|
604
|
-
expect_converge do
|
605
|
-
thingy4("blah") {}
|
606
|
-
end.to raise_error(NoMethodError)
|
607
|
-
end
|
608
|
-
|
609
|
-
it "resource_matching_short_name returns Thingy4" do
|
610
|
-
expect(Chef::Resource.resource_matching_short_name(:thingy3)).to eq RecipeDSLSpecNamespace::Thingy4
|
611
|
-
end
|
612
|
-
end
|
613
|
-
|
614
|
-
context "and Thingy4 has resource_name :thingy3" do
|
615
|
-
before(:each) do
|
616
|
-
|
617
|
-
class RecipeDSLSpecNamespace::Thingy4 < BaseThingy
|
618
|
-
resource_name :thingy3
|
619
|
-
end
|
620
|
-
|
621
|
-
end
|
622
|
-
|
623
|
-
it "thingy3 works in a recipe and yields Thingy4 (the last one)" do
|
624
|
-
recipe = converge do
|
625
|
-
thingy3("blah") {}
|
626
|
-
end
|
627
|
-
expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy4
|
628
|
-
end
|
629
|
-
|
630
|
-
it "thingy4 does not work in a recipe" do
|
631
|
-
expect_converge do
|
632
|
-
thingy4("blah") {}
|
633
|
-
end.to raise_error(NoMethodError)
|
634
|
-
end
|
635
|
-
|
636
|
-
it "resource_matching_short_name returns Thingy4" do
|
637
|
-
expect(Chef::Resource.resource_matching_short_name(:thingy3)).to eq RecipeDSLSpecNamespace::Thingy4
|
638
|
-
end
|
639
|
-
end
|
640
|
-
end
|
641
|
-
|
642
|
-
end
|
643
|
-
|
644
|
-
context "when Thingy7 provides :thingy8" do
|
645
|
-
before(:each) do
|
646
|
-
|
647
|
-
class RecipeDSLSpecNamespace::Thingy7 < BaseThingy
|
648
|
-
resource_name :thingy7
|
649
|
-
provides :thingy8
|
650
|
-
end
|
651
|
-
|
652
|
-
end
|
653
|
-
|
654
|
-
context "and Thingy8 has resource_name :thingy8" do
|
655
|
-
before(:each) do
|
656
|
-
|
657
|
-
class RecipeDSLSpecNamespace::Thingy8 < BaseThingy
|
658
|
-
resource_name :thingy8
|
659
|
-
end
|
660
|
-
|
661
|
-
end
|
662
|
-
|
663
|
-
it "thingy7 works in a recipe and yields Thingy7" do
|
664
|
-
recipe = converge do
|
665
|
-
thingy7("blah") {}
|
666
|
-
end
|
667
|
-
expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy7
|
668
|
-
end
|
669
|
-
|
670
|
-
it "thingy8 works in a recipe and yields Thingy7 (last)" do
|
671
|
-
recipe = converge do
|
672
|
-
thingy8("blah") {}
|
673
|
-
end
|
674
|
-
expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy8
|
675
|
-
end
|
676
|
-
|
677
|
-
it "resource_matching_short_name returns Thingy8" do
|
678
|
-
expect(Chef::Resource.resource_matching_short_name(:thingy8)).to eq RecipeDSLSpecNamespace::Thingy8
|
679
|
-
end
|
680
|
-
end
|
681
|
-
end
|
682
|
-
|
683
|
-
context "when Thingy12 provides :thingy12, :twizzle and :twizzle2" do
|
684
|
-
before(:each) do
|
685
|
-
|
686
|
-
class RecipeDSLSpecNamespace::Thingy12 < BaseThingy
|
687
|
-
resource_name :thingy12
|
688
|
-
provides :twizzle
|
689
|
-
provides :twizzle2
|
690
|
-
end
|
691
|
-
|
692
|
-
end
|
693
|
-
|
694
|
-
it "thingy12 works in a recipe and yields Thingy12" do
|
695
|
-
expect_recipe do
|
696
|
-
thingy12("blah") {}
|
697
|
-
end.to emit_no_warnings_or_errors
|
698
|
-
expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy12
|
699
|
-
end
|
700
|
-
|
701
|
-
it "twizzle works in a recipe and yields Thingy12" do
|
702
|
-
expect_recipe do
|
703
|
-
twizzle("blah") {}
|
704
|
-
end.to emit_no_warnings_or_errors
|
705
|
-
expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy12
|
706
|
-
end
|
707
|
-
|
708
|
-
it "twizzle2 works in a recipe and yields Thingy12" do
|
709
|
-
expect_recipe do
|
710
|
-
twizzle2("blah") {}
|
711
|
-
end.to emit_no_warnings_or_errors
|
712
|
-
expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy12
|
713
|
-
end
|
714
|
-
end
|
715
|
-
|
716
|
-
context "with platform-specific resources 'my_super_thingy_foo' and 'my_super_thingy_bar'" do
|
717
|
-
before(:each) do
|
718
|
-
class MySuperThingyFoo < BaseThingy
|
719
|
-
resource_name :my_super_thingy_foo
|
720
|
-
provides :my_super_thingy, platform: "foo"
|
721
|
-
end
|
722
|
-
|
723
|
-
class MySuperThingyBar < BaseThingy
|
724
|
-
resource_name :my_super_thingy_bar
|
725
|
-
provides :my_super_thingy, platform: "bar"
|
726
|
-
end
|
727
|
-
end
|
728
|
-
|
729
|
-
it "A run with platform 'foo' uses MySuperThingyFoo" do
|
730
|
-
r = Cheffish::ChefRun.new(chef_config)
|
731
|
-
r.client.run_context.node.automatic["platform"] = "foo"
|
732
|
-
r.compile_recipe do
|
733
|
-
my_super_thingy("blah") {}
|
734
|
-
end
|
735
|
-
r.converge
|
736
|
-
expect(r).to emit_no_warnings_or_errors
|
737
|
-
expect(BaseThingy.created_resource).to eq MySuperThingyFoo
|
738
|
-
end
|
739
|
-
|
740
|
-
it "A run with platform 'bar' uses MySuperThingyBar" do
|
741
|
-
r = Cheffish::ChefRun.new(chef_config)
|
742
|
-
r.client.run_context.node.automatic["platform"] = "bar"
|
743
|
-
r.compile_recipe do
|
744
|
-
my_super_thingy("blah") {}
|
745
|
-
end
|
746
|
-
r.converge
|
747
|
-
expect(r).to emit_no_warnings_or_errors
|
748
|
-
expect(BaseThingy.created_resource).to eq MySuperThingyBar
|
749
|
-
end
|
750
|
-
|
751
|
-
it "A run with platform 'x' reports that my_super_thingy is not supported" do
|
752
|
-
r = Cheffish::ChefRun.new(chef_config)
|
753
|
-
r.client.run_context.node.automatic["platform"] = "x"
|
754
|
-
expect do
|
755
|
-
r.compile_recipe do
|
756
|
-
my_super_thingy("blah") {}
|
757
|
-
end
|
758
|
-
end.to raise_error(Chef::Exceptions::NoSuchResourceType)
|
759
|
-
end
|
760
|
-
end
|
761
|
-
|
762
|
-
context "when Thingy10 provides :thingy10" do
|
763
|
-
before(:each) do
|
764
|
-
class RecipeDSLSpecNamespace::Thingy10 < BaseThingy
|
765
|
-
resource_name :thingy10
|
766
|
-
end
|
767
|
-
end
|
768
|
-
|
769
|
-
it "declaring a resource providing the same :thingy10 with override: true does not produce a warning" do
|
770
|
-
expect(Chef::Log).not_to receive(:warn)
|
771
|
-
class RecipeDSLSpecNamespace::Thingy10AlternateProvider < BaseThingy
|
772
|
-
provides :thingy10, override: true
|
773
|
-
end
|
774
|
-
end
|
775
|
-
end
|
776
|
-
|
777
|
-
context "when Thingy11 provides :thingy11" do
|
778
|
-
before(:each) do
|
779
|
-
class RecipeDSLSpecNamespace::Thingy11 < BaseThingy
|
780
|
-
resource_name :thingy10
|
781
|
-
end
|
782
|
-
end
|
783
|
-
|
784
|
-
it "declaring a resource providing the same :thingy11 with os: 'linux' does not produce a warning" do
|
785
|
-
expect(Chef::Log).not_to receive(:warn)
|
786
|
-
class RecipeDSLSpecNamespace::Thingy11AlternateProvider < BaseThingy
|
787
|
-
provides :thingy11, os: "linux"
|
788
|
-
end
|
789
|
-
end
|
790
|
-
end
|
791
|
-
end
|
792
|
-
|
793
|
-
context "with a resource named 'B' with resource name :two_classes_one_dsl" do
|
794
|
-
let(:two_classes_one_dsl) { :"two_classes_one_dsl#{Namer.current_index}" }
|
795
|
-
let(:resource_class) do
|
796
|
-
result = Class.new(BaseThingy) do
|
797
|
-
def self.name
|
798
|
-
"B"
|
799
|
-
end
|
800
|
-
|
801
|
-
def self.to_s; name; end
|
802
|
-
|
803
|
-
def self.inspect; name.inspect; end
|
804
|
-
end
|
805
|
-
result.resource_name two_classes_one_dsl
|
806
|
-
result
|
807
|
-
end
|
808
|
-
before { resource_class } # pull on it so it gets defined before the recipe runs
|
809
|
-
|
810
|
-
context "and another resource named 'A' with resource_name :two_classes_one_dsl" do
|
811
|
-
let(:resource_class_a) do
|
812
|
-
result = Class.new(BaseThingy) do
|
813
|
-
def self.name
|
814
|
-
"A"
|
815
|
-
end
|
816
|
-
|
817
|
-
def self.to_s; name; end
|
818
|
-
|
819
|
-
def self.inspect; name.inspect; end
|
820
|
-
end
|
821
|
-
result.resource_name two_classes_one_dsl
|
822
|
-
result
|
823
|
-
end
|
824
|
-
before { resource_class_a } # pull on it so it gets defined before the recipe runs
|
825
|
-
|
826
|
-
it "two_classes_one_dsl resolves to A (alphabetically earliest)" do
|
827
|
-
temp_two_classes_one_dsl = two_classes_one_dsl
|
828
|
-
recipe = converge do
|
829
|
-
instance_eval("#{temp_two_classes_one_dsl} 'blah'")
|
830
|
-
end
|
831
|
-
expect(recipe.logged_warnings).to eq ""
|
832
|
-
expect(BaseThingy.created_resource).to eq resource_class_a
|
833
|
-
end
|
834
|
-
|
835
|
-
it "resource_matching_short_name returns B" do
|
836
|
-
expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class_a
|
837
|
-
end
|
838
|
-
end
|
839
|
-
|
840
|
-
context "and another resource named 'Z' with resource_name :two_classes_one_dsl" do
|
841
|
-
let(:resource_class_z) do
|
842
|
-
result = Class.new(BaseThingy) do
|
843
|
-
def self.name
|
844
|
-
"Z"
|
845
|
-
end
|
846
|
-
|
847
|
-
def self.to_s; name; end
|
848
|
-
|
849
|
-
def self.inspect; name.inspect; end
|
850
|
-
end
|
851
|
-
result.resource_name two_classes_one_dsl
|
852
|
-
result
|
853
|
-
end
|
854
|
-
before { resource_class_z } # pull on it so it gets defined before the recipe runs
|
855
|
-
|
856
|
-
it "two_classes_one_dsl resolves to Z (last)" do
|
857
|
-
temp_two_classes_one_dsl = two_classes_one_dsl
|
858
|
-
recipe = converge do
|
859
|
-
instance_eval("#{temp_two_classes_one_dsl} 'blah'")
|
860
|
-
end
|
861
|
-
expect(recipe.logged_warnings).to eq ""
|
862
|
-
expect(BaseThingy.created_resource).to eq resource_class_z
|
863
|
-
end
|
864
|
-
|
865
|
-
it "resource_matching_short_name returns Z" do
|
866
|
-
expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class_z
|
867
|
-
end
|
868
|
-
|
869
|
-
context "and a priority array [ Z, B ]" do
|
870
|
-
before do
|
871
|
-
Chef.set_resource_priority_array(two_classes_one_dsl, [ resource_class_z, resource_class ])
|
872
|
-
end
|
873
|
-
|
874
|
-
it "two_classes_one_dsl resolves to Z (respects the priority array)" do
|
875
|
-
temp_two_classes_one_dsl = two_classes_one_dsl
|
876
|
-
recipe = converge do
|
877
|
-
instance_eval("#{temp_two_classes_one_dsl} 'blah'")
|
878
|
-
end
|
879
|
-
expect(recipe.logged_warnings).to eq ""
|
880
|
-
expect(BaseThingy.created_resource).to eq resource_class_z
|
881
|
-
end
|
882
|
-
|
883
|
-
it "resource_matching_short_name returns Z" do
|
884
|
-
expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class_z
|
885
|
-
end
|
886
|
-
|
887
|
-
context "when Z provides(:two_classes_one_dsl) { false }" do
|
888
|
-
before do
|
889
|
-
resource_class_z.provides(two_classes_one_dsl) { false }
|
890
|
-
end
|
891
|
-
|
892
|
-
it "two_classes_one_dsl resolves to B (picks the next thing in the priority array)" do
|
893
|
-
temp_two_classes_one_dsl = two_classes_one_dsl
|
894
|
-
recipe = converge do
|
895
|
-
instance_eval("#{temp_two_classes_one_dsl} 'blah'")
|
896
|
-
end
|
897
|
-
expect(recipe.logged_warnings).to eq ""
|
898
|
-
expect(BaseThingy.created_resource).to eq resource_class
|
899
|
-
end
|
900
|
-
|
901
|
-
it "resource_matching_short_name returns B" do
|
902
|
-
expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class
|
903
|
-
end
|
904
|
-
end
|
905
|
-
end
|
906
|
-
|
907
|
-
context "and priority arrays [ B ] and [ Z ]" do
|
908
|
-
before do
|
909
|
-
Chef.set_resource_priority_array(two_classes_one_dsl, [ resource_class ])
|
910
|
-
Chef.set_resource_priority_array(two_classes_one_dsl, [ resource_class_z ])
|
911
|
-
end
|
912
|
-
|
913
|
-
it "two_classes_one_dsl resolves to Z (respects the most recent priority array)" do
|
914
|
-
temp_two_classes_one_dsl = two_classes_one_dsl
|
915
|
-
recipe = converge do
|
916
|
-
instance_eval("#{temp_two_classes_one_dsl} 'blah'")
|
917
|
-
end
|
918
|
-
expect(recipe.logged_warnings).to eq ""
|
919
|
-
expect(BaseThingy.created_resource).to eq resource_class_z
|
920
|
-
end
|
921
|
-
|
922
|
-
it "resource_matching_short_name returns Z" do
|
923
|
-
expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class_z
|
924
|
-
end
|
925
|
-
|
926
|
-
context "when Z provides(:two_classes_one_dsl) { false }" do
|
927
|
-
before do
|
928
|
-
resource_class_z.provides(two_classes_one_dsl) { false }
|
929
|
-
end
|
930
|
-
|
931
|
-
it "two_classes_one_dsl resolves to B (picks the first match from the other priority array)" do
|
932
|
-
temp_two_classes_one_dsl = two_classes_one_dsl
|
933
|
-
recipe = converge do
|
934
|
-
instance_eval("#{temp_two_classes_one_dsl} 'blah'")
|
935
|
-
end
|
936
|
-
expect(recipe.logged_warnings).to eq ""
|
937
|
-
expect(BaseThingy.created_resource).to eq resource_class
|
938
|
-
end
|
939
|
-
|
940
|
-
it "resource_matching_short_name returns B" do
|
941
|
-
expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class
|
942
|
-
end
|
943
|
-
end
|
944
|
-
end
|
945
|
-
|
946
|
-
context "and a priority array [ Z ]" do
|
947
|
-
before do
|
948
|
-
Chef.set_resource_priority_array(two_classes_one_dsl, [ resource_class_z ])
|
949
|
-
end
|
950
|
-
|
951
|
-
context "when Z provides(:two_classes_one_dsl) { false }" do
|
952
|
-
before do
|
953
|
-
resource_class_z.provides(two_classes_one_dsl) { false }
|
954
|
-
end
|
955
|
-
|
956
|
-
it "two_classes_one_dsl resolves to B (picks the first match outside the priority array)" do
|
957
|
-
temp_two_classes_one_dsl = two_classes_one_dsl
|
958
|
-
recipe = converge do
|
959
|
-
instance_eval("#{temp_two_classes_one_dsl} 'blah'")
|
960
|
-
end
|
961
|
-
expect(recipe.logged_warnings).to eq ""
|
962
|
-
expect(BaseThingy.created_resource).to eq resource_class
|
963
|
-
end
|
964
|
-
|
965
|
-
it "resource_matching_short_name returns B" do
|
966
|
-
expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class
|
967
|
-
end
|
968
|
-
end
|
969
|
-
end
|
970
|
-
|
971
|
-
end
|
972
|
-
|
973
|
-
context "and a provider named 'B' which provides :two_classes_one_dsl" do
|
974
|
-
before do
|
975
|
-
resource_class.send(:define_method, :provider) { nil }
|
976
|
-
end
|
977
|
-
|
978
|
-
let(:provider_class) do
|
979
|
-
result = Class.new(BaseThingy::Provider) do
|
980
|
-
def self.name
|
981
|
-
"B"
|
982
|
-
end
|
983
|
-
|
984
|
-
def self.to_s; name; end
|
985
|
-
|
986
|
-
def self.inspect; name.inspect; end
|
987
|
-
end
|
988
|
-
result.provides two_classes_one_dsl
|
989
|
-
result
|
990
|
-
end
|
991
|
-
before { provider_class } # pull on it so it gets defined before the recipe runs
|
992
|
-
|
993
|
-
context "and another provider named 'A'" do
|
994
|
-
let(:provider_class_a) do
|
995
|
-
result = Class.new(BaseThingy::Provider) do
|
996
|
-
def self.name
|
997
|
-
"A"
|
998
|
-
end
|
999
|
-
|
1000
|
-
def self.to_s; name; end
|
1001
|
-
|
1002
|
-
def self.inspect; name.inspect; end
|
1003
|
-
end
|
1004
|
-
result
|
1005
|
-
end
|
1006
|
-
context "which provides :two_classes_one_dsl" do
|
1007
|
-
before { provider_class_a.provides two_classes_one_dsl }
|
1008
|
-
|
1009
|
-
it "two_classes_one_dsl resolves to A (alphabetically earliest)" do
|
1010
|
-
temp_two_classes_one_dsl = two_classes_one_dsl
|
1011
|
-
recipe = converge do
|
1012
|
-
instance_eval("#{temp_two_classes_one_dsl} 'blah'")
|
1013
|
-
end
|
1014
|
-
expect(recipe.logged_warnings).to eq ""
|
1015
|
-
expect(BaseThingy.created_provider).to eq provider_class_a
|
1016
|
-
end
|
1017
|
-
end
|
1018
|
-
context "which provides(:two_classes_one_dsl) { false }" do
|
1019
|
-
before { provider_class_a.provides(two_classes_one_dsl) { false } }
|
1020
|
-
|
1021
|
-
it "two_classes_one_dsl resolves to B (since A declined)" do
|
1022
|
-
temp_two_classes_one_dsl = two_classes_one_dsl
|
1023
|
-
recipe = converge do
|
1024
|
-
instance_eval("#{temp_two_classes_one_dsl} 'blah'")
|
1025
|
-
end
|
1026
|
-
expect(recipe.logged_warnings).to eq ""
|
1027
|
-
expect(BaseThingy.created_provider).to eq provider_class
|
1028
|
-
end
|
1029
|
-
end
|
1030
|
-
end
|
1031
|
-
|
1032
|
-
context "and another provider named 'Z'" do
|
1033
|
-
let(:provider_class_z) do
|
1034
|
-
result = Class.new(BaseThingy::Provider) do
|
1035
|
-
def self.name
|
1036
|
-
"Z"
|
1037
|
-
end
|
1038
|
-
|
1039
|
-
def self.to_s; name; end
|
1040
|
-
|
1041
|
-
def self.inspect; name.inspect; end
|
1042
|
-
end
|
1043
|
-
result
|
1044
|
-
end
|
1045
|
-
before { provider_class_z } # pull on it so it gets defined before the recipe runs
|
1046
|
-
|
1047
|
-
context "which provides :two_classes_one_dsl" do
|
1048
|
-
before { provider_class_z.provides two_classes_one_dsl }
|
1049
|
-
|
1050
|
-
it "two_classes_one_dsl resolves to Z (last)" do
|
1051
|
-
temp_two_classes_one_dsl = two_classes_one_dsl
|
1052
|
-
recipe = converge do
|
1053
|
-
instance_eval("#{temp_two_classes_one_dsl} 'blah'")
|
1054
|
-
end
|
1055
|
-
expect(recipe.logged_warnings).to eq ""
|
1056
|
-
expect(BaseThingy.created_provider).to eq provider_class_z
|
1057
|
-
end
|
1058
|
-
|
1059
|
-
context "with a priority array [ Z, B ]" do
|
1060
|
-
before { Chef.set_provider_priority_array two_classes_one_dsl, [ provider_class_z, provider_class ] }
|
1061
|
-
|
1062
|
-
it "two_classes_one_dsl resolves to Z (respects the priority map)" do
|
1063
|
-
temp_two_classes_one_dsl = two_classes_one_dsl
|
1064
|
-
recipe = converge do
|
1065
|
-
instance_eval("#{temp_two_classes_one_dsl} 'blah'")
|
1066
|
-
end
|
1067
|
-
expect(recipe.logged_warnings).to eq ""
|
1068
|
-
expect(BaseThingy.created_provider).to eq provider_class_z
|
1069
|
-
end
|
1070
|
-
end
|
1071
|
-
end
|
1072
|
-
|
1073
|
-
context "which provides(:two_classes_one_dsl) { false }" do
|
1074
|
-
before { provider_class_z.provides(two_classes_one_dsl) { false } }
|
1075
|
-
|
1076
|
-
context "with a priority array [ Z, B ]" do
|
1077
|
-
before { Chef.set_provider_priority_array two_classes_one_dsl, [ provider_class_z, provider_class ] }
|
1078
|
-
|
1079
|
-
it "two_classes_one_dsl resolves to B (the next one in the priority map)" do
|
1080
|
-
temp_two_classes_one_dsl = two_classes_one_dsl
|
1081
|
-
recipe = converge do
|
1082
|
-
instance_eval("#{temp_two_classes_one_dsl} 'blah'")
|
1083
|
-
end
|
1084
|
-
expect(recipe.logged_warnings).to eq ""
|
1085
|
-
expect(BaseThingy.created_provider).to eq provider_class
|
1086
|
-
end
|
1087
|
-
end
|
1088
|
-
|
1089
|
-
context "with priority arrays [ B ] and [ Z ]" do
|
1090
|
-
before { Chef.set_provider_priority_array two_classes_one_dsl, [ provider_class_z ] }
|
1091
|
-
before { Chef.set_provider_priority_array two_classes_one_dsl, [ provider_class ] }
|
1092
|
-
|
1093
|
-
it "two_classes_one_dsl resolves to B (the one in the next priority map)" do
|
1094
|
-
temp_two_classes_one_dsl = two_classes_one_dsl
|
1095
|
-
recipe = converge do
|
1096
|
-
instance_eval("#{temp_two_classes_one_dsl} 'blah'")
|
1097
|
-
end
|
1098
|
-
expect(recipe.logged_warnings).to eq ""
|
1099
|
-
expect(BaseThingy.created_provider).to eq provider_class
|
1100
|
-
end
|
1101
|
-
end
|
1102
|
-
end
|
1103
|
-
end
|
1104
|
-
end
|
1105
|
-
|
1106
|
-
context "and another resource Blarghle with provides :two_classes_one_dsl, os: 'blarghle'" do
|
1107
|
-
let(:resource_class_blarghle) do
|
1108
|
-
result = Class.new(BaseThingy) do
|
1109
|
-
def self.name
|
1110
|
-
"Blarghle"
|
1111
|
-
end
|
1112
|
-
|
1113
|
-
def self.to_s; name; end
|
1114
|
-
|
1115
|
-
def self.inspect; name.inspect; end
|
1116
|
-
end
|
1117
|
-
result.resource_name two_classes_one_dsl
|
1118
|
-
result.provides two_classes_one_dsl, os: "blarghle"
|
1119
|
-
result
|
1120
|
-
end
|
1121
|
-
before { resource_class_blarghle } # pull on it so it gets defined before the recipe runs
|
1122
|
-
|
1123
|
-
it "on os = blarghle, two_classes_one_dsl resolves to Blarghle" do
|
1124
|
-
temp_two_classes_one_dsl = two_classes_one_dsl
|
1125
|
-
recipe = converge do
|
1126
|
-
# this is an ugly way to test, make Cheffish expose node attrs
|
1127
|
-
run_context.node.automatic[:os] = "blarghle"
|
1128
|
-
instance_eval("#{temp_two_classes_one_dsl} 'blah' do; end")
|
1129
|
-
end
|
1130
|
-
expect(recipe.logged_warnings).to eq ""
|
1131
|
-
expect(BaseThingy.created_resource).to eq resource_class_blarghle
|
1132
|
-
end
|
1133
|
-
|
1134
|
-
it "on os = linux, two_classes_one_dsl resolves to B" do
|
1135
|
-
temp_two_classes_one_dsl = two_classes_one_dsl
|
1136
|
-
recipe = converge do
|
1137
|
-
# this is an ugly way to test, make Cheffish expose node attrs
|
1138
|
-
run_context.node.automatic[:os] = "linux"
|
1139
|
-
instance_eval("#{temp_two_classes_one_dsl} 'blah' do; end")
|
1140
|
-
end
|
1141
|
-
expect(recipe.logged_warnings).to eq ""
|
1142
|
-
expect(BaseThingy.created_resource).to eq resource_class
|
1143
|
-
end
|
1144
|
-
end
|
1145
|
-
end
|
1146
|
-
|
1147
|
-
context "with a resource MyResource" do
|
1148
|
-
let(:resource_class) do
|
1149
|
-
Class.new(BaseThingy) do
|
1150
|
-
def self.called_provides
|
1151
|
-
@called_provides
|
1152
|
-
end
|
1153
|
-
|
1154
|
-
def to_s
|
1155
|
-
"MyResource"
|
1156
|
-
end
|
1157
|
-
end end
|
1158
|
-
let(:my_resource) { :"my_resource#{Namer.current_index}" }
|
1159
|
-
let(:blarghle_blarghle_little_star) { :"blarghle_blarghle_little_star#{Namer.current_index}" }
|
1160
|
-
|
1161
|
-
context "with resource_name :my_resource" do
|
1162
|
-
before do
|
1163
|
-
resource_class.resource_name my_resource
|
1164
|
-
end
|
1165
|
-
|
1166
|
-
context "with provides? returning true to my_resource" do
|
1167
|
-
before do
|
1168
|
-
temp_my_resource = my_resource
|
1169
|
-
resource_class.define_singleton_method(:provides?) do |node, resource_name|
|
1170
|
-
@called_provides = true
|
1171
|
-
resource_name == temp_my_resource
|
1172
|
-
end
|
1173
|
-
end
|
1174
|
-
|
1175
|
-
it "my_resource returns the resource and calls provides?, but does not emit a warning" do
|
1176
|
-
dsl_name = my_resource
|
1177
|
-
recipe = converge do
|
1178
|
-
instance_eval("#{dsl_name} 'foo'")
|
1179
|
-
end
|
1180
|
-
expect(recipe.logged_warnings).to eq ""
|
1181
|
-
expect(BaseThingy.created_resource).to eq resource_class
|
1182
|
-
expect(resource_class.called_provides).to be_truthy
|
1183
|
-
end
|
1184
|
-
end
|
1185
|
-
|
1186
|
-
context "and a provider" do
|
1187
|
-
let(:provider_class) do
|
1188
|
-
Class.new(BaseThingy::Provider) do
|
1189
|
-
def self.name
|
1190
|
-
"MyProvider"
|
1191
|
-
end
|
1192
|
-
|
1193
|
-
def self.to_s; name; end
|
1194
|
-
|
1195
|
-
def self.inspect; name.inspect; end
|
1196
|
-
|
1197
|
-
def self.called_provides
|
1198
|
-
@called_provides
|
1199
|
-
end
|
1200
|
-
end
|
1201
|
-
end
|
1202
|
-
|
1203
|
-
before do
|
1204
|
-
resource_class.send(:define_method, :provider) { nil }
|
1205
|
-
end
|
1206
|
-
|
1207
|
-
context "that provides :my_resource" do
|
1208
|
-
before do
|
1209
|
-
provider_class.provides my_resource
|
1210
|
-
end
|
1211
|
-
|
1212
|
-
context "with supports? returning true" do
|
1213
|
-
before do
|
1214
|
-
provider_class.define_singleton_method(:supports?) { |resource, action| true }
|
1215
|
-
end
|
1216
|
-
|
1217
|
-
it "my_resource runs the provider and does not emit a warning" do
|
1218
|
-
temp_my_resource = my_resource
|
1219
|
-
recipe = converge do
|
1220
|
-
instance_eval("#{temp_my_resource} 'foo'")
|
1221
|
-
end
|
1222
|
-
expect(recipe.logged_warnings).to eq ""
|
1223
|
-
expect(BaseThingy.created_provider).to eq provider_class
|
1224
|
-
end
|
1225
|
-
|
1226
|
-
context "and another provider supporting :my_resource with supports? false" do
|
1227
|
-
let(:provider_class2) do
|
1228
|
-
Class.new(BaseThingy::Provider) do
|
1229
|
-
def self.name
|
1230
|
-
"MyProvider2"
|
1231
|
-
end
|
1232
|
-
|
1233
|
-
def self.to_s; name; end
|
1234
|
-
|
1235
|
-
def self.inspect; name.inspect; end
|
1236
|
-
|
1237
|
-
def self.called_provides
|
1238
|
-
@called_provides
|
1239
|
-
end
|
1240
|
-
provides my_resource
|
1241
|
-
def self.supports?(resource, action)
|
1242
|
-
false
|
1243
|
-
end
|
1244
|
-
end
|
1245
|
-
end
|
1246
|
-
|
1247
|
-
it "my_resource runs the first provider" do
|
1248
|
-
temp_my_resource = my_resource
|
1249
|
-
recipe = converge do
|
1250
|
-
instance_eval("#{temp_my_resource} 'foo'")
|
1251
|
-
end
|
1252
|
-
expect(recipe.logged_warnings).to eq ""
|
1253
|
-
expect(BaseThingy.created_provider).to eq provider_class
|
1254
|
-
end
|
1255
|
-
end
|
1256
|
-
end
|
1257
|
-
|
1258
|
-
context "with supports? returning false" do
|
1259
|
-
before do
|
1260
|
-
provider_class.define_singleton_method(:supports?) { |resource, action| false }
|
1261
|
-
end
|
1262
|
-
|
1263
|
-
# TODO no warning? ick
|
1264
|
-
it "my_resource runs the provider anyway" do
|
1265
|
-
temp_my_resource = my_resource
|
1266
|
-
recipe = converge do
|
1267
|
-
instance_eval("#{temp_my_resource} 'foo'")
|
1268
|
-
end
|
1269
|
-
expect(recipe.logged_warnings).to eq ""
|
1270
|
-
expect(BaseThingy.created_provider).to eq provider_class
|
1271
|
-
end
|
1272
|
-
|
1273
|
-
context "and another provider supporting :my_resource with supports? true" do
|
1274
|
-
let(:provider_class2) do
|
1275
|
-
temp_my_resource = my_resource
|
1276
|
-
Class.new(BaseThingy::Provider) do
|
1277
|
-
def self.name
|
1278
|
-
"MyProvider2"
|
1279
|
-
end
|
1280
|
-
|
1281
|
-
def self.to_s; name; end
|
1282
|
-
|
1283
|
-
def self.inspect; name.inspect; end
|
1284
|
-
|
1285
|
-
def self.called_provides
|
1286
|
-
@called_provides
|
1287
|
-
end
|
1288
|
-
provides temp_my_resource
|
1289
|
-
def self.supports?(resource, action)
|
1290
|
-
true
|
1291
|
-
end
|
1292
|
-
end
|
1293
|
-
end
|
1294
|
-
before { provider_class2 } # make sure the provider class shows up
|
1295
|
-
|
1296
|
-
it "my_resource runs the other provider" do
|
1297
|
-
temp_my_resource = my_resource
|
1298
|
-
recipe = converge do
|
1299
|
-
instance_eval("#{temp_my_resource} 'foo'")
|
1300
|
-
end
|
1301
|
-
expect(recipe.logged_warnings).to eq ""
|
1302
|
-
expect(BaseThingy.created_provider).to eq provider_class2
|
1303
|
-
end
|
1304
|
-
end
|
1305
|
-
end
|
1306
|
-
end
|
1307
|
-
end
|
1308
|
-
end
|
1309
|
-
end
|
1310
|
-
|
1311
|
-
context "with UTF-8 provides" do
|
1312
|
-
before(:each) do
|
1313
|
-
class UTF8Thingy < BaseThingy
|
1314
|
-
resource_name :Straße
|
1315
|
-
provides :Straße
|
1316
|
-
end
|
1317
|
-
end
|
1318
|
-
|
1319
|
-
it "utf-8 dsl names work" do
|
1320
|
-
recipe = converge do
|
1321
|
-
Straße("blah") {}
|
1322
|
-
end
|
1323
|
-
expect(recipe.logged_warnings).to eq ""
|
1324
|
-
expect(BaseThingy.created_resource).to eq(UTF8Thingy)
|
1325
|
-
end
|
1326
|
-
end
|
1327
|
-
end
|
1328
|
-
|
1329
|
-
before(:all) { Namer.current_index = 0 }
|
1330
|
-
before { Namer.current_index += 1 }
|
1331
|
-
|
1332
|
-
context "with an LWRP that declares actions" do
|
1333
|
-
let(:resource_class) do
|
1334
|
-
Class.new(Chef::Resource::LWRPBase) do
|
1335
|
-
provides :"recipe_dsl_spec#{Namer.current_index}"
|
1336
|
-
actions :create
|
1337
|
-
end
|
1338
|
-
end
|
1339
|
-
let(:resource) do
|
1340
|
-
resource_class.new("blah", run_context)
|
1341
|
-
end
|
1342
|
-
it "The actions are part of actions along with :nothing" do
|
1343
|
-
expect(resource_class.actions).to eq [ :nothing, :create ]
|
1344
|
-
end
|
1345
|
-
it "The actions are part of allowed_actions along with :nothing" do
|
1346
|
-
expect(resource.allowed_actions).to eq [ :nothing, :create ]
|
1347
|
-
end
|
1348
|
-
|
1349
|
-
context "and a subclass that declares more actions" do
|
1350
|
-
let(:subresource_class) do
|
1351
|
-
Class.new(Chef::Resource::LWRPBase) do
|
1352
|
-
provides :"recipe_dsl_spec_sub#{Namer.current_index}"
|
1353
|
-
actions :delete
|
1354
|
-
end
|
1355
|
-
end
|
1356
|
-
let(:subresource) do
|
1357
|
-
subresource_class.new("subblah", run_context)
|
1358
|
-
end
|
1359
|
-
|
1360
|
-
it "The parent class actions are not part of actions" do
|
1361
|
-
expect(subresource_class.actions).to eq [ :nothing, :delete ]
|
1362
|
-
end
|
1363
|
-
it "The parent class actions are not part of allowed_actions" do
|
1364
|
-
expect(subresource.allowed_actions).to eq [ :nothing, :delete ]
|
1365
|
-
end
|
1366
|
-
it "The parent class actions do not change" do
|
1367
|
-
expect(resource_class.actions).to eq [ :nothing, :create ]
|
1368
|
-
expect(resource.allowed_actions).to eq [ :nothing, :create ]
|
1369
|
-
end
|
1370
|
-
end
|
1371
|
-
end
|
1372
|
-
|
1373
|
-
end
|
1
|
+
require "support/shared/integration/integration_helper"
|
2
|
+
|
3
|
+
describe "Recipe DSL methods" do
|
4
|
+
include IntegrationSupport
|
5
|
+
|
6
|
+
module Namer
|
7
|
+
extend self
|
8
|
+
attr_accessor :current_index
|
9
|
+
end
|
10
|
+
|
11
|
+
before(:all) { Namer.current_index = 1 }
|
12
|
+
before { Namer.current_index += 1 }
|
13
|
+
|
14
|
+
context "with resource 'base_thingy' declared as BaseThingy" do
|
15
|
+
before(:each) do
|
16
|
+
|
17
|
+
class BaseThingy < Chef::Resource
|
18
|
+
resource_name "base_thingy"
|
19
|
+
default_action :create
|
20
|
+
|
21
|
+
class<<self
|
22
|
+
attr_accessor :created_name
|
23
|
+
attr_accessor :created_resource
|
24
|
+
attr_accessor :created_provider
|
25
|
+
end
|
26
|
+
|
27
|
+
def provider
|
28
|
+
Provider
|
29
|
+
end
|
30
|
+
class Provider < Chef::Provider
|
31
|
+
def load_current_resource
|
32
|
+
end
|
33
|
+
|
34
|
+
def action_create
|
35
|
+
BaseThingy.created_name = new_resource.name
|
36
|
+
BaseThingy.created_resource = new_resource.class
|
37
|
+
BaseThingy.created_provider = self.class
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
# Modules to put stuff in
|
43
|
+
module RecipeDSLSpecNamespace; end
|
44
|
+
module RecipeDSLSpecNamespace::Bar; end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
before :each do
|
49
|
+
BaseThingy.created_resource = nil
|
50
|
+
BaseThingy.created_provider = nil
|
51
|
+
end
|
52
|
+
|
53
|
+
it "creates base_thingy when you call base_thingy in a recipe" do
|
54
|
+
recipe = converge do
|
55
|
+
base_thingy("blah") {}
|
56
|
+
end
|
57
|
+
expect(recipe.logged_warnings).to eq ""
|
58
|
+
expect(BaseThingy.created_name).to eq "blah"
|
59
|
+
expect(BaseThingy.created_resource).to eq BaseThingy
|
60
|
+
end
|
61
|
+
|
62
|
+
it "errors when you call base_thingy do ... end in a recipe" do
|
63
|
+
expect_converge do
|
64
|
+
base_thingy { ; }
|
65
|
+
end.to raise_error(Chef::Exceptions::ValidationFailed)
|
66
|
+
end
|
67
|
+
|
68
|
+
context "nameless resources" do
|
69
|
+
before(:each) do
|
70
|
+
class NamelessThingy < BaseThingy
|
71
|
+
resource_name :nameless_thingy
|
72
|
+
provides :nameless_thingy
|
73
|
+
|
74
|
+
property :name, String, default: ""
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
it "does not error when not given a name" do
|
79
|
+
recipe = converge do
|
80
|
+
nameless_thingy {}
|
81
|
+
end
|
82
|
+
expect(recipe.logged_warnings).to eq ""
|
83
|
+
expect(BaseThingy.created_name).to eq ""
|
84
|
+
expect(BaseThingy.created_resource).to eq NamelessThingy
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
context "Deprecated automatic resource DSL" do
|
89
|
+
before do
|
90
|
+
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
91
|
+
end
|
92
|
+
|
93
|
+
context "with a resource named RecipeDSLSpecNamespace::Bar::BarThingy" do
|
94
|
+
before(:each) do
|
95
|
+
|
96
|
+
class RecipeDSLSpecNamespace::Bar::BarThingy < BaseThingy
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
100
|
+
|
101
|
+
it "bar_thingy does not work" do
|
102
|
+
expect_converge do
|
103
|
+
bar_thingy("blah") {}
|
104
|
+
end.to raise_error(NoMethodError)
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
context "with a resource named Chef::Resource::NoNameThingy with resource_name nil" do
|
109
|
+
before(:each) do
|
110
|
+
|
111
|
+
class Chef::Resource::NoNameThingy < BaseThingy
|
112
|
+
resource_name nil
|
113
|
+
end
|
114
|
+
|
115
|
+
end
|
116
|
+
|
117
|
+
it "no_name_thingy does not work" do
|
118
|
+
expect_converge do
|
119
|
+
no_name_thingy("blah") {}
|
120
|
+
end.to raise_error(NoMethodError)
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
context "with a resource named AnotherNoNameThingy with resource_name :another_thingy_name" do
|
125
|
+
before(:each) do
|
126
|
+
|
127
|
+
class AnotherNoNameThingy < BaseThingy
|
128
|
+
resource_name :another_thingy_name
|
129
|
+
end
|
130
|
+
|
131
|
+
end
|
132
|
+
|
133
|
+
it "another_no_name_thingy does not work" do
|
134
|
+
expect_converge do
|
135
|
+
another_no_name_thingy("blah") {}
|
136
|
+
end.to raise_error(NoMethodError)
|
137
|
+
end
|
138
|
+
|
139
|
+
it "another_thingy_name works" do
|
140
|
+
recipe = converge do
|
141
|
+
another_thingy_name("blah") {}
|
142
|
+
end
|
143
|
+
expect(recipe.logged_warnings).to eq ""
|
144
|
+
expect(BaseThingy.created_resource).to eq(AnotherNoNameThingy)
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
context "with a resource named AnotherNoNameThingy2 with resource_name :another_thingy_name2; resource_name :another_thingy_name3" do
|
149
|
+
before(:each) do
|
150
|
+
|
151
|
+
class AnotherNoNameThingy2 < BaseThingy
|
152
|
+
resource_name :another_thingy_name2
|
153
|
+
resource_name :another_thingy_name3
|
154
|
+
end
|
155
|
+
|
156
|
+
end
|
157
|
+
|
158
|
+
it "another_no_name_thingy does not work" do
|
159
|
+
expect_converge do
|
160
|
+
another_no_name_thingy2("blah") {}
|
161
|
+
end.to raise_error(NoMethodError)
|
162
|
+
end
|
163
|
+
|
164
|
+
it "another_thingy_name2 does not work" do
|
165
|
+
expect_converge do
|
166
|
+
another_thingy_name2("blah") {}
|
167
|
+
end.to raise_error(NoMethodError)
|
168
|
+
end
|
169
|
+
|
170
|
+
it "yet_another_thingy_name3 works" do
|
171
|
+
recipe = converge do
|
172
|
+
another_thingy_name3("blah") {}
|
173
|
+
end
|
174
|
+
expect(recipe.logged_warnings).to eq ""
|
175
|
+
expect(BaseThingy.created_resource).to eq(AnotherNoNameThingy2)
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
context "provides overriding resource_name" do
|
180
|
+
context "with a resource named AnotherNoNameThingy3 with provides :another_no_name_thingy3, os: 'blarghle'" do
|
181
|
+
before(:each) do
|
182
|
+
|
183
|
+
class AnotherNoNameThingy3 < BaseThingy
|
184
|
+
resource_name :another_no_name_thingy_3
|
185
|
+
provides :another_no_name_thingy3, os: "blarghle"
|
186
|
+
end
|
187
|
+
|
188
|
+
end
|
189
|
+
|
190
|
+
it "and os = linux, another_no_name_thingy3 does not work" do
|
191
|
+
expect_converge do
|
192
|
+
# TODO this is an ugly way to test, make Cheffish expose node attrs
|
193
|
+
run_context.node.automatic[:os] = "linux"
|
194
|
+
another_no_name_thingy3("blah") {}
|
195
|
+
end.to raise_error(Chef::Exceptions::NoSuchResourceType)
|
196
|
+
end
|
197
|
+
|
198
|
+
it "and os = blarghle, another_no_name_thingy3 works" do
|
199
|
+
recipe = converge do
|
200
|
+
# TODO this is an ugly way to test, make Cheffish expose node attrs
|
201
|
+
run_context.node.automatic[:os] = "blarghle"
|
202
|
+
another_no_name_thingy3("blah") {}
|
203
|
+
end
|
204
|
+
expect(recipe.logged_warnings).to eq ""
|
205
|
+
expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy3)
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
209
|
+
context "with a resource named AnotherNoNameThingy4 with two provides" do
|
210
|
+
before(:each) do
|
211
|
+
|
212
|
+
class AnotherNoNameThingy4 < BaseThingy
|
213
|
+
resource_name :another_no_name_thingy_4
|
214
|
+
provides :another_no_name_thingy4, os: "blarghle"
|
215
|
+
provides :another_no_name_thingy4, platform_family: "foo"
|
216
|
+
end
|
217
|
+
|
218
|
+
end
|
219
|
+
|
220
|
+
it "and os = linux, another_no_name_thingy4 does not work" do
|
221
|
+
expect_converge do
|
222
|
+
# TODO this is an ugly way to test, make Cheffish expose node attrs
|
223
|
+
run_context.node.automatic[:os] = "linux"
|
224
|
+
another_no_name_thingy4("blah") {}
|
225
|
+
end.to raise_error(Chef::Exceptions::NoSuchResourceType)
|
226
|
+
end
|
227
|
+
|
228
|
+
it "and os = blarghle, another_no_name_thingy4 works" do
|
229
|
+
recipe = converge do
|
230
|
+
# TODO this is an ugly way to test, make Cheffish expose node attrs
|
231
|
+
run_context.node.automatic[:os] = "blarghle"
|
232
|
+
another_no_name_thingy4("blah") {}
|
233
|
+
end
|
234
|
+
expect(recipe.logged_warnings).to eq ""
|
235
|
+
expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy4)
|
236
|
+
end
|
237
|
+
|
238
|
+
it "and platform_family = foo, another_no_name_thingy4 works" do
|
239
|
+
recipe = converge do
|
240
|
+
# TODO this is an ugly way to test, make Cheffish expose node attrs
|
241
|
+
run_context.node.automatic[:platform_family] = "foo"
|
242
|
+
another_no_name_thingy4("blah") {}
|
243
|
+
end
|
244
|
+
expect(recipe.logged_warnings).to eq ""
|
245
|
+
expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy4)
|
246
|
+
end
|
247
|
+
end
|
248
|
+
|
249
|
+
context "with a resource named AnotherNoNameThingy5, a different resource_name, and a provides with the original resource_name" do
|
250
|
+
before(:each) do
|
251
|
+
|
252
|
+
class AnotherNoNameThingy5 < BaseThingy
|
253
|
+
resource_name :another_thingy_name_for_another_no_name_thingy5
|
254
|
+
provides :another_no_name_thingy5, os: "blarghle"
|
255
|
+
end
|
256
|
+
|
257
|
+
end
|
258
|
+
|
259
|
+
it "and os = linux, another_no_name_thingy5 does not work" do
|
260
|
+
expect_converge do
|
261
|
+
# this is an ugly way to test, make Cheffish expose node attrs
|
262
|
+
run_context.node.automatic[:os] = "linux"
|
263
|
+
another_no_name_thingy5("blah") {}
|
264
|
+
end.to raise_error(Chef::Exceptions::NoSuchResourceType)
|
265
|
+
end
|
266
|
+
|
267
|
+
it "and os = blarghle, another_no_name_thingy5 works" do
|
268
|
+
recipe = converge do
|
269
|
+
# this is an ugly way to test, make Cheffish expose node attrs
|
270
|
+
run_context.node.automatic[:os] = "blarghle"
|
271
|
+
another_no_name_thingy5("blah") {}
|
272
|
+
end
|
273
|
+
expect(recipe.logged_warnings).to eq ""
|
274
|
+
expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy5)
|
275
|
+
end
|
276
|
+
|
277
|
+
it "the new resource name can be used in a recipe" do
|
278
|
+
recipe = converge do
|
279
|
+
another_thingy_name_for_another_no_name_thingy5("blah") {}
|
280
|
+
end
|
281
|
+
expect(recipe.logged_warnings).to eq ""
|
282
|
+
expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy5)
|
283
|
+
end
|
284
|
+
end
|
285
|
+
|
286
|
+
context "with a resource named AnotherNoNameThingy6, a provides with the original resource name, and a different resource_name" do
|
287
|
+
before(:each) do
|
288
|
+
|
289
|
+
class AnotherNoNameThingy6 < BaseThingy
|
290
|
+
provides :another_no_name_thingy6, os: "blarghle"
|
291
|
+
resource_name :another_thingy_name_for_another_no_name_thingy6
|
292
|
+
end
|
293
|
+
|
294
|
+
end
|
295
|
+
|
296
|
+
it "and os = linux, another_no_name_thingy6 does not work" do
|
297
|
+
expect_converge do
|
298
|
+
# this is an ugly way to test, make Cheffish expose node attrs
|
299
|
+
run_context.node.automatic[:os] = "linux"
|
300
|
+
another_no_name_thingy6("blah") {}
|
301
|
+
end.to raise_error(Chef::Exceptions::NoSuchResourceType)
|
302
|
+
end
|
303
|
+
|
304
|
+
it "and os = blarghle, another_no_name_thingy6 works" do
|
305
|
+
recipe = converge do
|
306
|
+
# this is an ugly way to test, make Cheffish expose node attrs
|
307
|
+
run_context.node.automatic[:os] = "blarghle"
|
308
|
+
another_no_name_thingy6("blah") {}
|
309
|
+
end
|
310
|
+
expect(recipe.logged_warnings).to eq ""
|
311
|
+
expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy6)
|
312
|
+
end
|
313
|
+
|
314
|
+
it "the new resource name can be used in a recipe" do
|
315
|
+
recipe = converge do
|
316
|
+
another_thingy_name_for_another_no_name_thingy6("blah") {}
|
317
|
+
end
|
318
|
+
expect(recipe.logged_warnings).to eq ""
|
319
|
+
expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy6)
|
320
|
+
end
|
321
|
+
end
|
322
|
+
|
323
|
+
context "with a resource named AnotherNoNameThingy7, a new resource_name, and provides with that new resource name" do
|
324
|
+
before(:each) do
|
325
|
+
|
326
|
+
class AnotherNoNameThingy7 < BaseThingy
|
327
|
+
resource_name :another_thingy_name_for_another_no_name_thingy7
|
328
|
+
provides :another_thingy_name_for_another_no_name_thingy7, os: "blarghle"
|
329
|
+
end
|
330
|
+
|
331
|
+
end
|
332
|
+
|
333
|
+
it "and os = linux, another_thingy_name_for_another_no_name_thingy7 does not work" do
|
334
|
+
expect_converge do
|
335
|
+
# this is an ugly way to test, make Cheffish expose node attrs
|
336
|
+
run_context.node.automatic[:os] = "linux"
|
337
|
+
another_thingy_name_for_another_no_name_thingy7("blah") {}
|
338
|
+
end.to raise_error(Chef::Exceptions::NoSuchResourceType)
|
339
|
+
end
|
340
|
+
|
341
|
+
it "and os = blarghle, another_thingy_name_for_another_no_name_thingy7 works" do
|
342
|
+
recipe = converge do
|
343
|
+
# this is an ugly way to test, make Cheffish expose node attrs
|
344
|
+
run_context.node.automatic[:os] = "blarghle"
|
345
|
+
another_thingy_name_for_another_no_name_thingy7("blah") {}
|
346
|
+
end
|
347
|
+
expect(recipe.logged_warnings).to eq ""
|
348
|
+
expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy7)
|
349
|
+
end
|
350
|
+
|
351
|
+
it "the old resource name does not work" do
|
352
|
+
expect_converge do
|
353
|
+
# this is an ugly way to test, make Cheffish expose node attrs
|
354
|
+
run_context.node.automatic[:os] = "linux"
|
355
|
+
another_no_name_thingy_7("blah") {}
|
356
|
+
end.to raise_error(NoMethodError)
|
357
|
+
end
|
358
|
+
end
|
359
|
+
|
360
|
+
# opposite order from the previous test (provides, then resource_name)
|
361
|
+
context "with a resource named AnotherNoNameThingy8, a provides with a new resource name, and resource_name with that new resource name" do
|
362
|
+
before(:each) do
|
363
|
+
|
364
|
+
class AnotherNoNameThingy8 < BaseThingy
|
365
|
+
provides :another_thingy_name_for_another_no_name_thingy8, os: "blarghle"
|
366
|
+
resource_name :another_thingy_name_for_another_no_name_thingy8
|
367
|
+
end
|
368
|
+
|
369
|
+
end
|
370
|
+
|
371
|
+
it "and os = linux, another_thingy_name_for_another_no_name_thingy8 does not work" do
|
372
|
+
expect_converge do
|
373
|
+
# this is an ugly way to test, make Cheffish expose node attrs
|
374
|
+
run_context.node.automatic[:os] = "linux"
|
375
|
+
another_thingy_name_for_another_no_name_thingy8("blah") {}
|
376
|
+
end.to raise_error(Chef::Exceptions::NoSuchResourceType)
|
377
|
+
end
|
378
|
+
|
379
|
+
it "and os = blarghle, another_thingy_name_for_another_no_name_thingy8 works" do
|
380
|
+
recipe = converge do
|
381
|
+
# this is an ugly way to test, make Cheffish expose node attrs
|
382
|
+
run_context.node.automatic[:os] = "blarghle"
|
383
|
+
another_thingy_name_for_another_no_name_thingy8("blah") {}
|
384
|
+
end
|
385
|
+
expect(recipe.logged_warnings).to eq ""
|
386
|
+
expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy8)
|
387
|
+
end
|
388
|
+
|
389
|
+
it "the old resource name does not work" do
|
390
|
+
expect_converge do
|
391
|
+
# this is an ugly way to test, make Cheffish expose node attrs
|
392
|
+
run_context.node.automatic[:os] = "linux"
|
393
|
+
another_thingy_name8("blah") {}
|
394
|
+
end.to raise_error(NoMethodError)
|
395
|
+
end
|
396
|
+
end
|
397
|
+
end
|
398
|
+
end
|
399
|
+
|
400
|
+
context "provides" do
|
401
|
+
context "when MySupplier provides :hemlock" do
|
402
|
+
before(:each) do
|
403
|
+
|
404
|
+
class RecipeDSLSpecNamespace::MySupplier < BaseThingy
|
405
|
+
resource_name :hemlock
|
406
|
+
end
|
407
|
+
|
408
|
+
end
|
409
|
+
|
410
|
+
it "my_supplier does not work in a recipe" do
|
411
|
+
expect_converge do
|
412
|
+
my_supplier("blah") {}
|
413
|
+
end.to raise_error(NoMethodError)
|
414
|
+
end
|
415
|
+
|
416
|
+
it "hemlock works in a recipe" do
|
417
|
+
expect_recipe do
|
418
|
+
hemlock("blah") {}
|
419
|
+
end.to emit_no_warnings_or_errors
|
420
|
+
expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::MySupplier
|
421
|
+
end
|
422
|
+
end
|
423
|
+
|
424
|
+
context "when Thingy3 has resource_name :thingy3" do
|
425
|
+
before(:each) do
|
426
|
+
|
427
|
+
class RecipeDSLSpecNamespace::Thingy3 < BaseThingy
|
428
|
+
resource_name :thingy3
|
429
|
+
end
|
430
|
+
|
431
|
+
end
|
432
|
+
|
433
|
+
it "thingy3 works in a recipe" do
|
434
|
+
expect_recipe do
|
435
|
+
thingy3("blah") {}
|
436
|
+
end.to emit_no_warnings_or_errors
|
437
|
+
expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy3
|
438
|
+
end
|
439
|
+
|
440
|
+
context "and Thingy4 has resource_name :thingy3" do
|
441
|
+
before(:each) do
|
442
|
+
|
443
|
+
class RecipeDSLSpecNamespace::Thingy4 < BaseThingy
|
444
|
+
resource_name :thingy3
|
445
|
+
end
|
446
|
+
|
447
|
+
end
|
448
|
+
|
449
|
+
it "thingy3 works in a recipe and yields Thingy4 (the last one)" do
|
450
|
+
recipe = converge do
|
451
|
+
thingy3("blah") {}
|
452
|
+
end
|
453
|
+
expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy4
|
454
|
+
end
|
455
|
+
|
456
|
+
it "thingy4 does not work in a recipe" do
|
457
|
+
expect_converge do
|
458
|
+
thingy4("blah") {}
|
459
|
+
end.to raise_error(NoMethodError)
|
460
|
+
end
|
461
|
+
|
462
|
+
it "resource_matching_short_name returns Thingy4" do
|
463
|
+
expect(Chef::Resource.resource_matching_short_name(:thingy3)).to eq RecipeDSLSpecNamespace::Thingy4
|
464
|
+
end
|
465
|
+
end
|
466
|
+
end
|
467
|
+
|
468
|
+
context "when Thingy5 has resource_name :thingy5 and provides :thingy5reverse, :thingy5_2 and :thingy5_2reverse" do
|
469
|
+
before(:each) do
|
470
|
+
|
471
|
+
class RecipeDSLSpecNamespace::Thingy5 < BaseThingy
|
472
|
+
resource_name :thingy5
|
473
|
+
provides :thingy5reverse
|
474
|
+
provides :thingy5_2
|
475
|
+
provides :thingy5_2reverse
|
476
|
+
end
|
477
|
+
|
478
|
+
end
|
479
|
+
|
480
|
+
it "thingy5 works in a recipe" do
|
481
|
+
expect_recipe do
|
482
|
+
thingy5("blah") {}
|
483
|
+
end.to emit_no_warnings_or_errors
|
484
|
+
expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy5
|
485
|
+
end
|
486
|
+
|
487
|
+
context "and Thingy6 provides :thingy5" do
|
488
|
+
before(:each) do
|
489
|
+
|
490
|
+
class RecipeDSLSpecNamespace::Thingy6 < BaseThingy
|
491
|
+
resource_name :thingy6
|
492
|
+
provides :thingy5
|
493
|
+
end
|
494
|
+
|
495
|
+
end
|
496
|
+
|
497
|
+
it "thingy6 works in a recipe and yields Thingy6" do
|
498
|
+
recipe = converge do
|
499
|
+
thingy6("blah") {}
|
500
|
+
end
|
501
|
+
expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy6
|
502
|
+
end
|
503
|
+
|
504
|
+
it "thingy5 works in a recipe and yields Foo::Thingy6 (the last one)" do
|
505
|
+
recipe = converge do
|
506
|
+
thingy5("blah") {}
|
507
|
+
end
|
508
|
+
expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy6
|
509
|
+
end
|
510
|
+
|
511
|
+
it "resource_matching_short_name returns Thingy6" do
|
512
|
+
expect(Chef::Resource.resource_matching_short_name(:thingy5)).to eq RecipeDSLSpecNamespace::Thingy5
|
513
|
+
end
|
514
|
+
|
515
|
+
context "and AThingy5 provides :thingy5reverse" do
|
516
|
+
before(:each) do
|
517
|
+
|
518
|
+
class RecipeDSLSpecNamespace::AThingy5 < BaseThingy
|
519
|
+
resource_name :thingy5reverse
|
520
|
+
end
|
521
|
+
|
522
|
+
end
|
523
|
+
|
524
|
+
it "thingy5reverse works in a recipe and yields AThingy5 (the alphabetical one)" do
|
525
|
+
recipe = converge do
|
526
|
+
thingy5reverse("blah") {}
|
527
|
+
end
|
528
|
+
expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::AThingy5
|
529
|
+
end
|
530
|
+
end
|
531
|
+
|
532
|
+
context "and ZRecipeDSLSpecNamespace::Thingy5 provides :thingy5_2" do
|
533
|
+
before(:each) do
|
534
|
+
|
535
|
+
module ZRecipeDSLSpecNamespace
|
536
|
+
class Thingy5 < BaseThingy
|
537
|
+
resource_name :thingy5_2
|
538
|
+
end
|
539
|
+
end
|
540
|
+
|
541
|
+
end
|
542
|
+
|
543
|
+
it "thingy5_2 works in a recipe and yields the ZRecipeDSLSpaceNamespace one (the last one)" do
|
544
|
+
recipe = converge do
|
545
|
+
thingy5_2("blah") {}
|
546
|
+
end
|
547
|
+
expect(BaseThingy.created_resource).to eq ZRecipeDSLSpecNamespace::Thingy5
|
548
|
+
end
|
549
|
+
end
|
550
|
+
|
551
|
+
context "and ARecipeDSLSpecNamespace::Thingy5 provides :thingy5_2" do
|
552
|
+
before(:each) do
|
553
|
+
|
554
|
+
module ARecipeDSLSpecNamespace
|
555
|
+
class Thingy5 < BaseThingy
|
556
|
+
resource_name :thingy5_2reverse
|
557
|
+
end
|
558
|
+
end
|
559
|
+
|
560
|
+
end
|
561
|
+
|
562
|
+
it "thingy5_2reverse works in a recipe and yields the ARecipeDSLSpaceNamespace one (the alphabetical one)" do
|
563
|
+
recipe = converge do
|
564
|
+
thingy5_2reverse("blah") {}
|
565
|
+
end
|
566
|
+
expect(BaseThingy.created_resource).to eq ARecipeDSLSpecNamespace::Thingy5
|
567
|
+
end
|
568
|
+
end
|
569
|
+
end
|
570
|
+
|
571
|
+
context "when Thingy3 has resource_name :thingy3" do
|
572
|
+
before(:each) do
|
573
|
+
|
574
|
+
class RecipeDSLSpecNamespace::Thingy3 < BaseThingy
|
575
|
+
resource_name :thingy3
|
576
|
+
end
|
577
|
+
|
578
|
+
end
|
579
|
+
|
580
|
+
it "thingy3 works in a recipe" do
|
581
|
+
expect_recipe do
|
582
|
+
thingy3("blah") {}
|
583
|
+
end.to emit_no_warnings_or_errors
|
584
|
+
expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy3
|
585
|
+
end
|
586
|
+
|
587
|
+
context "and Thingy4 has resource_name :thingy3" do
|
588
|
+
before(:each) do
|
589
|
+
|
590
|
+
class RecipeDSLSpecNamespace::Thingy4 < BaseThingy
|
591
|
+
resource_name :thingy3
|
592
|
+
end
|
593
|
+
|
594
|
+
end
|
595
|
+
|
596
|
+
it "thingy3 works in a recipe and yields Thingy4 (the last one)" do
|
597
|
+
recipe = converge do
|
598
|
+
thingy3("blah") {}
|
599
|
+
end
|
600
|
+
expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy4
|
601
|
+
end
|
602
|
+
|
603
|
+
it "thingy4 does not work in a recipe" do
|
604
|
+
expect_converge do
|
605
|
+
thingy4("blah") {}
|
606
|
+
end.to raise_error(NoMethodError)
|
607
|
+
end
|
608
|
+
|
609
|
+
it "resource_matching_short_name returns Thingy4" do
|
610
|
+
expect(Chef::Resource.resource_matching_short_name(:thingy3)).to eq RecipeDSLSpecNamespace::Thingy4
|
611
|
+
end
|
612
|
+
end
|
613
|
+
|
614
|
+
context "and Thingy4 has resource_name :thingy3" do
|
615
|
+
before(:each) do
|
616
|
+
|
617
|
+
class RecipeDSLSpecNamespace::Thingy4 < BaseThingy
|
618
|
+
resource_name :thingy3
|
619
|
+
end
|
620
|
+
|
621
|
+
end
|
622
|
+
|
623
|
+
it "thingy3 works in a recipe and yields Thingy4 (the last one)" do
|
624
|
+
recipe = converge do
|
625
|
+
thingy3("blah") {}
|
626
|
+
end
|
627
|
+
expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy4
|
628
|
+
end
|
629
|
+
|
630
|
+
it "thingy4 does not work in a recipe" do
|
631
|
+
expect_converge do
|
632
|
+
thingy4("blah") {}
|
633
|
+
end.to raise_error(NoMethodError)
|
634
|
+
end
|
635
|
+
|
636
|
+
it "resource_matching_short_name returns Thingy4" do
|
637
|
+
expect(Chef::Resource.resource_matching_short_name(:thingy3)).to eq RecipeDSLSpecNamespace::Thingy4
|
638
|
+
end
|
639
|
+
end
|
640
|
+
end
|
641
|
+
|
642
|
+
end
|
643
|
+
|
644
|
+
context "when Thingy7 provides :thingy8" do
|
645
|
+
before(:each) do
|
646
|
+
|
647
|
+
class RecipeDSLSpecNamespace::Thingy7 < BaseThingy
|
648
|
+
resource_name :thingy7
|
649
|
+
provides :thingy8
|
650
|
+
end
|
651
|
+
|
652
|
+
end
|
653
|
+
|
654
|
+
context "and Thingy8 has resource_name :thingy8" do
|
655
|
+
before(:each) do
|
656
|
+
|
657
|
+
class RecipeDSLSpecNamespace::Thingy8 < BaseThingy
|
658
|
+
resource_name :thingy8
|
659
|
+
end
|
660
|
+
|
661
|
+
end
|
662
|
+
|
663
|
+
it "thingy7 works in a recipe and yields Thingy7" do
|
664
|
+
recipe = converge do
|
665
|
+
thingy7("blah") {}
|
666
|
+
end
|
667
|
+
expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy7
|
668
|
+
end
|
669
|
+
|
670
|
+
it "thingy8 works in a recipe and yields Thingy7 (last)" do
|
671
|
+
recipe = converge do
|
672
|
+
thingy8("blah") {}
|
673
|
+
end
|
674
|
+
expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy8
|
675
|
+
end
|
676
|
+
|
677
|
+
it "resource_matching_short_name returns Thingy8" do
|
678
|
+
expect(Chef::Resource.resource_matching_short_name(:thingy8)).to eq RecipeDSLSpecNamespace::Thingy8
|
679
|
+
end
|
680
|
+
end
|
681
|
+
end
|
682
|
+
|
683
|
+
context "when Thingy12 provides :thingy12, :twizzle and :twizzle2" do
|
684
|
+
before(:each) do
|
685
|
+
|
686
|
+
class RecipeDSLSpecNamespace::Thingy12 < BaseThingy
|
687
|
+
resource_name :thingy12
|
688
|
+
provides :twizzle
|
689
|
+
provides :twizzle2
|
690
|
+
end
|
691
|
+
|
692
|
+
end
|
693
|
+
|
694
|
+
it "thingy12 works in a recipe and yields Thingy12" do
|
695
|
+
expect_recipe do
|
696
|
+
thingy12("blah") {}
|
697
|
+
end.to emit_no_warnings_or_errors
|
698
|
+
expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy12
|
699
|
+
end
|
700
|
+
|
701
|
+
it "twizzle works in a recipe and yields Thingy12" do
|
702
|
+
expect_recipe do
|
703
|
+
twizzle("blah") {}
|
704
|
+
end.to emit_no_warnings_or_errors
|
705
|
+
expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy12
|
706
|
+
end
|
707
|
+
|
708
|
+
it "twizzle2 works in a recipe and yields Thingy12" do
|
709
|
+
expect_recipe do
|
710
|
+
twizzle2("blah") {}
|
711
|
+
end.to emit_no_warnings_or_errors
|
712
|
+
expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy12
|
713
|
+
end
|
714
|
+
end
|
715
|
+
|
716
|
+
context "with platform-specific resources 'my_super_thingy_foo' and 'my_super_thingy_bar'" do
|
717
|
+
before(:each) do
|
718
|
+
class MySuperThingyFoo < BaseThingy
|
719
|
+
resource_name :my_super_thingy_foo
|
720
|
+
provides :my_super_thingy, platform: "foo"
|
721
|
+
end
|
722
|
+
|
723
|
+
class MySuperThingyBar < BaseThingy
|
724
|
+
resource_name :my_super_thingy_bar
|
725
|
+
provides :my_super_thingy, platform: "bar"
|
726
|
+
end
|
727
|
+
end
|
728
|
+
|
729
|
+
it "A run with platform 'foo' uses MySuperThingyFoo" do
|
730
|
+
r = Cheffish::ChefRun.new(chef_config)
|
731
|
+
r.client.run_context.node.automatic["platform"] = "foo"
|
732
|
+
r.compile_recipe do
|
733
|
+
my_super_thingy("blah") {}
|
734
|
+
end
|
735
|
+
r.converge
|
736
|
+
expect(r).to emit_no_warnings_or_errors
|
737
|
+
expect(BaseThingy.created_resource).to eq MySuperThingyFoo
|
738
|
+
end
|
739
|
+
|
740
|
+
it "A run with platform 'bar' uses MySuperThingyBar" do
|
741
|
+
r = Cheffish::ChefRun.new(chef_config)
|
742
|
+
r.client.run_context.node.automatic["platform"] = "bar"
|
743
|
+
r.compile_recipe do
|
744
|
+
my_super_thingy("blah") {}
|
745
|
+
end
|
746
|
+
r.converge
|
747
|
+
expect(r).to emit_no_warnings_or_errors
|
748
|
+
expect(BaseThingy.created_resource).to eq MySuperThingyBar
|
749
|
+
end
|
750
|
+
|
751
|
+
it "A run with platform 'x' reports that my_super_thingy is not supported" do
|
752
|
+
r = Cheffish::ChefRun.new(chef_config)
|
753
|
+
r.client.run_context.node.automatic["platform"] = "x"
|
754
|
+
expect do
|
755
|
+
r.compile_recipe do
|
756
|
+
my_super_thingy("blah") {}
|
757
|
+
end
|
758
|
+
end.to raise_error(Chef::Exceptions::NoSuchResourceType)
|
759
|
+
end
|
760
|
+
end
|
761
|
+
|
762
|
+
context "when Thingy10 provides :thingy10" do
|
763
|
+
before(:each) do
|
764
|
+
class RecipeDSLSpecNamespace::Thingy10 < BaseThingy
|
765
|
+
resource_name :thingy10
|
766
|
+
end
|
767
|
+
end
|
768
|
+
|
769
|
+
it "declaring a resource providing the same :thingy10 with override: true does not produce a warning" do
|
770
|
+
expect(Chef::Log).not_to receive(:warn)
|
771
|
+
class RecipeDSLSpecNamespace::Thingy10AlternateProvider < BaseThingy
|
772
|
+
provides :thingy10, override: true
|
773
|
+
end
|
774
|
+
end
|
775
|
+
end
|
776
|
+
|
777
|
+
context "when Thingy11 provides :thingy11" do
|
778
|
+
before(:each) do
|
779
|
+
class RecipeDSLSpecNamespace::Thingy11 < BaseThingy
|
780
|
+
resource_name :thingy10
|
781
|
+
end
|
782
|
+
end
|
783
|
+
|
784
|
+
it "declaring a resource providing the same :thingy11 with os: 'linux' does not produce a warning" do
|
785
|
+
expect(Chef::Log).not_to receive(:warn)
|
786
|
+
class RecipeDSLSpecNamespace::Thingy11AlternateProvider < BaseThingy
|
787
|
+
provides :thingy11, os: "linux"
|
788
|
+
end
|
789
|
+
end
|
790
|
+
end
|
791
|
+
end
|
792
|
+
|
793
|
+
context "with a resource named 'B' with resource name :two_classes_one_dsl" do
|
794
|
+
let(:two_classes_one_dsl) { :"two_classes_one_dsl#{Namer.current_index}" }
|
795
|
+
let(:resource_class) do
|
796
|
+
result = Class.new(BaseThingy) do
|
797
|
+
def self.name
|
798
|
+
"B"
|
799
|
+
end
|
800
|
+
|
801
|
+
def self.to_s; name; end
|
802
|
+
|
803
|
+
def self.inspect; name.inspect; end
|
804
|
+
end
|
805
|
+
result.resource_name two_classes_one_dsl
|
806
|
+
result
|
807
|
+
end
|
808
|
+
before { resource_class } # pull on it so it gets defined before the recipe runs
|
809
|
+
|
810
|
+
context "and another resource named 'A' with resource_name :two_classes_one_dsl" do
|
811
|
+
let(:resource_class_a) do
|
812
|
+
result = Class.new(BaseThingy) do
|
813
|
+
def self.name
|
814
|
+
"A"
|
815
|
+
end
|
816
|
+
|
817
|
+
def self.to_s; name; end
|
818
|
+
|
819
|
+
def self.inspect; name.inspect; end
|
820
|
+
end
|
821
|
+
result.resource_name two_classes_one_dsl
|
822
|
+
result
|
823
|
+
end
|
824
|
+
before { resource_class_a } # pull on it so it gets defined before the recipe runs
|
825
|
+
|
826
|
+
it "two_classes_one_dsl resolves to A (alphabetically earliest)" do
|
827
|
+
temp_two_classes_one_dsl = two_classes_one_dsl
|
828
|
+
recipe = converge do
|
829
|
+
instance_eval("#{temp_two_classes_one_dsl} 'blah'")
|
830
|
+
end
|
831
|
+
expect(recipe.logged_warnings).to eq ""
|
832
|
+
expect(BaseThingy.created_resource).to eq resource_class_a
|
833
|
+
end
|
834
|
+
|
835
|
+
it "resource_matching_short_name returns B" do
|
836
|
+
expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class_a
|
837
|
+
end
|
838
|
+
end
|
839
|
+
|
840
|
+
context "and another resource named 'Z' with resource_name :two_classes_one_dsl" do
|
841
|
+
let(:resource_class_z) do
|
842
|
+
result = Class.new(BaseThingy) do
|
843
|
+
def self.name
|
844
|
+
"Z"
|
845
|
+
end
|
846
|
+
|
847
|
+
def self.to_s; name; end
|
848
|
+
|
849
|
+
def self.inspect; name.inspect; end
|
850
|
+
end
|
851
|
+
result.resource_name two_classes_one_dsl
|
852
|
+
result
|
853
|
+
end
|
854
|
+
before { resource_class_z } # pull on it so it gets defined before the recipe runs
|
855
|
+
|
856
|
+
it "two_classes_one_dsl resolves to Z (last)" do
|
857
|
+
temp_two_classes_one_dsl = two_classes_one_dsl
|
858
|
+
recipe = converge do
|
859
|
+
instance_eval("#{temp_two_classes_one_dsl} 'blah'")
|
860
|
+
end
|
861
|
+
expect(recipe.logged_warnings).to eq ""
|
862
|
+
expect(BaseThingy.created_resource).to eq resource_class_z
|
863
|
+
end
|
864
|
+
|
865
|
+
it "resource_matching_short_name returns Z" do
|
866
|
+
expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class_z
|
867
|
+
end
|
868
|
+
|
869
|
+
context "and a priority array [ Z, B ]" do
|
870
|
+
before do
|
871
|
+
Chef.set_resource_priority_array(two_classes_one_dsl, [ resource_class_z, resource_class ])
|
872
|
+
end
|
873
|
+
|
874
|
+
it "two_classes_one_dsl resolves to Z (respects the priority array)" do
|
875
|
+
temp_two_classes_one_dsl = two_classes_one_dsl
|
876
|
+
recipe = converge do
|
877
|
+
instance_eval("#{temp_two_classes_one_dsl} 'blah'")
|
878
|
+
end
|
879
|
+
expect(recipe.logged_warnings).to eq ""
|
880
|
+
expect(BaseThingy.created_resource).to eq resource_class_z
|
881
|
+
end
|
882
|
+
|
883
|
+
it "resource_matching_short_name returns Z" do
|
884
|
+
expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class_z
|
885
|
+
end
|
886
|
+
|
887
|
+
context "when Z provides(:two_classes_one_dsl) { false }" do
|
888
|
+
before do
|
889
|
+
resource_class_z.provides(two_classes_one_dsl) { false }
|
890
|
+
end
|
891
|
+
|
892
|
+
it "two_classes_one_dsl resolves to B (picks the next thing in the priority array)" do
|
893
|
+
temp_two_classes_one_dsl = two_classes_one_dsl
|
894
|
+
recipe = converge do
|
895
|
+
instance_eval("#{temp_two_classes_one_dsl} 'blah'")
|
896
|
+
end
|
897
|
+
expect(recipe.logged_warnings).to eq ""
|
898
|
+
expect(BaseThingy.created_resource).to eq resource_class
|
899
|
+
end
|
900
|
+
|
901
|
+
it "resource_matching_short_name returns B" do
|
902
|
+
expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class
|
903
|
+
end
|
904
|
+
end
|
905
|
+
end
|
906
|
+
|
907
|
+
context "and priority arrays [ B ] and [ Z ]" do
|
908
|
+
before do
|
909
|
+
Chef.set_resource_priority_array(two_classes_one_dsl, [ resource_class ])
|
910
|
+
Chef.set_resource_priority_array(two_classes_one_dsl, [ resource_class_z ])
|
911
|
+
end
|
912
|
+
|
913
|
+
it "two_classes_one_dsl resolves to Z (respects the most recent priority array)" do
|
914
|
+
temp_two_classes_one_dsl = two_classes_one_dsl
|
915
|
+
recipe = converge do
|
916
|
+
instance_eval("#{temp_two_classes_one_dsl} 'blah'")
|
917
|
+
end
|
918
|
+
expect(recipe.logged_warnings).to eq ""
|
919
|
+
expect(BaseThingy.created_resource).to eq resource_class_z
|
920
|
+
end
|
921
|
+
|
922
|
+
it "resource_matching_short_name returns Z" do
|
923
|
+
expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class_z
|
924
|
+
end
|
925
|
+
|
926
|
+
context "when Z provides(:two_classes_one_dsl) { false }" do
|
927
|
+
before do
|
928
|
+
resource_class_z.provides(two_classes_one_dsl) { false }
|
929
|
+
end
|
930
|
+
|
931
|
+
it "two_classes_one_dsl resolves to B (picks the first match from the other priority array)" do
|
932
|
+
temp_two_classes_one_dsl = two_classes_one_dsl
|
933
|
+
recipe = converge do
|
934
|
+
instance_eval("#{temp_two_classes_one_dsl} 'blah'")
|
935
|
+
end
|
936
|
+
expect(recipe.logged_warnings).to eq ""
|
937
|
+
expect(BaseThingy.created_resource).to eq resource_class
|
938
|
+
end
|
939
|
+
|
940
|
+
it "resource_matching_short_name returns B" do
|
941
|
+
expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class
|
942
|
+
end
|
943
|
+
end
|
944
|
+
end
|
945
|
+
|
946
|
+
context "and a priority array [ Z ]" do
|
947
|
+
before do
|
948
|
+
Chef.set_resource_priority_array(two_classes_one_dsl, [ resource_class_z ])
|
949
|
+
end
|
950
|
+
|
951
|
+
context "when Z provides(:two_classes_one_dsl) { false }" do
|
952
|
+
before do
|
953
|
+
resource_class_z.provides(two_classes_one_dsl) { false }
|
954
|
+
end
|
955
|
+
|
956
|
+
it "two_classes_one_dsl resolves to B (picks the first match outside the priority array)" do
|
957
|
+
temp_two_classes_one_dsl = two_classes_one_dsl
|
958
|
+
recipe = converge do
|
959
|
+
instance_eval("#{temp_two_classes_one_dsl} 'blah'")
|
960
|
+
end
|
961
|
+
expect(recipe.logged_warnings).to eq ""
|
962
|
+
expect(BaseThingy.created_resource).to eq resource_class
|
963
|
+
end
|
964
|
+
|
965
|
+
it "resource_matching_short_name returns B" do
|
966
|
+
expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class
|
967
|
+
end
|
968
|
+
end
|
969
|
+
end
|
970
|
+
|
971
|
+
end
|
972
|
+
|
973
|
+
context "and a provider named 'B' which provides :two_classes_one_dsl" do
|
974
|
+
before do
|
975
|
+
resource_class.send(:define_method, :provider) { nil }
|
976
|
+
end
|
977
|
+
|
978
|
+
let(:provider_class) do
|
979
|
+
result = Class.new(BaseThingy::Provider) do
|
980
|
+
def self.name
|
981
|
+
"B"
|
982
|
+
end
|
983
|
+
|
984
|
+
def self.to_s; name; end
|
985
|
+
|
986
|
+
def self.inspect; name.inspect; end
|
987
|
+
end
|
988
|
+
result.provides two_classes_one_dsl
|
989
|
+
result
|
990
|
+
end
|
991
|
+
before { provider_class } # pull on it so it gets defined before the recipe runs
|
992
|
+
|
993
|
+
context "and another provider named 'A'" do
|
994
|
+
let(:provider_class_a) do
|
995
|
+
result = Class.new(BaseThingy::Provider) do
|
996
|
+
def self.name
|
997
|
+
"A"
|
998
|
+
end
|
999
|
+
|
1000
|
+
def self.to_s; name; end
|
1001
|
+
|
1002
|
+
def self.inspect; name.inspect; end
|
1003
|
+
end
|
1004
|
+
result
|
1005
|
+
end
|
1006
|
+
context "which provides :two_classes_one_dsl" do
|
1007
|
+
before { provider_class_a.provides two_classes_one_dsl }
|
1008
|
+
|
1009
|
+
it "two_classes_one_dsl resolves to A (alphabetically earliest)" do
|
1010
|
+
temp_two_classes_one_dsl = two_classes_one_dsl
|
1011
|
+
recipe = converge do
|
1012
|
+
instance_eval("#{temp_two_classes_one_dsl} 'blah'")
|
1013
|
+
end
|
1014
|
+
expect(recipe.logged_warnings).to eq ""
|
1015
|
+
expect(BaseThingy.created_provider).to eq provider_class_a
|
1016
|
+
end
|
1017
|
+
end
|
1018
|
+
context "which provides(:two_classes_one_dsl) { false }" do
|
1019
|
+
before { provider_class_a.provides(two_classes_one_dsl) { false } }
|
1020
|
+
|
1021
|
+
it "two_classes_one_dsl resolves to B (since A declined)" do
|
1022
|
+
temp_two_classes_one_dsl = two_classes_one_dsl
|
1023
|
+
recipe = converge do
|
1024
|
+
instance_eval("#{temp_two_classes_one_dsl} 'blah'")
|
1025
|
+
end
|
1026
|
+
expect(recipe.logged_warnings).to eq ""
|
1027
|
+
expect(BaseThingy.created_provider).to eq provider_class
|
1028
|
+
end
|
1029
|
+
end
|
1030
|
+
end
|
1031
|
+
|
1032
|
+
context "and another provider named 'Z'" do
|
1033
|
+
let(:provider_class_z) do
|
1034
|
+
result = Class.new(BaseThingy::Provider) do
|
1035
|
+
def self.name
|
1036
|
+
"Z"
|
1037
|
+
end
|
1038
|
+
|
1039
|
+
def self.to_s; name; end
|
1040
|
+
|
1041
|
+
def self.inspect; name.inspect; end
|
1042
|
+
end
|
1043
|
+
result
|
1044
|
+
end
|
1045
|
+
before { provider_class_z } # pull on it so it gets defined before the recipe runs
|
1046
|
+
|
1047
|
+
context "which provides :two_classes_one_dsl" do
|
1048
|
+
before { provider_class_z.provides two_classes_one_dsl }
|
1049
|
+
|
1050
|
+
it "two_classes_one_dsl resolves to Z (last)" do
|
1051
|
+
temp_two_classes_one_dsl = two_classes_one_dsl
|
1052
|
+
recipe = converge do
|
1053
|
+
instance_eval("#{temp_two_classes_one_dsl} 'blah'")
|
1054
|
+
end
|
1055
|
+
expect(recipe.logged_warnings).to eq ""
|
1056
|
+
expect(BaseThingy.created_provider).to eq provider_class_z
|
1057
|
+
end
|
1058
|
+
|
1059
|
+
context "with a priority array [ Z, B ]" do
|
1060
|
+
before { Chef.set_provider_priority_array two_classes_one_dsl, [ provider_class_z, provider_class ] }
|
1061
|
+
|
1062
|
+
it "two_classes_one_dsl resolves to Z (respects the priority map)" do
|
1063
|
+
temp_two_classes_one_dsl = two_classes_one_dsl
|
1064
|
+
recipe = converge do
|
1065
|
+
instance_eval("#{temp_two_classes_one_dsl} 'blah'")
|
1066
|
+
end
|
1067
|
+
expect(recipe.logged_warnings).to eq ""
|
1068
|
+
expect(BaseThingy.created_provider).to eq provider_class_z
|
1069
|
+
end
|
1070
|
+
end
|
1071
|
+
end
|
1072
|
+
|
1073
|
+
context "which provides(:two_classes_one_dsl) { false }" do
|
1074
|
+
before { provider_class_z.provides(two_classes_one_dsl) { false } }
|
1075
|
+
|
1076
|
+
context "with a priority array [ Z, B ]" do
|
1077
|
+
before { Chef.set_provider_priority_array two_classes_one_dsl, [ provider_class_z, provider_class ] }
|
1078
|
+
|
1079
|
+
it "two_classes_one_dsl resolves to B (the next one in the priority map)" do
|
1080
|
+
temp_two_classes_one_dsl = two_classes_one_dsl
|
1081
|
+
recipe = converge do
|
1082
|
+
instance_eval("#{temp_two_classes_one_dsl} 'blah'")
|
1083
|
+
end
|
1084
|
+
expect(recipe.logged_warnings).to eq ""
|
1085
|
+
expect(BaseThingy.created_provider).to eq provider_class
|
1086
|
+
end
|
1087
|
+
end
|
1088
|
+
|
1089
|
+
context "with priority arrays [ B ] and [ Z ]" do
|
1090
|
+
before { Chef.set_provider_priority_array two_classes_one_dsl, [ provider_class_z ] }
|
1091
|
+
before { Chef.set_provider_priority_array two_classes_one_dsl, [ provider_class ] }
|
1092
|
+
|
1093
|
+
it "two_classes_one_dsl resolves to B (the one in the next priority map)" do
|
1094
|
+
temp_two_classes_one_dsl = two_classes_one_dsl
|
1095
|
+
recipe = converge do
|
1096
|
+
instance_eval("#{temp_two_classes_one_dsl} 'blah'")
|
1097
|
+
end
|
1098
|
+
expect(recipe.logged_warnings).to eq ""
|
1099
|
+
expect(BaseThingy.created_provider).to eq provider_class
|
1100
|
+
end
|
1101
|
+
end
|
1102
|
+
end
|
1103
|
+
end
|
1104
|
+
end
|
1105
|
+
|
1106
|
+
context "and another resource Blarghle with provides :two_classes_one_dsl, os: 'blarghle'" do
|
1107
|
+
let(:resource_class_blarghle) do
|
1108
|
+
result = Class.new(BaseThingy) do
|
1109
|
+
def self.name
|
1110
|
+
"Blarghle"
|
1111
|
+
end
|
1112
|
+
|
1113
|
+
def self.to_s; name; end
|
1114
|
+
|
1115
|
+
def self.inspect; name.inspect; end
|
1116
|
+
end
|
1117
|
+
result.resource_name two_classes_one_dsl
|
1118
|
+
result.provides two_classes_one_dsl, os: "blarghle"
|
1119
|
+
result
|
1120
|
+
end
|
1121
|
+
before { resource_class_blarghle } # pull on it so it gets defined before the recipe runs
|
1122
|
+
|
1123
|
+
it "on os = blarghle, two_classes_one_dsl resolves to Blarghle" do
|
1124
|
+
temp_two_classes_one_dsl = two_classes_one_dsl
|
1125
|
+
recipe = converge do
|
1126
|
+
# this is an ugly way to test, make Cheffish expose node attrs
|
1127
|
+
run_context.node.automatic[:os] = "blarghle"
|
1128
|
+
instance_eval("#{temp_two_classes_one_dsl} 'blah' do; end")
|
1129
|
+
end
|
1130
|
+
expect(recipe.logged_warnings).to eq ""
|
1131
|
+
expect(BaseThingy.created_resource).to eq resource_class_blarghle
|
1132
|
+
end
|
1133
|
+
|
1134
|
+
it "on os = linux, two_classes_one_dsl resolves to B" do
|
1135
|
+
temp_two_classes_one_dsl = two_classes_one_dsl
|
1136
|
+
recipe = converge do
|
1137
|
+
# this is an ugly way to test, make Cheffish expose node attrs
|
1138
|
+
run_context.node.automatic[:os] = "linux"
|
1139
|
+
instance_eval("#{temp_two_classes_one_dsl} 'blah' do; end")
|
1140
|
+
end
|
1141
|
+
expect(recipe.logged_warnings).to eq ""
|
1142
|
+
expect(BaseThingy.created_resource).to eq resource_class
|
1143
|
+
end
|
1144
|
+
end
|
1145
|
+
end
|
1146
|
+
|
1147
|
+
context "with a resource MyResource" do
|
1148
|
+
let(:resource_class) do
|
1149
|
+
Class.new(BaseThingy) do
|
1150
|
+
def self.called_provides
|
1151
|
+
@called_provides
|
1152
|
+
end
|
1153
|
+
|
1154
|
+
def to_s
|
1155
|
+
"MyResource"
|
1156
|
+
end
|
1157
|
+
end end
|
1158
|
+
let(:my_resource) { :"my_resource#{Namer.current_index}" }
|
1159
|
+
let(:blarghle_blarghle_little_star) { :"blarghle_blarghle_little_star#{Namer.current_index}" }
|
1160
|
+
|
1161
|
+
context "with resource_name :my_resource" do
|
1162
|
+
before do
|
1163
|
+
resource_class.resource_name my_resource
|
1164
|
+
end
|
1165
|
+
|
1166
|
+
context "with provides? returning true to my_resource" do
|
1167
|
+
before do
|
1168
|
+
temp_my_resource = my_resource
|
1169
|
+
resource_class.define_singleton_method(:provides?) do |node, resource_name|
|
1170
|
+
@called_provides = true
|
1171
|
+
resource_name == temp_my_resource
|
1172
|
+
end
|
1173
|
+
end
|
1174
|
+
|
1175
|
+
it "my_resource returns the resource and calls provides?, but does not emit a warning" do
|
1176
|
+
dsl_name = my_resource
|
1177
|
+
recipe = converge do
|
1178
|
+
instance_eval("#{dsl_name} 'foo'")
|
1179
|
+
end
|
1180
|
+
expect(recipe.logged_warnings).to eq ""
|
1181
|
+
expect(BaseThingy.created_resource).to eq resource_class
|
1182
|
+
expect(resource_class.called_provides).to be_truthy
|
1183
|
+
end
|
1184
|
+
end
|
1185
|
+
|
1186
|
+
context "and a provider" do
|
1187
|
+
let(:provider_class) do
|
1188
|
+
Class.new(BaseThingy::Provider) do
|
1189
|
+
def self.name
|
1190
|
+
"MyProvider"
|
1191
|
+
end
|
1192
|
+
|
1193
|
+
def self.to_s; name; end
|
1194
|
+
|
1195
|
+
def self.inspect; name.inspect; end
|
1196
|
+
|
1197
|
+
def self.called_provides
|
1198
|
+
@called_provides
|
1199
|
+
end
|
1200
|
+
end
|
1201
|
+
end
|
1202
|
+
|
1203
|
+
before do
|
1204
|
+
resource_class.send(:define_method, :provider) { nil }
|
1205
|
+
end
|
1206
|
+
|
1207
|
+
context "that provides :my_resource" do
|
1208
|
+
before do
|
1209
|
+
provider_class.provides my_resource
|
1210
|
+
end
|
1211
|
+
|
1212
|
+
context "with supports? returning true" do
|
1213
|
+
before do
|
1214
|
+
provider_class.define_singleton_method(:supports?) { |resource, action| true }
|
1215
|
+
end
|
1216
|
+
|
1217
|
+
it "my_resource runs the provider and does not emit a warning" do
|
1218
|
+
temp_my_resource = my_resource
|
1219
|
+
recipe = converge do
|
1220
|
+
instance_eval("#{temp_my_resource} 'foo'")
|
1221
|
+
end
|
1222
|
+
expect(recipe.logged_warnings).to eq ""
|
1223
|
+
expect(BaseThingy.created_provider).to eq provider_class
|
1224
|
+
end
|
1225
|
+
|
1226
|
+
context "and another provider supporting :my_resource with supports? false" do
|
1227
|
+
let(:provider_class2) do
|
1228
|
+
Class.new(BaseThingy::Provider) do
|
1229
|
+
def self.name
|
1230
|
+
"MyProvider2"
|
1231
|
+
end
|
1232
|
+
|
1233
|
+
def self.to_s; name; end
|
1234
|
+
|
1235
|
+
def self.inspect; name.inspect; end
|
1236
|
+
|
1237
|
+
def self.called_provides
|
1238
|
+
@called_provides
|
1239
|
+
end
|
1240
|
+
provides my_resource
|
1241
|
+
def self.supports?(resource, action)
|
1242
|
+
false
|
1243
|
+
end
|
1244
|
+
end
|
1245
|
+
end
|
1246
|
+
|
1247
|
+
it "my_resource runs the first provider" do
|
1248
|
+
temp_my_resource = my_resource
|
1249
|
+
recipe = converge do
|
1250
|
+
instance_eval("#{temp_my_resource} 'foo'")
|
1251
|
+
end
|
1252
|
+
expect(recipe.logged_warnings).to eq ""
|
1253
|
+
expect(BaseThingy.created_provider).to eq provider_class
|
1254
|
+
end
|
1255
|
+
end
|
1256
|
+
end
|
1257
|
+
|
1258
|
+
context "with supports? returning false" do
|
1259
|
+
before do
|
1260
|
+
provider_class.define_singleton_method(:supports?) { |resource, action| false }
|
1261
|
+
end
|
1262
|
+
|
1263
|
+
# TODO no warning? ick
|
1264
|
+
it "my_resource runs the provider anyway" do
|
1265
|
+
temp_my_resource = my_resource
|
1266
|
+
recipe = converge do
|
1267
|
+
instance_eval("#{temp_my_resource} 'foo'")
|
1268
|
+
end
|
1269
|
+
expect(recipe.logged_warnings).to eq ""
|
1270
|
+
expect(BaseThingy.created_provider).to eq provider_class
|
1271
|
+
end
|
1272
|
+
|
1273
|
+
context "and another provider supporting :my_resource with supports? true" do
|
1274
|
+
let(:provider_class2) do
|
1275
|
+
temp_my_resource = my_resource
|
1276
|
+
Class.new(BaseThingy::Provider) do
|
1277
|
+
def self.name
|
1278
|
+
"MyProvider2"
|
1279
|
+
end
|
1280
|
+
|
1281
|
+
def self.to_s; name; end
|
1282
|
+
|
1283
|
+
def self.inspect; name.inspect; end
|
1284
|
+
|
1285
|
+
def self.called_provides
|
1286
|
+
@called_provides
|
1287
|
+
end
|
1288
|
+
provides temp_my_resource
|
1289
|
+
def self.supports?(resource, action)
|
1290
|
+
true
|
1291
|
+
end
|
1292
|
+
end
|
1293
|
+
end
|
1294
|
+
before { provider_class2 } # make sure the provider class shows up
|
1295
|
+
|
1296
|
+
it "my_resource runs the other provider" do
|
1297
|
+
temp_my_resource = my_resource
|
1298
|
+
recipe = converge do
|
1299
|
+
instance_eval("#{temp_my_resource} 'foo'")
|
1300
|
+
end
|
1301
|
+
expect(recipe.logged_warnings).to eq ""
|
1302
|
+
expect(BaseThingy.created_provider).to eq provider_class2
|
1303
|
+
end
|
1304
|
+
end
|
1305
|
+
end
|
1306
|
+
end
|
1307
|
+
end
|
1308
|
+
end
|
1309
|
+
end
|
1310
|
+
|
1311
|
+
context "with UTF-8 provides" do
|
1312
|
+
before(:each) do
|
1313
|
+
class UTF8Thingy < BaseThingy
|
1314
|
+
resource_name :Straße
|
1315
|
+
provides :Straße
|
1316
|
+
end
|
1317
|
+
end
|
1318
|
+
|
1319
|
+
it "utf-8 dsl names work" do
|
1320
|
+
recipe = converge do
|
1321
|
+
Straße("blah") {}
|
1322
|
+
end
|
1323
|
+
expect(recipe.logged_warnings).to eq ""
|
1324
|
+
expect(BaseThingy.created_resource).to eq(UTF8Thingy)
|
1325
|
+
end
|
1326
|
+
end
|
1327
|
+
end
|
1328
|
+
|
1329
|
+
before(:all) { Namer.current_index = 0 }
|
1330
|
+
before { Namer.current_index += 1 }
|
1331
|
+
|
1332
|
+
context "with an LWRP that declares actions" do
|
1333
|
+
let(:resource_class) do
|
1334
|
+
Class.new(Chef::Resource::LWRPBase) do
|
1335
|
+
provides :"recipe_dsl_spec#{Namer.current_index}"
|
1336
|
+
actions :create
|
1337
|
+
end
|
1338
|
+
end
|
1339
|
+
let(:resource) do
|
1340
|
+
resource_class.new("blah", run_context)
|
1341
|
+
end
|
1342
|
+
it "The actions are part of actions along with :nothing" do
|
1343
|
+
expect(resource_class.actions).to eq [ :nothing, :create ]
|
1344
|
+
end
|
1345
|
+
it "The actions are part of allowed_actions along with :nothing" do
|
1346
|
+
expect(resource.allowed_actions).to eq [ :nothing, :create ]
|
1347
|
+
end
|
1348
|
+
|
1349
|
+
context "and a subclass that declares more actions" do
|
1350
|
+
let(:subresource_class) do
|
1351
|
+
Class.new(Chef::Resource::LWRPBase) do
|
1352
|
+
provides :"recipe_dsl_spec_sub#{Namer.current_index}"
|
1353
|
+
actions :delete
|
1354
|
+
end
|
1355
|
+
end
|
1356
|
+
let(:subresource) do
|
1357
|
+
subresource_class.new("subblah", run_context)
|
1358
|
+
end
|
1359
|
+
|
1360
|
+
it "The parent class actions are not part of actions" do
|
1361
|
+
expect(subresource_class.actions).to eq [ :nothing, :delete ]
|
1362
|
+
end
|
1363
|
+
it "The parent class actions are not part of allowed_actions" do
|
1364
|
+
expect(subresource.allowed_actions).to eq [ :nothing, :delete ]
|
1365
|
+
end
|
1366
|
+
it "The parent class actions do not change" do
|
1367
|
+
expect(resource_class.actions).to eq [ :nothing, :create ]
|
1368
|
+
expect(resource.allowed_actions).to eq [ :nothing, :create ]
|
1369
|
+
end
|
1370
|
+
end
|
1371
|
+
end
|
1372
|
+
|
1373
|
+
end
|