chef 12.8.1-universal-mingw32 → 12.9.38-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/CONTRIBUTING.md +208 -208
- data/Gemfile +54 -49
- data/LICENSE +201 -201
- data/README.md +139 -139
- data/Rakefile +87 -86
- data/VERSION +1 -1
- data/acceptance/.gitignore +2 -2
- data/acceptance/.shared/kitchen_acceptance/.kitchen.digitalocean.yml +33 -33
- data/acceptance/.shared/kitchen_acceptance/.kitchen.ec2.yml +292 -290
- data/acceptance/.shared/kitchen_acceptance/.kitchen.vagrant.yml +59 -59
- data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +51 -51
- data/acceptance/.shared/kitchen_acceptance/metadata.rb +1 -1
- data/acceptance/Gemfile +13 -14
- data/acceptance/README.md +132 -132
- data/acceptance/basics/.acceptance/acceptance-cookbook/.gitignore +2 -2
- data/acceptance/basics/.acceptance/acceptance-cookbook/metadata.rb +3 -3
- data/acceptance/basics/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -1
- data/acceptance/basics/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -1
- data/acceptance/basics/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -1
- data/acceptance/basics/.kitchen.yml +4 -4
- data/acceptance/basics/test/integration/chef-current-install/serverspec/chef_client_spec.rb +19 -19
- data/acceptance/basics/test/integration/chef-current-install/serverspec/spec_helper.rb +6 -6
- data/acceptance/fips/.acceptance/acceptance-cookbook/.gitignore +2 -2
- data/acceptance/fips/.acceptance/acceptance-cookbook/metadata.rb +2 -2
- data/acceptance/fips/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -1
- data/acceptance/fips/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -1
- data/acceptance/fips/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -1
- data/acceptance/fips/.kitchen.yml +4 -4
- data/acceptance/fips/test/integration/fips/serverspec/Gemfile +3 -3
- data/acceptance/fips/test/integration/fips/serverspec/fips_spec.rb +39 -39
- data/acceptance/omnitruck/.acceptance/acceptance-cookbook/.gitignore +2 -0
- data/acceptance/omnitruck/.acceptance/acceptance-cookbook/metadata.rb +1 -0
- data/acceptance/omnitruck/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -0
- data/acceptance/omnitruck/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -0
- data/acceptance/omnitruck/.acceptance/acceptance-cookbook/recipes/verify.rb +61 -0
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/.gitignore +2 -2
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/libraries/cookbook_kitchen.rb +43 -43
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/libraries/top_cookbooks.rb +45 -23
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/metadata.rb +3 -3
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -1
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -1
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -1
- data/acceptance/top-cookbooks/.gitignore +1 -1
- data/acceptance/top-cookbooks/.kitchen.chocolatey.yml +6 -0
- data/acceptance/top-cookbooks/.kitchen.docker.yml +12 -12
- data/acceptance/top-cookbooks/.kitchen.git.yml +11 -11
- data/acceptance/top-cookbooks/.kitchen.iis.yml +4 -0
- data/acceptance/top-cookbooks/.kitchen.learn-the-basics-rhel.yml +7 -7
- data/acceptance/top-cookbooks/.kitchen.learn-the-basics-ubuntu.yml +7 -7
- data/acceptance/top-cookbooks/.kitchen.learn-the-basics-windows.yml +7 -7
- data/acceptance/top-cookbooks/.kitchen.powershell.yml +4 -0
- data/acceptance/top-cookbooks/.kitchen.sql_server.yml +5 -0
- data/acceptance/top-cookbooks/.kitchen.winbox.yml +8 -0
- data/acceptance/top-cookbooks/.kitchen.windows.yml +38 -0
- data/acceptance/trivial/.acceptance/acceptance-cookbook/.gitignore +2 -2
- data/acceptance/trivial/.acceptance/acceptance-cookbook/metadata.rb +2 -2
- data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -1
- data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -1
- data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -1
- data/acceptance/trivial/.kitchen.yml +7 -7
- data/acceptance/trivial/test/integration/chef-current-install/inspec/chef_client_spec.rb +5 -5
- data/acceptance/windows-service/.acceptance/acceptance-cookbook/.gitignore +2 -2
- data/acceptance/windows-service/.acceptance/acceptance-cookbook/metadata.rb +2 -2
- data/acceptance/windows-service/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -1
- data/acceptance/windows-service/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -1
- data/acceptance/windows-service/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -1
- data/acceptance/windows-service/.kitchen.yml +7 -7
- data/acceptance/windows-service/test/integration/chef-windows-service/inspec/chef_windows_service_spec.rb +58 -58
- data/bin/chef-apply +25 -25
- data/bin/chef-client +26 -26
- data/bin/chef-service-manager +38 -38
- data/bin/chef-shell +34 -34
- data/bin/chef-solo +25 -25
- data/bin/chef-windows-service +35 -35
- data/bin/knife +25 -25
- data/chef-windows.gemspec +24 -24
- data/chef.gemspec +64 -63
- data/distro/common/html/_sources/ctl_chef_client.txt +35 -35
- data/distro/common/html/_sources/ctl_chef_server.txt +341 -341
- data/distro/common/html/_sources/ctl_chef_shell.txt +15 -15
- data/distro/common/html/_sources/ctl_chef_solo.txt +25 -25
- data/distro/common/html/_sources/index.txt +135 -135
- data/distro/common/html/_sources/knife.txt +74 -74
- data/distro/common/html/_sources/knife_bootstrap.txt +56 -56
- data/distro/common/html/_sources/knife_client.txt +150 -150
- data/distro/common/html/_sources/knife_common_options.txt +6 -6
- data/distro/common/html/_sources/knife_configure.txt +29 -29
- data/distro/common/html/_sources/knife_cookbook.txt +236 -236
- data/distro/common/html/_sources/knife_cookbook_site.txt +157 -157
- data/distro/common/html/_sources/knife_data_bag.txt +159 -159
- data/distro/common/html/_sources/knife_delete.txt +26 -26
- data/distro/common/html/_sources/knife_deps.txt +61 -61
- data/distro/common/html/_sources/knife_diff.txt +34 -34
- data/distro/common/html/_sources/knife_download.txt +44 -44
- data/distro/common/html/_sources/knife_edit.txt +26 -26
- data/distro/common/html/_sources/knife_environment.txt +158 -158
- data/distro/common/html/_sources/knife_exec.txt +47 -47
- data/distro/common/html/_sources/knife_index_rebuild.txt +20 -20
- data/distro/common/html/_sources/knife_list.txt +33 -33
- data/distro/common/html/_sources/knife_node.txt +250 -250
- data/distro/common/html/_sources/knife_raw.txt +35 -35
- data/distro/common/html/_sources/knife_recipe_list.txt +23 -23
- data/distro/common/html/_sources/knife_role.txt +157 -157
- data/distro/common/html/_sources/knife_search.txt +53 -53
- data/distro/common/html/_sources/knife_serve.txt +18 -18
- data/distro/common/html/_sources/knife_show.txt +26 -26
- data/distro/common/html/_sources/knife_ssh.txt +43 -43
- data/distro/common/html/_sources/knife_ssl_check.txt +41 -41
- data/distro/common/html/_sources/knife_ssl_fetch.txt +41 -41
- data/distro/common/html/_sources/knife_status.txt +37 -37
- data/distro/common/html/_sources/knife_tag.txt +69 -69
- data/distro/common/html/_sources/knife_upload.txt +49 -49
- data/distro/common/html/_sources/knife_user.txt +127 -127
- data/distro/common/html/_sources/knife_using.txt +43 -43
- data/distro/common/html/_sources/knife_xargs.txt +30 -30
- data/distro/common/html/_static/basic.css +536 -536
- data/distro/common/html/_static/doctools.js +238 -238
- data/distro/common/html/_static/guide.css +504 -504
- data/distro/common/html/_static/pygments.css +61 -61
- data/distro/common/html/_static/searchtools.js +621 -621
- data/distro/common/html/_static/underscore.js +31 -31
- data/distro/common/html/_static/websupport.js +808 -808
- data/distro/common/html/ctl_chef_client.html +269 -269
- data/distro/common/html/ctl_chef_server.html +727 -727
- data/distro/common/html/ctl_chef_shell.html +162 -162
- data/distro/common/html/ctl_chef_solo.html +193 -193
- data/distro/common/html/index.html +201 -201
- data/distro/common/html/knife.html +169 -169
- data/distro/common/html/knife_bootstrap.html +284 -284
- data/distro/common/html/knife_client.html +284 -284
- data/distro/common/html/knife_common_options.html +95 -95
- data/distro/common/html/knife_configure.html +104 -104
- data/distro/common/html/knife_cookbook.html +486 -486
- data/distro/common/html/knife_cookbook_site.html +375 -375
- data/distro/common/html/knife_data_bag.html +373 -373
- data/distro/common/html/knife_delete.html +92 -92
- data/distro/common/html/knife_deps.html +142 -142
- data/distro/common/html/knife_diff.html +122 -122
- data/distro/common/html/knife_download.html +144 -144
- data/distro/common/html/knife_edit.html +88 -88
- data/distro/common/html/knife_environment.html +325 -325
- data/distro/common/html/knife_exec.html +219 -219
- data/distro/common/html/knife_index_rebuild.html +82 -82
- data/distro/common/html/knife_list.html +113 -113
- data/distro/common/html/knife_node.html +457 -457
- data/distro/common/html/knife_raw.html +109 -109
- data/distro/common/html/knife_recipe_list.html +90 -90
- data/distro/common/html/knife_role.html +294 -294
- data/distro/common/html/knife_search.html +202 -202
- data/distro/common/html/knife_serve.html +78 -78
- data/distro/common/html/knife_show.html +103 -103
- data/distro/common/html/knife_ssh.html +176 -176
- data/distro/common/html/knife_ssl_check.html +150 -150
- data/distro/common/html/knife_ssl_fetch.html +150 -150
- data/distro/common/html/knife_status.html +143 -143
- data/distro/common/html/knife_tag.html +137 -137
- data/distro/common/html/knife_upload.html +152 -152
- data/distro/common/html/knife_user.html +241 -241
- data/distro/common/html/knife_using.html +209 -209
- data/distro/common/html/knife_xargs.html +121 -121
- data/distro/common/html/search.html +81 -81
- data/distro/common/man/man1/README.md +58 -58
- data/distro/common/man/man1/chef-shell.1 +194 -194
- data/distro/common/man/man1/knife-bootstrap.1 +215 -215
- data/distro/common/man/man1/knife-client.1 +443 -443
- data/distro/common/man/man1/knife-configure.1 +161 -161
- data/distro/common/man/man1/knife-cookbook-site.1 +552 -552
- data/distro/common/man/man1/knife-cookbook.1 +770 -770
- data/distro/common/man/man1/knife-data-bag.1 +617 -617
- data/distro/common/man/man1/knife-delete.1 +127 -127
- data/distro/common/man/man1/knife-deps.1 +246 -246
- data/distro/common/man/man1/knife-diff.1 +226 -226
- data/distro/common/man/man1/knife-download.1 +258 -258
- data/distro/common/man/man1/knife-edit.1 +121 -121
- data/distro/common/man/man1/knife-environment.1 +508 -508
- data/distro/common/man/man1/knife-exec.1 +362 -362
- data/distro/common/man/man1/knife-index-rebuild.1 +63 -63
- data/distro/common/man/man1/knife-list.1 +174 -174
- data/distro/common/man/man1/knife-node.1 +716 -716
- data/distro/common/man/man1/knife-raw.1 +172 -172
- data/distro/common/man/man1/knife-recipe-list.1 +85 -85
- data/distro/common/man/man1/knife-role.1 +426 -426
- data/distro/common/man/man1/knife-search.1 +359 -359
- data/distro/common/man/man1/knife-serve.1 +109 -109
- data/distro/common/man/man1/knife-show.1 +160 -160
- data/distro/common/man/man1/knife-ssh.1 +284 -284
- data/distro/common/man/man1/knife-ssl-check.1 +207 -207
- data/distro/common/man/man1/knife-ssl-fetch.1 +207 -207
- data/distro/common/man/man1/knife-status.1 +234 -234
- data/distro/common/man/man1/knife-tag.1 +189 -189
- data/distro/common/man/man1/knife-upload.1 +280 -280
- data/distro/common/man/man1/knife-user.1 +356 -356
- data/distro/common/man/man1/knife-xargs.1 +189 -189
- data/distro/common/man/man1/knife.1 +332 -332
- data/distro/common/man/man8/chef-apply.8 +86 -86
- data/distro/common/man/man8/chef-client.8 +398 -398
- data/distro/common/man/man8/chef-solo.8 +260 -260
- data/distro/common/markdown/README +3 -3
- data/distro/common/markdown/man1/chef-shell.mkd +195 -195
- data/distro/common/markdown/man1/knife-bootstrap.mkd +141 -141
- data/distro/common/markdown/man1/knife-client.mkd +103 -103
- data/distro/common/markdown/man1/knife-configure.mkd +70 -70
- data/distro/common/markdown/man1/knife-cookbook-site.mkd +123 -123
- data/distro/common/markdown/man1/knife-cookbook.mkd +263 -263
- data/distro/common/markdown/man1/knife-data-bag.mkd +121 -121
- data/distro/common/markdown/man1/knife-environment.mkd +151 -151
- data/distro/common/markdown/man1/knife-exec.mkd +42 -42
- data/distro/common/markdown/man1/knife-index.mkd +30 -30
- data/distro/common/markdown/man1/knife-node.mkd +130 -130
- data/distro/common/markdown/man1/knife-role.mkd +85 -85
- data/distro/common/markdown/man1/knife-search.mkd +180 -180
- data/distro/common/markdown/man1/knife-ssh.mkd +69 -69
- data/distro/common/markdown/man1/knife-status.mkd +36 -36
- data/distro/common/markdown/man1/knife-tag.mkd +39 -39
- data/distro/common/markdown/man1/knife.mkd +213 -213
- data/distro/common/markdown/man8/chef-client.mkd +75 -75
- data/distro/common/markdown/man8/chef-expander.mkd +81 -81
- data/distro/common/markdown/man8/chef-expanderctl.mkd +57 -57
- data/distro/common/markdown/man8/chef-server-webui.mkd +121 -121
- data/distro/common/markdown/man8/chef-server.mkd +120 -120
- data/distro/common/markdown/man8/chef-solo.mkd +107 -107
- data/distro/common/markdown/man8/chef-solr.mkd +89 -89
- data/distro/powershell/chef/chef.psm1 +327 -327
- data/ext/win32-eventlog/Rakefile +53 -53
- data/ext/win32-eventlog/chef-log.man +56 -56
- data/lib-backcompat/chef/chef_fs/file_system/acl_entry.rb +5 -5
- data/lib-backcompat/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +5 -5
- data/lib-backcompat/chef/chef_fs/file_system/chef_server_root_dir.rb +5 -5
- data/lib/chef.rb +35 -35
- data/lib/chef/api_client.rb +233 -233
- data/lib/chef/api_client/registration.rb +192 -192
- data/lib/chef/api_client_v1.rb +325 -325
- data/lib/chef/application.rb +357 -342
- data/lib/chef/application/apply.rb +221 -221
- data/lib/chef/application/client.rb +520 -513
- data/lib/chef/application/knife.rb +208 -208
- data/lib/chef/application/solo.rb +334 -334
- data/lib/chef/application/windows_service.rb +338 -338
- data/lib/chef/application/windows_service_manager.rb +202 -202
- data/lib/chef/applications.rb +4 -4
- data/lib/chef/audit/audit_event_proxy.rb +93 -93
- data/lib/chef/audit/audit_reporter.rb +172 -172
- data/lib/chef/audit/control_group_data.rb +139 -139
- 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/chef_class.rb +228 -228
- data/lib/chef/chef_fs.rb +59 -59
- data/lib/chef/chef_fs/chef_fs_data_store.rb +871 -871
- data/lib/chef/chef_fs/command_line.rb +285 -285
- data/lib/chef/chef_fs/config.rb +284 -283
- 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 +62 -62
- data/lib/chef/chef_fs/data_handler/data_handler_base.rb +204 -204
- 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 +429 -429
- data/lib/chef/chef_fs/file_system/already_exists_error.rb +28 -28
- data/lib/chef/chef_fs/file_system/base_fs_dir.rb +47 -47
- data/lib/chef/chef_fs/file_system/base_fs_object.rb +183 -183
- 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 +60 -60
- 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 +102 -102
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +222 -222
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +84 -84
- 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 +102 -102
- data/lib/chef/chef_fs/file_system/chef_server/data_bag_dir.rb +71 -71
- data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +69 -69
- data/lib/chef/chef_fs/file_system/chef_server/environments_dir.rb +57 -57
- data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +53 -53
- data/lib/chef/chef_fs/file_system/chef_server/org_entry.rb +31 -31
- data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +61 -61
- data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +60 -60
- 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 +160 -160
- data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +137 -137
- 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 +34 -34
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +178 -178
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +187 -187
- 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 +107 -107
- data/lib/chef/chef_fs/file_system/cookbook_frozen_error.rb +28 -28
- data/lib/chef/chef_fs/file_system/default_environment_cannot_be_modified_error.rb +32 -32
- data/lib/chef/chef_fs/file_system/file_system_error.rb +44 -44
- 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 +64 -64
- data/lib/chef/chef_fs/file_system/must_delete_recursively_error.rb +28 -28
- data/lib/chef/chef_fs/file_system/nonexistent_fs_object.rb +36 -36
- data/lib/chef/chef_fs/file_system/not_found_error.rb +28 -28
- data/lib/chef/chef_fs/file_system/operation_failed_error.rb +42 -42
- data/lib/chef/chef_fs/file_system/operation_not_allowed_error.rb +46 -46
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_acls_dir.rb +39 -39
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_client_keys_dir.rb +38 -38
- 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 +146 -146
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +176 -176
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_entry.rb +83 -83
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_policies_dir.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +214 -214
- 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/cookbook_artifacts_dir.rb +36 -36
- data/lib/chef/chef_fs/file_system/repository/cookbooks_dir.rb +52 -52
- 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 +114 -114
- data/lib/chef/chef_fs/file_system/repository/data_bags_dir.rb +39 -39
- data/lib/chef/chef_fs/file_system/repository/directory.rb +139 -139
- data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +117 -117
- data/lib/chef/chef_fs/file_system/repository/file_system_root_dir.rb +33 -33
- data/lib/chef/chef_fs/file_system/repository/versioned_cookbooks_dir.rb +34 -34
- data/lib/chef/chef_fs/knife.rb +161 -161
- data/lib/chef/chef_fs/parallelizer.rb +105 -105
- data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +35 -35
- data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +281 -281
- data/lib/chef/chef_fs/path_utils.rb +127 -127
- data/lib/chef/client.rb +966 -967
- data/lib/chef/config.rb +85 -85
- data/lib/chef/config_fetcher.rb +72 -72
- data/lib/chef/constants.rb +28 -28
- data/lib/chef/cookbook/chefignore.rb +74 -74
- data/lib/chef/cookbook/cookbook_collection.rb +63 -63
- data/lib/chef/cookbook/cookbook_version_loader.rb +352 -352
- data/lib/chef/cookbook/file_system_file_vendor.rb +59 -59
- data/lib/chef/cookbook/file_vendor.rb +71 -71
- data/lib/chef/cookbook/gem_installer.rb +83 -118
- data/lib/chef/cookbook/metadata.rb +904 -904
- data/lib/chef/cookbook/remote_file_vendor.rb +87 -87
- data/lib/chef/cookbook/synchronizer.rb +298 -298
- data/lib/chef/cookbook/syntax_check.rb +260 -260
- data/lib/chef/cookbook_loader.rb +200 -200
- data/lib/chef/cookbook_manifest.rb +290 -290
- data/lib/chef/cookbook_site_streaming_uploader.rb +243 -244
- data/lib/chef/cookbook_uploader.rb +157 -157
- data/lib/chef/cookbook_version.rb +637 -631
- data/lib/chef/daemon.rb +131 -131
- data/lib/chef/data_bag.rb +176 -176
- data/lib/chef/data_bag_item.rb +218 -218
- data/lib/chef/delayed_evaluator.rb +21 -21
- data/lib/chef/deprecation/mixin/template.rb +48 -48
- data/lib/chef/deprecation/provider/cookbook_file.rb +54 -54
- data/lib/chef/deprecation/provider/file.rb +198 -198
- data/lib/chef/deprecation/provider/remote_directory.rb +52 -52
- data/lib/chef/deprecation/provider/remote_file.rb +85 -85
- data/lib/chef/deprecation/provider/template.rb +63 -63
- data/lib/chef/deprecation/warnings.rb +37 -38
- data/lib/chef/digester.rb +74 -74
- data/lib/chef/dsl.rb +6 -6
- data/lib/chef/dsl/audit.rb +51 -51
- data/lib/chef/dsl/chef_provisioning.rb +57 -57
- data/lib/chef/dsl/cheffish.rb +64 -64
- data/lib/chef/dsl/core.rb +42 -0
- data/lib/chef/dsl/data_query.rb +89 -89
- data/lib/chef/dsl/declare_resource.rb +106 -108
- data/lib/chef/dsl/definitions.rb +43 -43
- data/lib/chef/dsl/include_attribute.rb +61 -61
- data/lib/chef/dsl/include_recipe.rb +44 -44
- data/lib/chef/dsl/method_missing.rb +75 -0
- data/lib/chef/dsl/platform_introspection.rb +254 -254
- data/lib/chef/dsl/powershell.rb +29 -29
- data/lib/chef/dsl/reboot_pending.rb +64 -64
- data/lib/chef/dsl/recipe.rb +89 -134
- data/lib/chef/dsl/registry_helper.rb +63 -63
- data/lib/chef/dsl/resources.rb +58 -58
- data/lib/chef/encrypted_data_bag_item.rb +155 -155
- 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 +326 -326
- data/lib/chef/event_dispatch/base.rb +426 -420
- 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 +504 -504
- 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 +335 -335
- data/lib/chef/file_cache.rb +221 -221
- data/lib/chef/file_content_management/content_base.rb +56 -56
- 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 +76 -76
- data/lib/chef/file_content_management/deploy/mv_windows.rb +103 -103
- data/lib/chef/file_content_management/tempfile.rb +97 -97
- data/lib/chef/formatters/base.rb +237 -237
- data/lib/chef/formatters/doc.rb +438 -422
- data/lib/chef/formatters/{error_descriptor.rb → error_description.rb} +69 -67
- data/lib/chef/formatters/error_inspectors.rb +19 -19
- data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +184 -184
- 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 +170 -170
- 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 +43 -43
- data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +138 -138
- data/lib/chef/handler.rb +235 -235
- data/lib/chef/handler/error_report.rb +33 -33
- data/lib/chef/handler/json_file.rb +63 -63
- data/lib/chef/http.rb +460 -430
- data/lib/chef/http/auth_credentials.rb +57 -57
- data/lib/chef/http/authenticator.rb +106 -106
- data/lib/chef/http/basic_client.rb +149 -169
- 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 +186 -186
- data/lib/chef/http/json_input.rb +73 -73
- data/lib/chef/http/json_output.rb +78 -78
- 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 +208 -207
- data/lib/chef/http/ssl_policies.rb +130 -130
- data/lib/chef/http/validate_content_length.rb +114 -115
- data/lib/chef/json_compat.rb +164 -164
- data/lib/chef/key.rb +273 -273
- data/lib/chef/knife.rb +587 -587
- data/lib/chef/knife/bootstrap.rb +480 -480
- 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 +236 -236
- data/lib/chef/knife/client_bulk_delete.rb +104 -104
- data/lib/chef/knife/client_create.rb +111 -111
- data/lib/chef/knife/client_delete.rb +60 -60
- data/lib/chef/knife/client_edit.rb +53 -53
- data/lib/chef/knife/client_key_create.rb +67 -67
- data/lib/chef/knife/client_key_delete.rb +76 -76
- data/lib/chef/knife/client_key_edit.rb +79 -79
- data/lib/chef/knife/client_key_list.rb +69 -69
- data/lib/chef/knife/client_key_show.rb +76 -76
- data/lib/chef/knife/client_list.rb +42 -42
- data/lib/chef/knife/client_reregister.rb +59 -59
- data/lib/chef/knife/client_show.rb +49 -49
- data/lib/chef/knife/configure.rb +171 -171
- data/lib/chef/knife/configure_client.rb +50 -50
- data/lib/chef/knife/cookbook_bulk_delete.rb +71 -71
- data/lib/chef/knife/cookbook_create.rb +458 -448
- data/lib/chef/knife/cookbook_delete.rb +151 -151
- data/lib/chef/knife/cookbook_download.rb +143 -143
- data/lib/chef/knife/cookbook_list.rb +47 -47
- data/lib/chef/knife/cookbook_metadata.rb +107 -108
- data/lib/chef/knife/cookbook_metadata_from_file.rb +44 -44
- data/lib/chef/knife/cookbook_show.rb +98 -98
- data/lib/chef/knife/cookbook_site_download.rb +109 -109
- data/lib/chef/knife/cookbook_site_install.rb +192 -192
- data/lib/chef/knife/cookbook_site_list.rb +58 -58
- data/lib/chef/knife/cookbook_site_search.rb +46 -46
- data/lib/chef/knife/cookbook_site_share.rb +169 -169
- data/lib/chef/knife/cookbook_site_show.rb +55 -55
- data/lib/chef/knife/cookbook_site_unshare.rb +56 -56
- data/lib/chef/knife/cookbook_site_vendor.rb +46 -46
- 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 +233 -233
- data/lib/chef/knife/core/cookbook_scm_repo.rb +159 -159
- data/lib/chef/knife/core/custom_manifest_loader.rb +69 -69
- data/lib/chef/knife/core/gem_glob_loader.rb +138 -138
- data/lib/chef/knife/core/generic_presenter.rb +222 -222
- 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 +159 -159
- data/lib/chef/knife/core/object_loader.rb +115 -115
- data/lib/chef/knife/core/status_presenter.rb +157 -157
- data/lib/chef/knife/core/subcommand_loader.rb +212 -212
- data/lib/chef/knife/core/text_formatter.rb +85 -85
- data/lib/chef/knife/core/ui.rb +284 -284
- data/lib/chef/knife/data_bag_create.rb +78 -78
- 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 +114 -114
- 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 +107 -107
- data/lib/chef/knife/deps.rb +140 -140
- data/lib/chef/knife/diff.rb +68 -68
- data/lib/chef/knife/download.rb +68 -68
- data/lib/chef/knife/edit.rb +72 -72
- data/lib/chef/knife/environment_compare.rb +127 -127
- data/lib/chef/knife/environment_create.rb +53 -53
- data/lib/chef/knife/environment_delete.rb +45 -45
- data/lib/chef/knife/environment_edit.rb +45 -45
- data/lib/chef/knife/environment_from_file.rb +82 -82
- data/lib/chef/knife/environment_list.rb +42 -42
- data/lib/chef/knife/environment_show.rb +48 -48
- data/lib/chef/knife/exec.rb +87 -87
- data/lib/chef/knife/help.rb +101 -101
- data/lib/chef/knife/help_topics.rb +4 -4
- data/lib/chef/knife/index_rebuild.rb +133 -133
- 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 +157 -157
- 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_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 +66 -66
- 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 +54 -54
- data/lib/chef/knife/raw.rb +103 -103
- 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 +86 -86
- 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 +59 -59
- 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 +86 -86
- data/lib/chef/knife/role_run_list_clear.rb +55 -55
- data/lib/chef/knife/role_run_list_remove.rb +57 -57
- data/lib/chef/knife/role_run_list_replace.rb +59 -59
- data/lib/chef/knife/role_run_list_set.rb +70 -70
- data/lib/chef/knife/role_show.rb +49 -49
- data/lib/chef/knife/search.rb +201 -201
- data/lib/chef/knife/serve.rb +48 -48
- data/lib/chef/knife/show.rb +56 -56
- data/lib/chef/knife/ssh.rb +582 -572
- data/lib/chef/knife/ssl_check.rb +282 -281
- data/lib/chef/knife/ssl_fetch.rb +157 -157
- data/lib/chef/knife/status.rb +110 -110
- 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 +70 -70
- data/lib/chef/knife/user_create.rb +150 -150
- data/lib/chef/knife/user_delete.rb +95 -95
- data/lib/chef/knife/user_edit.rb +81 -81
- data/lib/chef/knife/user_key_create.rb +69 -69
- data/lib/chef/knife/user_key_delete.rb +76 -76
- data/lib/chef/knife/user_key_edit.rb +79 -79
- data/lib/chef/knife/user_key_list.rb +69 -69
- data/lib/chef/knife/user_key_show.rb +76 -76
- data/lib/chef/knife/user_list.rb +45 -45
- data/lib/chef/knife/user_reregister.rb +89 -89
- data/lib/chef/knife/user_show.rb +78 -78
- data/lib/chef/knife/xargs.rb +266 -266
- data/lib/chef/local_mode.rb +128 -128
- data/lib/chef/log.rb +68 -68
- data/lib/chef/log/syslog.rb +45 -45
- data/lib/chef/log/winevt.rb +99 -99
- data/lib/chef/mash.rb +226 -226
- data/lib/chef/mixin/api_version_request_handling.rb +66 -66
- data/lib/chef/mixin/checksum.rb +32 -32
- data/lib/chef/mixin/command.rb +193 -193
- data/lib/chef/mixin/command/unix.rb +220 -220
- data/lib/chef/mixin/command/windows.rb +71 -71
- data/lib/chef/mixin/convert_to_class_name.rb +126 -126
- data/lib/chef/mixin/create_path.rb +73 -73
- data/lib/chef/mixin/deep_merge.rb +140 -140
- data/lib/chef/mixin/deprecation.rb +123 -123
- 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 +50 -50
- data/lib/chef/mixin/get_source_from_package.rb +47 -47
- data/lib/chef/mixin/homebrew_user.rb +68 -68
- data/lib/chef/mixin/language.rb +48 -48
- data/lib/chef/mixin/language_include_attribute.rb +34 -34
- data/lib/chef/mixin/language_include_recipe.rb +31 -31
- data/lib/chef/mixin/lazy_module_include.rb +77 -0
- data/lib/chef/mixin/params_validate.rb +489 -489
- data/lib/chef/mixin/path_sanity.rb +68 -68
- 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 +303 -303
- data/lib/chef/mixin/provides.rb +28 -28
- data/lib/chef/mixin/proxified_socket.rb +42 -38
- data/lib/chef/mixin/recipe_definition_dsl_core.rb +35 -35
- data/lib/chef/mixin/securable.rb +196 -196
- data/lib/chef/mixin/shell_out.rb +117 -117
- data/lib/chef/mixin/subclass_directive.rb +37 -37
- data/lib/chef/mixin/template.rb +262 -262
- data/lib/chef/mixin/unformatter.rb +32 -32
- data/lib/chef/mixin/uris.rb +43 -43
- data/lib/chef/mixin/which.rb +37 -37
- data/lib/chef/mixin/why_run.rb +331 -331
- data/lib/chef/mixin/wide_string.rb +72 -72
- data/lib/chef/mixin/windows_architecture_helper.rb +114 -114
- data/lib/chef/mixin/windows_env_helper.rb +67 -67
- data/lib/chef/mixin/xml_escape.rb +140 -140
- data/lib/chef/mixins.rb +13 -13
- data/lib/chef/monkey_patches/net-ssh-multi.rb +141 -140
- data/lib/chef/monkey_patches/net_http.rb +60 -60
- data/lib/chef/monkey_patches/webrick-utils.rb +51 -51
- data/lib/chef/monkey_patches/win32/registry.rb +75 -72
- data/lib/chef/monologger.rb +88 -88
- data/lib/chef/nil_argument.rb +3 -3
- data/lib/chef/node.rb +700 -700
- data/lib/chef/node/attribute.rb +586 -586
- data/lib/chef/node/attribute_collections.rb +323 -323
- data/lib/chef/node/immutable_collections.rb +219 -219
- data/lib/chef/node_map.rb +222 -222
- data/lib/chef/null_logger.rb +72 -72
- data/lib/chef/org.rb +149 -149
- data/lib/chef/platform.rb +30 -30
- data/lib/chef/platform/handler_map.rb +40 -40
- 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 +214 -214
- data/lib/chef/platform/provider_priority_map.rb +11 -11
- data/lib/chef/platform/query_helpers.rb +112 -112
- data/lib/chef/platform/rebooter.rb +54 -54
- 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 +278 -278
- data/lib/chef/policy_builder/policyfile.rb +523 -527
- data/lib/chef/property.rb +674 -673
- data/lib/chef/provider.rb +458 -461
- data/lib/chef/provider/apt_repository.rb +255 -0
- data/lib/chef/provider/apt_update.rb +80 -79
- data/lib/chef/provider/batch.rb +45 -45
- data/lib/chef/provider/breakpoint.rb +38 -38
- data/lib/chef/provider/cookbook_file.rb +53 -53
- data/lib/chef/provider/cookbook_file/content.rb +49 -49
- data/lib/chef/provider/cron.rb +263 -263
- 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/deploy.rb +476 -476
- data/lib/chef/provider/deploy/revision.rb +109 -109
- data/lib/chef/provider/deploy/timestamped.rb +34 -34
- data/lib/chef/provider/directory.rb +152 -152
- data/lib/chef/provider/dsc_resource.rb +197 -197
- data/lib/chef/provider/dsc_script.rb +185 -185
- data/lib/chef/provider/env.rb +169 -169
- data/lib/chef/provider/env/windows.rb +72 -72
- data/lib/chef/provider/erl_call.rb +108 -108
- data/lib/chef/provider/execute.rb +125 -125
- data/lib/chef/provider/file.rb +495 -495
- data/lib/chef/provider/file/content.rb +39 -39
- data/lib/chef/provider/git.rb +332 -332
- data/lib/chef/provider/group.rb +183 -183
- data/lib/chef/provider/group/aix.rb +86 -86
- data/lib/chef/provider/group/dscl.rb +170 -170
- data/lib/chef/provider/group/gpasswd.rb +58 -58
- data/lib/chef/provider/group/groupadd.rb +137 -137
- data/lib/chef/provider/group/groupmod.rb +128 -128
- data/lib/chef/provider/group/pw.rb +140 -140
- data/lib/chef/provider/group/suse.rb +64 -62
- data/lib/chef/provider/group/usermod.rb +91 -91
- data/lib/chef/provider/group/windows.rb +98 -98
- data/lib/chef/provider/http_request.rb +122 -122
- data/lib/chef/provider/ifconfig.rb +226 -226
- data/lib/chef/provider/ifconfig/aix.rb +99 -99
- data/lib/chef/provider/ifconfig/debian.rb +84 -84
- data/lib/chef/provider/ifconfig/redhat.rb +48 -48
- data/lib/chef/provider/launchd.rb +208 -208
- data/lib/chef/provider/link.rb +159 -159
- data/lib/chef/provider/log.rb +57 -57
- data/lib/chef/provider/lwrp_base.rb +99 -99
- data/lib/chef/provider/mdadm.rb +92 -92
- data/lib/chef/provider/mount.rb +169 -173
- data/lib/chef/provider/mount/aix.rb +180 -180
- data/lib/chef/provider/mount/mount.rb +270 -270
- data/lib/chef/provider/mount/solaris.rb +271 -271
- data/lib/chef/provider/mount/windows.rb +92 -86
- data/lib/chef/provider/noop.rb +37 -0
- data/lib/chef/provider/ohai.rb +49 -49
- data/lib/chef/provider/osx_profile.rb +256 -256
- data/lib/chef/provider/package.rb +565 -565
- data/lib/chef/provider/package/aix.rb +136 -136
- data/lib/chef/provider/package/apt.rb +185 -185
- data/lib/chef/provider/package/chocolatey.rb +275 -275
- data/lib/chef/provider/package/dpkg.rb +226 -226
- data/lib/chef/provider/package/easy_install.rb +133 -133
- 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 +78 -78
- data/lib/chef/provider/package/freebsd/port.rb +60 -60
- data/lib/chef/provider/package/homebrew.rb +137 -137
- data/lib/chef/provider/package/ips.rb +91 -91
- data/lib/chef/provider/package/macports.rb +101 -101
- data/lib/chef/provider/package/openbsd.rb +136 -136
- data/lib/chef/provider/package/pacman.rb +104 -104
- data/lib/chef/provider/package/paludis.rb +86 -86
- data/lib/chef/provider/package/portage.rb +140 -140
- data/lib/chef/provider/package/rpm.rb +123 -123
- data/lib/chef/provider/package/rubygems.rb +586 -586
- data/lib/chef/provider/package/smartos.rb +92 -92
- data/lib/chef/provider/package/solaris.rb +138 -138
- data/lib/chef/provider/package/windows.rb +269 -269
- data/lib/chef/provider/package/windows/exe.rb +117 -117
- data/lib/chef/provider/package/windows/msi.rb +93 -93
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +89 -89
- data/lib/chef/provider/package/yum-dump.py +307 -307
- data/lib/chef/provider/package/yum.rb +1421 -1421
- data/lib/chef/provider/package/zypper.rb +143 -143
- data/lib/chef/provider/powershell_script.rb +215 -215
- data/lib/chef/provider/reboot.rb +70 -70
- data/lib/chef/provider/registry_key.rb +155 -155
- data/lib/chef/provider/remote_directory.rb +281 -281
- data/lib/chef/provider/remote_file.rb +53 -53
- 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 +57 -55
- data/lib/chef/provider/remote_file/ftp.rb +172 -183
- data/lib/chef/provider/remote_file/http.rb +135 -117
- data/lib/chef/provider/remote_file/local_file.rb +60 -60
- data/lib/chef/provider/remote_file/network_file.rb +48 -48
- data/lib/chef/provider/remote_file/sftp.rb +105 -0
- data/lib/chef/provider/resource_update.rb +52 -52
- data/lib/chef/provider/route.rb +229 -229
- data/lib/chef/provider/ruby_block.rb +44 -44
- data/lib/chef/provider/script.rb +85 -85
- data/lib/chef/provider/service.rb +259 -250
- data/lib/chef/provider/service/aix.rb +129 -129
- 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 +182 -182
- data/lib/chef/provider/service/freebsd.rb +195 -195
- data/lib/chef/provider/service/gentoo.rb +71 -71
- data/lib/chef/provider/service/init.rb +94 -94
- data/lib/chef/provider/service/insserv.rb +59 -59
- data/lib/chef/provider/service/invokercd.rb +41 -41
- data/lib/chef/provider/service/macosx.rb +250 -250
- data/lib/chef/provider/service/openbsd.rb +217 -217
- data/lib/chef/provider/service/redhat.rb +126 -120
- data/lib/chef/provider/service/simple.rb +175 -175
- data/lib/chef/provider/service/solaris.rb +122 -117
- data/lib/chef/provider/service/systemd.rb +188 -155
- data/lib/chef/provider/service/upstart.rb +242 -242
- data/lib/chef/provider/service/windows.rb +313 -313
- data/lib/chef/provider/subversion.rb +233 -221
- data/lib/chef/provider/template.rb +65 -65
- data/lib/chef/provider/template/content.rb +70 -70
- data/lib/chef/provider/template_finder.rb +62 -62
- data/lib/chef/provider/user.rb +211 -211
- data/lib/chef/provider/user/aix.rb +97 -97
- data/lib/chef/provider/user/dscl.rb +710 -710
- data/lib/chef/provider/user/pw.rb +114 -114
- data/lib/chef/provider/user/solaris.rb +121 -121
- data/lib/chef/provider/user/useradd.rb +163 -163
- data/lib/chef/provider/user/windows.rb +128 -128
- data/lib/chef/provider/whyrun_safe_ruby_block.rb +32 -32
- data/lib/chef/provider/windows_script.rb +72 -72
- data/lib/chef/provider_resolver.rb +170 -170
- data/lib/chef/providers.rb +145 -142
- data/lib/chef/recipe.rb +118 -119
- data/lib/chef/request_id.rb +37 -37
- data/lib/chef/reserved_names.rb +9 -9
- data/lib/chef/resource.rb +1581 -1581
- data/lib/chef/resource/action_class.rb +90 -87
- data/lib/chef/resource/apt_package.rb +32 -32
- data/lib/chef/resource/apt_repository.rb +47 -0
- data/lib/chef/resource/apt_update.rb +33 -33
- data/lib/chef/resource/bash.rb +33 -33
- data/lib/chef/resource/batch.rb +33 -33
- data/lib/chef/resource/bff_package.rb +27 -27
- data/lib/chef/resource/breakpoint.rb +32 -32
- data/lib/chef/resource/chef_gem.rb +51 -51
- data/lib/chef/resource/chocolatey_package.rb +39 -39
- data/lib/chef/resource/conditional.rb +127 -127
- data/lib/chef/resource/conditional_action_not_nothing.rb +48 -48
- data/lib/chef/resource/cookbook_file.rb +49 -49
- data/lib/chef/resource/cron.rb +216 -216
- data/lib/chef/resource/csh.rb +33 -33
- data/lib/chef/resource/deploy.rb +443 -443
- data/lib/chef/resource/deploy_revision.rb +31 -31
- data/lib/chef/resource/directory.rb +62 -62
- data/lib/chef/resource/dpkg_package.rb +30 -30
- data/lib/chef/resource/dsc_resource.rb +121 -121
- data/lib/chef/resource/dsc_script.rb +140 -140
- data/lib/chef/resource/easy_install_package.rb +32 -32
- data/lib/chef/resource/env.rb +65 -65
- data/lib/chef/resource/erl_call.rb +85 -85
- data/lib/chef/resource/execute.rb +172 -172
- data/lib/chef/resource/file.rb +83 -83
- data/lib/chef/resource/file/verification.rb +128 -128
- data/lib/chef/resource/freebsd_package.rb +62 -62
- data/lib/chef/resource/gem_package.rb +41 -41
- data/lib/chef/resource/git.rb +44 -44
- data/lib/chef/resource/group.rb +102 -102
- data/lib/chef/resource/homebrew_package.rb +34 -34
- data/lib/chef/resource/http_request.rb +66 -66
- data/lib/chef/resource/ifconfig.rb +147 -147
- data/lib/chef/resource/ips_package.rb +34 -34
- data/lib/chef/resource/ksh.rb +32 -32
- data/lib/chef/resource/launchd.rb +104 -104
- data/lib/chef/resource/link.rb +107 -107
- data/lib/chef/resource/log.rb +76 -76
- data/lib/chef/resource/lwrp_base.rb +124 -124
- data/lib/chef/resource/macosx_service.rb +58 -58
- data/lib/chef/resource/macports_package.rb +27 -27
- data/lib/chef/resource/mdadm.rb +103 -103
- data/lib/chef/resource/mount.rb +187 -187
- data/lib/chef/resource/ohai.rb +53 -53
- data/lib/chef/resource/openbsd_package.rb +35 -35
- data/lib/chef/resource/osx_profile.rb +74 -74
- data/lib/chef/resource/package.rb +47 -47
- data/lib/chef/resource/pacman_package.rb +28 -28
- data/lib/chef/resource/paludis_package.rb +33 -33
- data/lib/chef/resource/perl.rb +32 -32
- data/lib/chef/resource/portage_package.rb +32 -32
- data/lib/chef/resource/powershell_script.rb +50 -50
- data/lib/chef/resource/python.rb +31 -31
- data/lib/chef/resource/reboot.rb +48 -48
- data/lib/chef/resource/registry_key.rb +144 -144
- data/lib/chef/resource/remote_directory.rb +122 -122
- data/lib/chef/resource/remote_file.rb +158 -149
- data/lib/chef/resource/resource_notification.rb +122 -122
- data/lib/chef/resource/route.rb +137 -137
- data/lib/chef/resource/rpm_package.rb +32 -32
- data/lib/chef/resource/ruby.rb +31 -31
- data/lib/chef/resource/ruby_block.rb +53 -53
- data/lib/chef/resource/scm.rb +185 -185
- data/lib/chef/resource/script.rb +74 -74
- data/lib/chef/resource/service.rb +217 -208
- data/lib/chef/resource/smartos_package.rb +29 -29
- data/lib/chef/resource/solaris_package.rb +31 -31
- data/lib/chef/resource/subversion.rb +44 -44
- data/lib/chef/resource/template.rb +215 -215
- data/lib/chef/resource/timestamped_deploy.rb +26 -26
- data/lib/chef/resource/user.rb +160 -160
- data/lib/chef/resource/whyrun_safe_ruby_block.rb +24 -24
- data/lib/chef/resource/windows_package.rb +55 -55
- data/lib/chef/resource/windows_script.rb +65 -65
- data/lib/chef/resource/windows_service.rb +71 -71
- data/lib/chef/resource/yum_package.rb +47 -47
- data/lib/chef/resource/zypper_package.rb +28 -28
- data/lib/chef/resource_builder.rb +151 -151
- data/lib/chef/resource_collection.rb +131 -89
- data/lib/chef/resource_collection/resource_collection_serialization.rb +59 -59
- data/lib/chef/resource_collection/resource_list.rb +90 -90
- data/lib/chef/resource_collection/resource_set.rb +170 -170
- data/lib/chef/resource_collection/stepable_iterator.rb +124 -124
- data/lib/chef/resource_definition.rb +68 -68
- data/lib/chef/resource_definition_list.rb +38 -38
- data/lib/chef/resource_reporter.rb +327 -327
- data/lib/chef/resource_resolver.rb +185 -185
- data/lib/chef/resources.rb +89 -88
- data/lib/chef/rest.rb +209 -209
- data/lib/chef/role.rb +280 -280
- data/lib/chef/run_context.rb +694 -670
- data/lib/chef/run_context/cookbook_compiler.rb +290 -289
- data/lib/chef/run_list.rb +168 -168
- data/lib/chef/run_list/run_list_expansion.rb +234 -234
- data/lib/chef/run_list/run_list_item.rb +98 -98
- data/lib/chef/run_list/versioned_recipe_list.rb +102 -102
- data/lib/chef/run_lock.rb +197 -197
- data/lib/chef/run_status.rb +125 -125
- data/lib/chef/runner.rb +143 -141
- data/lib/chef/sandbox.rb +20 -20
- data/lib/chef/scan_access_control.rb +138 -138
- data/lib/chef/search/query.rb +180 -180
- data/lib/chef/server_api.rb +78 -78
- data/lib/chef/shell.rb +327 -327
- data/lib/chef/shell/ext.rb +593 -593
- data/lib/chef/shell/model_wrapper.rb +120 -120
- data/lib/chef/shell/shell_session.rb +299 -299
- data/lib/chef/shell_out.rb +13 -13
- data/lib/chef/tasks/chef_repo.rake +200 -200
- data/lib/chef/user.rb +199 -199
- data/lib/chef/user_v1.rb +330 -330
- 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 +137 -137
- data/lib/chef/util/dsc/local_configuration_manager.rb +141 -141
- 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 +170 -170
- 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 +92 -92
- data/lib/chef/util/threaded_job_queue.rb +61 -61
- data/lib/chef/util/windows.rb +24 -24
- data/lib/chef/util/windows/net_group.rb +84 -84
- data/lib/chef/util/windows/net_use.rb +85 -85
- data/lib/chef/util/windows/net_user.rb +170 -170
- data/lib/chef/util/windows/volume.rb +59 -59
- data/lib/chef/version.rb +34 -34
- data/lib/chef/version/platform.rb +44 -44
- data/lib/chef/version_class.rb +70 -70
- data/lib/chef/version_constraint.rb +118 -118
- data/lib/chef/version_constraint/platform.rb +26 -26
- data/lib/chef/whitelist.rb +86 -86
- data/lib/chef/win32/api.rb +374 -374
- 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 +625 -625
- 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 +312 -312
- 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 +460 -460
- 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 +218 -218
- 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 +311 -311
- data/lib/chef/win32/process.rb +97 -97
- data/lib/chef/win32/registry.rb +374 -372
- data/lib/chef/win32/security.rb +665 -665
- 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 +304 -304
- data/lib/chef/win32/security/token.rb +72 -72
- data/lib/chef/win32/system.rb +62 -62
- data/lib/chef/win32/unicode.rb +60 -60
- data/lib/chef/win32/version.rb +158 -158
- data/lib/chef/workstation_config_loader.rb +23 -23
- 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/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/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/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_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 +26 -26
- 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/foo.rb +4 -4
- 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/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/nested.json +2 -2
- 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/recipes/test.rb +7 -7
- data/spec/data/run_context/cookbooks/circular-dep1/attributes/default.rb +4 -4
- 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 +3 -3
- 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 +3 -3
- 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 +3 -3
- 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 +3 -3
- 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 +3 -3
- 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 +3 -3
- 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/search_queries_to_transform.txt +98 -98
- data/spec/data/shef-config.rb +10 -10
- 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/trusted_certs/example.crt +22 -22
- 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/functional/application_spec.rb +58 -58
- data/spec/functional/assets/chefinittest +34 -34
- data/spec/functional/assets/testchefsubsys +10 -10
- 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 +101 -101
- data/spec/functional/file_content_management/deploy_strategies_spec.rb +229 -229
- data/spec/functional/http/simple_spec.rb +140 -140
- data/spec/functional/knife/configure_spec.rb +33 -33
- data/spec/functional/knife/cookbook_delete_spec.rb +167 -167
- 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 +284 -284
- data/spec/functional/mixin/powershell_out_spec.rb +43 -43
- data/spec/functional/mixin/shell_out_spec.rb +48 -48
- 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 +105 -105
- data/spec/functional/resource/aix_service_spec.rb +138 -138
- data/spec/functional/resource/aixinit_service_spec.rb +211 -211
- data/spec/functional/resource/base.rb +28 -28
- data/spec/functional/resource/bash_spec.rb +88 -88
- data/spec/functional/resource/batch_spec.rb +30 -30
- data/spec/functional/resource/bff_spec.rb +120 -120
- data/spec/functional/resource/chocolatey_package_spec.rb +130 -130
- data/spec/functional/resource/cookbook_file_spec.rb +81 -81
- data/spec/functional/resource/cron_spec.rb +172 -172
- data/spec/functional/resource/deploy_revision_spec.rb +881 -881
- data/spec/functional/resource/directory_spec.rb +43 -43
- 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 +479 -479
- data/spec/functional/resource/env_spec.rb +192 -192
- data/spec/functional/resource/execute_spec.rb +154 -154
- data/spec/functional/resource/file_spec.rb +167 -167
- data/spec/functional/resource/git_spec.rb +259 -259
- data/spec/functional/resource/group_spec.rb +461 -461
- data/spec/functional/resource/ifconfig_spec.rb +165 -165
- data/spec/functional/resource/link_spec.rb +613 -613
- data/spec/functional/resource/mount_spec.rb +203 -203
- data/spec/functional/resource/ohai_spec.rb +62 -62
- data/spec/functional/resource/package_spec.rb +386 -386
- data/spec/functional/resource/powershell_script_spec.rb +601 -601
- data/spec/functional/resource/reboot_spec.rb +103 -103
- data/spec/functional/resource/registry_spec.rb +560 -560
- data/spec/functional/resource/remote_directory_spec.rb +220 -220
- data/spec/functional/resource/remote_file_spec.rb +240 -240
- data/spec/functional/resource/rpm_spec.rb +123 -123
- data/spec/functional/resource/template_spec.rb +212 -212
- data/spec/functional/resource/user/dscl_spec.rb +198 -198
- data/spec/functional/resource/user/useradd_spec.rb +692 -692
- data/spec/functional/resource/user/windows_spec.rb +133 -133
- data/spec/functional/resource/windows_package_spec.rb +168 -168
- data/spec/functional/resource/windows_service_spec.rb +102 -102
- data/spec/functional/rest_spec.rb +95 -95
- data/spec/functional/run_lock_spec.rb +466 -466
- data/spec/functional/shell_spec.rb +148 -148
- data/spec/functional/tiny_server_spec.rb +78 -78
- 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 +623 -623
- data/spec/functional/win32/security_spec.rb +100 -100
- 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 +117 -117
- data/spec/integration/client/client_spec.rb +500 -500
- 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 +890 -890
- data/spec/integration/knife/chef_repository_file_system_spec.rb +296 -292
- data/spec/integration/knife/chefignore_spec.rb +300 -300
- data/spec/integration/knife/common_options_spec.rb +155 -155
- data/spec/integration/knife/cookbook_api_ipv6_spec.rb +112 -112
- data/spec/integration/knife/delete_spec.rb +1017 -1017
- data/spec/integration/knife/deps_spec.rb +706 -706
- data/spec/integration/knife/diff_spec.rb +602 -602
- data/spec/integration/knife/download_spec.rb +1314 -1314
- data/spec/integration/knife/list_spec.rb +1067 -1067
- data/spec/integration/knife/raw_spec.rb +242 -242
- data/spec/integration/knife/redirection_spec.rb +52 -52
- data/spec/integration/knife/serve_spec.rb +57 -57
- data/spec/integration/knife/show_spec.rb +167 -167
- data/spec/integration/knife/upload_spec.rb +1529 -1529
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +175 -148
- data/spec/integration/recipes/lwrp_spec.rb +53 -53
- data/spec/integration/recipes/noop_resource_spec.rb +24 -0
- data/spec/integration/recipes/notifies_spec.rb +334 -0
- data/spec/integration/recipes/provider_choice.rb +37 -37
- data/spec/integration/recipes/recipe_dsl_spec.rb +1519 -1519
- data/spec/integration/recipes/remote_directory.rb +74 -74
- data/spec/integration/recipes/resource_action_spec.rb +569 -569
- data/spec/integration/recipes/resource_converge_if_changed_spec.rb +496 -496
- data/spec/integration/recipes/resource_load_spec.rb +208 -208
- data/spec/integration/solo/solo_spec.rb +176 -176
- data/spec/rcov.opts +2 -2
- data/spec/scripts/ssl-serve.rb +47 -47
- data/spec/spec_helper.rb +248 -248
- 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/chef_helpers.rb +95 -95
- 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 +41 -41
- data/spec/support/lib/chef/resource/cat.rb +38 -38
- data/spec/support/lib/chef/resource/one_two_three_four.rb +37 -37
- data/spec/support/lib/chef/resource/openldap_includer.rb +26 -26
- data/spec/support/lib/chef/resource/with_state.rb +28 -28
- data/spec/support/lib/chef/resource/zen_follower.rb +35 -35
- data/spec/support/lib/chef/resource/zen_master.rb +41 -41
- 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 +214 -214
- data/spec/support/platforms/prof/gc.rb +53 -53
- 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 +285 -285
- 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 +53 -53
- data/spec/support/shared/functional/diff_disabled.rb +10 -10
- data/spec/support/shared/functional/directory_resource.rb +176 -176
- data/spec/support/shared/functional/file_resource.rb +1049 -1049
- 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 +547 -547
- data/spec/support/shared/functional/securable_resource_with_reporting.rb +394 -394
- data/spec/support/shared/functional/win32_service.rb +59 -59
- data/spec/support/shared/functional/windows_script.rb +202 -202
- data/spec/support/shared/integration/app_server_support.rb +42 -42
- data/spec/support/shared/integration/integration_helper.rb +154 -154
- data/spec/support/shared/integration/knife_support.rb +173 -173
- 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 +70 -70
- data/spec/support/shared/unit/execute_resource.rb +133 -133
- 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 +835 -835
- data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +433 -433
- data/spec/support/shared/unit/resource/static_provider_resolution.rb +63 -63
- data/spec/support/shared/unit/script_resource.rb +98 -98
- 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 +207 -207
- 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 +110 -110
- data/spec/unit/application/client_spec.rb +495 -435
- data/spec/unit/application/knife_spec.rb +229 -229
- data/spec/unit/application/solo_spec.rb +170 -170
- data/spec/unit/application_spec.rb +411 -384
- data/spec/unit/audit/audit_event_proxy_spec.rb +311 -311
- data/spec/unit/audit/audit_reporter_spec.rb +430 -430
- data/spec/unit/audit/control_group_data_spec.rb +477 -477
- 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 +110 -110
- data/spec/unit/chef_fs/config_spec.rb +106 -106
- 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_spec.rb +148 -148
- data/spec/unit/chef_fs/parallelizer.rb +479 -479
- 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 +544 -544
- 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 +198 -198
- data/spec/unit/cookbook/file_vendor_spec.rb +97 -97
- data/spec/unit/cookbook/metadata_spec.rb +952 -952
- data/spec/unit/cookbook/synchronizer_spec.rb +520 -520
- data/spec/unit/cookbook/syntax_check_spec.rb +219 -219
- data/spec/unit/cookbook_loader_spec.rb +299 -299
- data/spec/unit/cookbook_manifest_spec.rb +243 -243
- data/spec/unit/cookbook_site_streaming_uploader_spec.rb +203 -203
- data/spec/unit/cookbook_spec.rb +66 -66
- data/spec/unit/cookbook_uploader_spec.rb +199 -199
- data/spec/unit/cookbook_version_file_specificity_spec.rb +576 -553
- data/spec/unit/cookbook_version_spec.rb +359 -359
- data/spec/unit/daemon_spec.rb +174 -174
- data/spec/unit/data_bag_item_spec.rb +388 -388
- data/spec/unit/data_bag_spec.rb +260 -260
- data/spec/unit/deprecation_spec.rb +150 -150
- 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 +106 -106
- data/spec/unit/dsl/platform_introspection_spec.rb +129 -129
- data/spec/unit/dsl/reboot_pending_spec.rb +100 -100
- data/spec/unit/dsl/recipe_spec.rb +93 -80
- data/spec/unit/dsl/{regsitry_helper_spec.rb → 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 +95 -95
- data/spec/unit/encrypted_data_bag_item_spec.rb +437 -437
- 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 +130 -130
- 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 +101 -101
- data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +232 -232
- data/spec/unit/file_content_management/tempfile_spec.rb +85 -85
- data/spec/unit/formatters/base_spec.rb +71 -71
- data/spec/unit/formatters/doc_spec.rb +92 -78
- data/spec/unit/formatters/error_description_spec.rb +96 -0
- 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 +215 -215
- data/spec/unit/http/authenticator_spec.rb +80 -80
- data/spec/unit/http/basic_client_spec.rb +52 -129
- data/spec/unit/http/http_request_spec.rb +91 -91
- 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 +173 -173
- 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 +206 -206
- data/spec/unit/json_compat_spec.rb +105 -105
- 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 +822 -822
- 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 +83 -83
- 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 +83 -83
- data/spec/unit/knife/configure_spec.rb +241 -241
- data/spec/unit/knife/cookbook_bulk_delete_spec.rb +87 -87
- data/spec/unit/knife/cookbook_create_spec.rb +260 -260
- data/spec/unit/knife/cookbook_delete_spec.rb +239 -239
- data/spec/unit/knife/cookbook_download_spec.rb +237 -237
- 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 +179 -179
- data/spec/unit/knife/cookbook_show_spec.rb +222 -222
- data/spec/unit/knife/cookbook_site_download_spec.rb +149 -149
- data/spec/unit/knife/cookbook_site_install_spec.rb +197 -197
- data/spec/unit/knife/cookbook_site_share_spec.rb +209 -209
- data/spec/unit/knife/cookbook_site_unshare_spec.rb +77 -77
- 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 +257 -257
- data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +187 -187
- data/spec/unit/knife/core/custom_manifest_loader_spec.rb +41 -41
- data/spec/unit/knife/core/gem_glob_loader_spec.rb +209 -209
- data/spec/unit/knife/core/hashed_command_loader_spec.rb +109 -109
- 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 +70 -70
- data/spec/unit/knife/core/ui_spec.rb +598 -598
- data/spec/unit/knife/data_bag_create_spec.rb +109 -109
- data/spec/unit/knife/data_bag_edit_spec.rb +127 -127
- data/spec/unit/knife/data_bag_from_file_spec.rb +172 -172
- data/spec/unit/knife/data_bag_secret_options_spec.rb +165 -165
- data/spec/unit/knife/data_bag_show_spec.rb +123 -123
- 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/index_rebuild_spec.rb +125 -125
- 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/knife_help.rb +92 -92
- data/spec/unit/knife/node_bulk_delete_spec.rb +94 -94
- data/spec/unit/knife/node_delete_spec.rb +68 -68
- data/spec/unit/knife/node_edit_spec.rb +114 -114
- data/spec/unit/knife/node_environment_set_spec.rb +80 -80
- 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_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 +140 -140
- 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 +428 -410
- data/spec/unit/knife/ssl_check_spec.rb +240 -240
- data/spec/unit/knife/ssl_fetch_spec.rb +184 -184
- data/spec/unit/knife/status_spec.rb +108 -108
- 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 +529 -529
- data/spec/unit/lib_backcompat_spec.rb +34 -34
- data/spec/unit/log/syslog_spec.rb +53 -53
- data/spec/unit/log/winevt_spec.rb +55 -55
- data/spec/unit/log_spec.rb +24 -24
- data/spec/unit/lwrp_spec.rb +778 -720
- 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 +40 -40
- data/spec/unit/mixin/command_spec.rb +104 -104
- 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 +100 -100
- data/spec/unit/mixin/lazy_module_include.rb +71 -0
- data/spec/unit/mixin/params_validate_spec.rb +409 -409
- data/spec/unit/mixin/path_sanity_spec.rb +92 -92
- data/spec/unit/mixin/powershell_out_spec.rb +70 -70
- data/spec/unit/mixin/powershell_type_coercions_spec.rb +83 -83
- data/spec/unit/mixin/properties_spec.rb +97 -97
- data/spec/unit/mixin/proxified_socket_spec.rb +97 -94
- data/spec/unit/mixin/securable_spec.rb +314 -314
- data/spec/unit/mixin/shell_out_spec.rb +299 -299
- data/spec/unit/mixin/subclass_directive_spec.rb +45 -45
- data/spec/unit/mixin/template_spec.rb +276 -276
- data/spec/unit/mixin/unformatter_spec.rb +61 -61
- data/spec/unit/mixin/uris_spec.rb +57 -57
- 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 +1179 -1179
- data/spec/unit/node/immutable_collections_spec.rb +197 -197
- data/spec/unit/node_map_spec.rb +170 -170
- data/spec/unit/node_spec.rb +1565 -1565
- data/spec/unit/org_spec.rb +196 -196
- data/spec/unit/platform/query_helpers_spec.rb +220 -220
- data/spec/unit/platform_spec.rb +241 -241
- data/spec/unit/policy_builder/dynamic_spec.rb +273 -273
- data/spec/unit/policy_builder/expand_node_object_spec.rb +336 -336
- data/spec/unit/policy_builder/policyfile_spec.rb +745 -745
- 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 +704 -704
- data/spec/unit/property_spec.rb +1227 -1227
- data/spec/unit/provider/apt_repository_spec.rb +178 -0
- data/spec/unit/provider/apt_update_spec.rb +113 -113
- data/spec/unit/provider/breakpoint_spec.rb +53 -53
- data/spec/unit/provider/cookbook_file/content_spec.rb +39 -39
- data/spec/unit/provider/cookbook_file_spec.rb +58 -58
- data/spec/unit/provider/cron/unix_spec.rb +139 -139
- data/spec/unit/provider/cron_spec.rb +1010 -1010
- data/spec/unit/provider/deploy/revision_spec.rb +110 -110
- data/spec/unit/provider/deploy/timestamped_spec.rb +40 -40
- data/spec/unit/provider/deploy_spec.rb +641 -641
- data/spec/unit/provider/directory_spec.rb +287 -287
- data/spec/unit/provider/dsc_resource_spec.rb +167 -167
- data/spec/unit/provider/dsc_script_spec.rb +173 -173
- data/spec/unit/provider/env/windows_spec.rb +103 -103
- data/spec/unit/provider/env_spec.rb +310 -310
- data/spec/unit/provider/erl_call_spec.rb +85 -85
- data/spec/unit/provider/execute_spec.rb +243 -243
- data/spec/unit/provider/file/content_spec.rb +114 -114
- data/spec/unit/provider/file_spec.rb +56 -56
- data/spec/unit/provider/git_spec.rb +668 -668
- data/spec/unit/provider/group/dscl_spec.rb +331 -331
- data/spec/unit/provider/group/gpasswd_spec.rb +116 -116
- data/spec/unit/provider/group/groupadd_spec.rb +174 -174
- data/spec/unit/provider/group/groupmod_spec.rb +133 -133
- data/spec/unit/provider/group/pw_spec.rb +138 -138
- data/spec/unit/provider/group/usermod_spec.rb +115 -115
- data/spec/unit/provider/group/windows_spec.rb +101 -101
- 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 +344 -344
- data/spec/unit/provider/ifconfig/redhat_spec.rb +73 -73
- data/spec/unit/provider/ifconfig_spec.rb +200 -200
- data/spec/unit/provider/launchd_spec.rb +189 -189
- data/spec/unit/provider/link_spec.rb +252 -252
- data/spec/unit/provider/log_spec.rb +75 -75
- data/spec/unit/provider/mdadm_spec.rb +131 -131
- data/spec/unit/provider/mount/aix_spec.rb +237 -238
- data/spec/unit/provider/mount/mount_spec.rb +474 -480
- data/spec/unit/provider/mount/solaris_spec.rb +822 -822
- data/spec/unit/provider/mount/windows_spec.rb +149 -151
- data/spec/unit/provider/mount_spec.rb +184 -203
- data/spec/unit/provider/ohai_spec.rb +84 -84
- data/spec/unit/provider/osx_profile_spec.rb +249 -249
- data/spec/unit/provider/package/aix_spec.rb +172 -172
- data/spec/unit/provider/package/apt_spec.rb +386 -386
- data/spec/unit/provider/package/chocolatey_spec.rb +501 -501
- data/spec/unit/provider/package/dpkg_spec.rb +287 -287
- data/spec/unit/provider/package/easy_install_spec.rb +108 -108
- 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 +292 -292
- data/spec/unit/provider/package/ips_spec.rb +227 -227
- data/spec/unit/provider/package/macports_spec.rb +203 -203
- 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 +310 -310
- data/spec/unit/provider/package/rpm_spec.rb +429 -429
- data/spec/unit/provider/package/rubygems_spec.rb +782 -782
- 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 +187 -187
- data/spec/unit/provider/package/windows/msi_spec.rb +159 -159
- data/spec/unit/provider/package/windows_spec.rb +397 -397
- data/spec/unit/provider/package/yum_spec.rb +2267 -2267
- data/spec/unit/provider/package/zypper_spec.rb +268 -268
- data/spec/unit/provider/package_spec.rb +870 -870
- data/spec/unit/provider/powershell_script_spec.rb +106 -106
- data/spec/unit/provider/registry_key_spec.rb +295 -295
- data/spec/unit/provider/remote_directory_spec.rb +221 -221
- data/spec/unit/provider/remote_file/cache_control_data_spec.rb +245 -245
- data/spec/unit/provider/remote_file/content_spec.rb +252 -252
- data/spec/unit/provider/remote_file/fetcher_spec.rb +94 -94
- data/spec/unit/provider/remote_file/ftp_spec.rb +217 -219
- data/spec/unit/provider/remote_file/http_spec.rb +322 -301
- data/spec/unit/provider/remote_file/local_file_spec.rb +103 -103
- data/spec/unit/provider/remote_file/network_file_spec.rb +45 -45
- data/spec/unit/provider/remote_file/sftp_spec.rb +150 -0
- data/spec/unit/provider/remote_file_spec.rb +61 -61
- data/spec/unit/provider/route_spec.rb +242 -242
- data/spec/unit/provider/ruby_block_spec.rb +45 -45
- data/spec/unit/provider/script_spec.rb +114 -114
- 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 +375 -375
- data/spec/unit/provider/service/freebsd_service_spec.rb +613 -613
- 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 +335 -335
- data/spec/unit/provider/service/openbsd_service_spec.rb +545 -545
- data/spec/unit/provider/service/redhat_spec.rb +250 -236
- data/spec/unit/provider/service/simple_service_spec.rb +169 -169
- data/spec/unit/provider/service/solaris_smf_service_spec.rb +255 -255
- data/spec/unit/provider/service/systemd_service_spec.rb +370 -344
- data/spec/unit/provider/service/upstart_service_spec.rb +342 -342
- data/spec/unit/provider/service/windows_spec.rb +463 -463
- data/spec/unit/provider/service_spec.rb +168 -168
- data/spec/unit/provider/subversion_spec.rb +352 -298
- data/spec/unit/provider/template/content_spec.rb +169 -169
- data/spec/unit/provider/template_spec.rb +89 -89
- data/spec/unit/provider/user/dscl_spec.rb +901 -901
- data/spec/unit/provider/user/pw_spec.rb +252 -252
- data/spec/unit/provider/user/solaris_spec.rb +139 -139
- data/spec/unit/provider/user/useradd_spec.rb +51 -51
- data/spec/unit/provider/user/windows_spec.rb +185 -185
- data/spec/unit/provider/user_spec.rb +474 -474
- data/spec/unit/provider/whyrun_safe_ruby_block_spec.rb +46 -46
- data/spec/unit/provider_resolver_spec.rb +893 -893
- data/spec/unit/provider_spec.rb +198 -198
- data/spec/unit/pure_application_spec.rb +32 -32
- data/spec/unit/recipe_spec.rb +699 -699
- data/spec/unit/resource/apt_package_spec.rb +38 -38
- data/spec/unit/resource/apt_repository_spec.rb +34 -0
- data/spec/unit/resource/apt_update_spec.rb +38 -38
- data/spec/unit/resource/bash_spec.rb +40 -40
- data/spec/unit/resource/batch_spec.rb +49 -49
- data/spec/unit/resource/breakpoint_spec.rb +47 -47
- data/spec/unit/resource/chef_gem_spec.rb +157 -157
- data/spec/unit/resource/chocolatey_package_spec.rb +67 -67
- data/spec/unit/resource/conditional_action_not_nothing_spec.rb +45 -45
- data/spec/unit/resource/conditional_spec.rb +208 -208
- data/spec/unit/resource/cookbook_file_spec.rb +88 -88
- data/spec/unit/resource/cron_spec.rb +186 -186
- data/spec/unit/resource/csh_spec.rb +40 -40
- data/spec/unit/resource/deploy_revision_spec.rb +42 -42
- data/spec/unit/resource/deploy_spec.rb +283 -283
- data/spec/unit/resource/directory_spec.rb +82 -82
- data/spec/unit/resource/dpkg_package_spec.rb +32 -32
- data/spec/unit/resource/dsc_resource_spec.rb +96 -96
- data/spec/unit/resource/dsc_script_spec.rb +134 -134
- data/spec/unit/resource/easy_install_package_spec.rb +39 -39
- data/spec/unit/resource/env_spec.rb +85 -85
- data/spec/unit/resource/erl_call_spec.rb +81 -81
- data/spec/unit/resource/execute_spec.rb +35 -35
- data/spec/unit/resource/file/verification_spec.rb +139 -139
- data/spec/unit/resource/file_spec.rb +130 -130
- data/spec/unit/resource/freebsd_package_spec.rb +87 -87
- data/spec/unit/resource/gem_package_spec.rb +42 -42
- data/spec/unit/resource/git_spec.rb +50 -50
- data/spec/unit/resource/group_spec.rb +162 -162
- data/spec/unit/resource/homebrew_package_spec.rb +50 -50
- data/spec/unit/resource/http_request_spec.rb +59 -59
- data/spec/unit/resource/ifconfig_spec.rb +109 -109
- data/spec/unit/resource/ips_package_spec.rb +40 -40
- data/spec/unit/resource/ksh_spec.rb +40 -40
- data/spec/unit/resource/launchd_spec.rb +31 -31
- data/spec/unit/resource/link_spec.rb +134 -134
- data/spec/unit/resource/log_spec.rb +73 -73
- data/spec/unit/resource/macports_package_spec.rb +32 -32
- data/spec/unit/resource/mdadm_spec.rb +102 -102
- data/spec/unit/resource/mount_spec.rb +214 -214
- data/spec/unit/resource/ohai_spec.rb +61 -61
- data/spec/unit/resource/openbsd_package_spec.rb +48 -48
- data/spec/unit/resource/osx_profile_spec.rb +61 -61
- data/spec/unit/resource/package_spec.rb +93 -93
- data/spec/unit/resource/pacman_package_spec.rb +32 -32
- data/spec/unit/resource/perl_spec.rb +40 -40
- data/spec/unit/resource/portage_package_spec.rb +38 -38
- data/spec/unit/resource/powershell_script_spec.rb +136 -136
- data/spec/unit/resource/python_spec.rb +40 -40
- data/spec/unit/resource/registry_key_spec.rb +199 -199
- data/spec/unit/resource/remote_directory_spec.rb +97 -97
- data/spec/unit/resource/remote_file_spec.rb +207 -207
- data/spec/unit/resource/resource_notification_spec.rb +169 -169
- data/spec/unit/resource/route_spec.rb +107 -107
- data/spec/unit/resource/rpm_package_spec.rb +46 -46
- data/spec/unit/resource/ruby_block_spec.rb +61 -61
- data/spec/unit/resource/ruby_spec.rb +40 -40
- data/spec/unit/resource/scm_spec.rb +193 -193
- data/spec/unit/resource/script_spec.rb +44 -44
- data/spec/unit/resource/service_spec.rb +179 -179
- data/spec/unit/resource/smartos_package_spec.rb +33 -33
- data/spec/unit/resource/solaris_package_spec.rb +42 -42
- data/spec/unit/resource/subversion_spec.rb +71 -71
- data/spec/unit/resource/template_spec.rb +210 -210
- data/spec/unit/resource/timestamped_deploy_spec.rb +32 -32
- data/spec/unit/resource/user_spec.rb +133 -133
- data/spec/unit/resource/windows_package_spec.rb +95 -95
- data/spec/unit/resource/windows_service_spec.rb +49 -49
- data/spec/unit/resource/yum_package_spec.rb +89 -89
- 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 +199 -199
- data/spec/unit/resource_collection/stepable_iterator_spec.rb +144 -144
- data/spec/unit/resource_collection_spec.rb +369 -299
- data/spec/unit/resource_definition_spec.rb +117 -117
- data/spec/unit/resource_reporter_spec.rb +758 -758
- data/spec/unit/resource_resolver_spec.rb +52 -52
- data/spec/unit/resource_spec.rb +1101 -1101
- data/spec/unit/rest/auth_credentials_spec.rb +292 -296
- data/spec/unit/rest_spec.rb +753 -753
- 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 +184 -184
- 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 +194 -194
- 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 +411 -411
- data/spec/unit/scan_access_control_spec.rb +183 -183
- data/spec/unit/search/query_spec.rb +289 -289
- 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 +195 -195
- data/spec/unit/shell_out_spec.rb +18 -18
- 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 +164 -164
- data/spec/unit/util/dsc/local_configuration_manager_spec.rb +138 -138
- data/spec/unit/util/dsc/resource_store.rb +76 -76
- 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 +171 -171
- data/spec/unit/util/threaded_job_queue_spec.rb +51 -51
- 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/win32/registry_spec.rb +394 -394
- data/spec/unit/windows_service_spec.rb +116 -116
- data/tasks/cbgb.rb +84 -84
- data/tasks/external_tests.rb +64 -64
- data/tasks/maintainers.rb +210 -210
- data/tasks/rspec.rb +89 -89
- metadata +55 -464
@@ -1,1049 +1,1049 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Seth Chisamore (<schisamo@chef.io>)
|
3
|
-
# Copyright:: Copyright 2011-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
|
-
|
19
|
-
shared_context "deploying with move" do
|
20
|
-
before do
|
21
|
-
Chef::Config[:file_backup_path] = CHEF_SPEC_BACKUP_PATH
|
22
|
-
Chef::Config[:file_atomic_update] = true
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
shared_context "deploying with copy" do
|
27
|
-
before do
|
28
|
-
Chef::Config[:file_backup_path] = CHEF_SPEC_BACKUP_PATH
|
29
|
-
Chef::Config[:file_atomic_update] = false
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
shared_context "deploying via tmpdir" do
|
34
|
-
before do
|
35
|
-
Chef::Config[:file_staging_uses_destdir] = false
|
36
|
-
Chef::Config[:file_backup_path] = CHEF_SPEC_BACKUP_PATH
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
shared_context "deploying via destdir" do
|
41
|
-
before do
|
42
|
-
Chef::Config[:file_staging_uses_destdir] = true
|
43
|
-
Chef::Config[:file_backup_path] = CHEF_SPEC_BACKUP_PATH
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
shared_examples_for "a file with the wrong content" do
|
48
|
-
before do
|
49
|
-
# Assert starting state is as expected
|
50
|
-
expect(File).to exist(path)
|
51
|
-
# Kinda weird, in this case @expected_checksum is the cksum of the file
|
52
|
-
# with incorrect content.
|
53
|
-
expect(sha256_checksum(path)).to eq(@expected_checksum)
|
54
|
-
end
|
55
|
-
|
56
|
-
describe "when diff is disabled" do
|
57
|
-
|
58
|
-
include_context "diff disabled"
|
59
|
-
|
60
|
-
context "when running action :create" do
|
61
|
-
context "with backups enabled" do
|
62
|
-
before do
|
63
|
-
resource.run_action(:create)
|
64
|
-
end
|
65
|
-
|
66
|
-
it "overwrites the file with the updated content when the :create action is run" do
|
67
|
-
expect(File.stat(path).mtime).to be > @expected_mtime
|
68
|
-
expect(sha256_checksum(path)).not_to eq(@expected_checksum)
|
69
|
-
end
|
70
|
-
|
71
|
-
it "backs up the existing file" do
|
72
|
-
expect(Dir.glob(backup_glob).size).to equal(1)
|
73
|
-
end
|
74
|
-
|
75
|
-
it "is marked as updated by last action" do
|
76
|
-
expect(resource).to be_updated_by_last_action
|
77
|
-
end
|
78
|
-
|
79
|
-
it "should restore the security contexts on selinux", :selinux_only do
|
80
|
-
expect(selinux_security_context_restored?(path)).to be_truthy
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
context "with backups disabled" do
|
85
|
-
before do
|
86
|
-
resource.backup(0)
|
87
|
-
resource.run_action(:create)
|
88
|
-
end
|
89
|
-
|
90
|
-
it "should not attempt to backup the existing file if :backup == 0" do
|
91
|
-
expect(Dir.glob(backup_glob).size).to equal(0)
|
92
|
-
end
|
93
|
-
|
94
|
-
it "should restore the security contexts on selinux", :selinux_only do
|
95
|
-
expect(selinux_security_context_restored?(path)).to be_truthy
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
context "with a checksum that does not match the content to deploy" do
|
100
|
-
before do
|
101
|
-
resource.checksum("aAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaA")
|
102
|
-
end
|
103
|
-
|
104
|
-
it "raises an exception" do
|
105
|
-
expect { resource.run_action(:create) }.to raise_error(Chef::Exceptions::ChecksumMismatch)
|
106
|
-
end
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
describe "when running action :create_if_missing" do
|
111
|
-
before do
|
112
|
-
resource.run_action(:create_if_missing)
|
113
|
-
end
|
114
|
-
|
115
|
-
it "doesn't overwrite the file when the :create_if_missing action is run" do
|
116
|
-
expect(File.stat(path).mtime).to eq(@expected_mtime)
|
117
|
-
expect(sha256_checksum(path)).to eq(@expected_checksum)
|
118
|
-
end
|
119
|
-
|
120
|
-
it "is not marked as updated" do
|
121
|
-
expect(resource).not_to be_updated_by_last_action
|
122
|
-
end
|
123
|
-
|
124
|
-
it "should restore the security contexts on selinux", :selinux_only do
|
125
|
-
expect(selinux_security_context_restored?(path)).to be_truthy
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
129
|
-
describe "when running action :delete" do
|
130
|
-
before do
|
131
|
-
resource.run_action(:delete)
|
132
|
-
end
|
133
|
-
|
134
|
-
it "deletes the file" do
|
135
|
-
expect(File).not_to exist(path)
|
136
|
-
end
|
137
|
-
|
138
|
-
it "is marked as updated by last action" do
|
139
|
-
expect(resource).to be_updated_by_last_action
|
140
|
-
end
|
141
|
-
end
|
142
|
-
|
143
|
-
end
|
144
|
-
|
145
|
-
context "when diff is enabled" do
|
146
|
-
describe "sensitive attribute" do
|
147
|
-
context "should be insensitive by default" do
|
148
|
-
it { expect(resource.sensitive).to(be_falsey) }
|
149
|
-
end
|
150
|
-
|
151
|
-
context "when set" do
|
152
|
-
before { resource.sensitive(true) }
|
153
|
-
|
154
|
-
it "should be set on the resource" do
|
155
|
-
expect(resource.sensitive).to(be_truthy)
|
156
|
-
end
|
157
|
-
|
158
|
-
context "when running :create action" do
|
159
|
-
let(:provider) { resource.provider_for_action(:create) }
|
160
|
-
let(:reporter_messages) { provider.instance_variable_get("@converge_actions").actions[0][0] }
|
161
|
-
|
162
|
-
before do
|
163
|
-
provider.run_action
|
164
|
-
end
|
165
|
-
|
166
|
-
it "should suppress the diff" do
|
167
|
-
expect(resource.diff).to(include("suppressed sensitive resource"))
|
168
|
-
expect(reporter_messages[1]).to eq("suppressed sensitive resource")
|
169
|
-
end
|
170
|
-
|
171
|
-
it "should still include the updated checksums" do
|
172
|
-
expect(reporter_messages[0]).to include("update content in file")
|
173
|
-
end
|
174
|
-
end
|
175
|
-
end
|
176
|
-
end
|
177
|
-
end
|
178
|
-
end
|
179
|
-
|
180
|
-
shared_examples_for "a file with the correct content" do
|
181
|
-
before do
|
182
|
-
# Assert starting state is as expected
|
183
|
-
expect(File).to exist(path)
|
184
|
-
expect(sha256_checksum(path)).to eq(@expected_checksum)
|
185
|
-
end
|
186
|
-
|
187
|
-
include_context "diff disabled"
|
188
|
-
|
189
|
-
describe "when running action :create" do
|
190
|
-
before do
|
191
|
-
resource.run_action(:create)
|
192
|
-
end
|
193
|
-
it "does not overwrite the original when the :create action is run" do
|
194
|
-
expect(sha256_checksum(path)).to eq(@expected_checksum)
|
195
|
-
end
|
196
|
-
|
197
|
-
it "does not update the mtime of the file when the :create action is run" do
|
198
|
-
expect(File.stat(path).mtime).to eq(@expected_mtime)
|
199
|
-
end
|
200
|
-
|
201
|
-
it "is not marked as updated by last action" do
|
202
|
-
expect(resource).not_to be_updated_by_last_action
|
203
|
-
end
|
204
|
-
|
205
|
-
it "should restore the security contexts on selinux", :selinux_only do
|
206
|
-
expect(selinux_security_context_restored?(path)).to be_truthy
|
207
|
-
end
|
208
|
-
end
|
209
|
-
|
210
|
-
describe "when running action :create_if_missing" do
|
211
|
-
before do
|
212
|
-
resource.run_action(:create_if_missing)
|
213
|
-
end
|
214
|
-
|
215
|
-
it "doesn't overwrite the file when the :create_if_missing action is run" do
|
216
|
-
expect(sha256_checksum(path)).to eq(@expected_checksum)
|
217
|
-
end
|
218
|
-
|
219
|
-
it "is not marked as updated by last action" do
|
220
|
-
expect(resource).not_to be_updated_by_last_action
|
221
|
-
end
|
222
|
-
|
223
|
-
it "should restore the security contexts on selinux", :selinux_only do
|
224
|
-
expect(selinux_security_context_restored?(path)).to be_truthy
|
225
|
-
end
|
226
|
-
end
|
227
|
-
|
228
|
-
describe "when running action :delete" do
|
229
|
-
before do
|
230
|
-
resource.run_action(:delete)
|
231
|
-
end
|
232
|
-
|
233
|
-
it "deletes the file when the :delete action is run" do
|
234
|
-
expect(File).not_to exist(path)
|
235
|
-
end
|
236
|
-
|
237
|
-
it "is marked as updated by last action" do
|
238
|
-
expect(resource).to be_updated_by_last_action
|
239
|
-
end
|
240
|
-
end
|
241
|
-
end
|
242
|
-
|
243
|
-
shared_examples_for "a file resource" do
|
244
|
-
describe "when deploying with :move" do
|
245
|
-
|
246
|
-
include_context "deploying with move"
|
247
|
-
|
248
|
-
describe "when deploying via tmpdir" do
|
249
|
-
|
250
|
-
include_context "deploying via tmpdir"
|
251
|
-
|
252
|
-
it_behaves_like "a configured file resource"
|
253
|
-
end
|
254
|
-
|
255
|
-
describe "when deploying via destdir" do
|
256
|
-
|
257
|
-
include_context "deploying via destdir"
|
258
|
-
|
259
|
-
it_behaves_like "a configured file resource"
|
260
|
-
end
|
261
|
-
end
|
262
|
-
|
263
|
-
describe "when deploying with :copy" do
|
264
|
-
|
265
|
-
include_context "deploying with copy"
|
266
|
-
|
267
|
-
describe "when deploying via tmpdir" do
|
268
|
-
|
269
|
-
include_context "deploying via tmpdir"
|
270
|
-
|
271
|
-
it_behaves_like "a configured file resource"
|
272
|
-
end
|
273
|
-
|
274
|
-
describe "when deploying via destdir" do
|
275
|
-
|
276
|
-
include_context "deploying via destdir"
|
277
|
-
|
278
|
-
it_behaves_like "a configured file resource"
|
279
|
-
end
|
280
|
-
end
|
281
|
-
|
282
|
-
describe "when running under why run" do
|
283
|
-
|
284
|
-
before do
|
285
|
-
Chef::Config[:why_run] = true
|
286
|
-
Chef::Config[:ssl_verify_mode] = :verify_none
|
287
|
-
end
|
288
|
-
|
289
|
-
after do
|
290
|
-
Chef::Config[:why_run] = false
|
291
|
-
end
|
292
|
-
|
293
|
-
context "and the resource has a path with a missing intermediate directory" do
|
294
|
-
# CHEF-3978
|
295
|
-
|
296
|
-
let(:path) do
|
297
|
-
File.join(test_file_dir, "intermediate_dir", make_tmpname(file_base))
|
298
|
-
end
|
299
|
-
|
300
|
-
it "successfully doesn't create the file" do
|
301
|
-
resource.run_action(:create) # should not raise
|
302
|
-
expect(File).not_to exist(path)
|
303
|
-
end
|
304
|
-
end
|
305
|
-
|
306
|
-
end
|
307
|
-
|
308
|
-
describe "when setting atomic_update" do
|
309
|
-
it "booleans should work" do
|
310
|
-
expect { resource.atomic_update(true) }.not_to raise_error
|
311
|
-
expect { resource.atomic_update(false) }.not_to raise_error
|
312
|
-
end
|
313
|
-
|
314
|
-
it "anything else should raise an error" do
|
315
|
-
expect { resource.atomic_update(:copy) }.to raise_error(ArgumentError)
|
316
|
-
expect { resource.atomic_update(:move) }.to raise_error(ArgumentError)
|
317
|
-
expect { resource.atomic_update(958) }.to raise_error(ArgumentError)
|
318
|
-
end
|
319
|
-
end
|
320
|
-
|
321
|
-
end
|
322
|
-
|
323
|
-
shared_examples_for "file resource not pointing to a real file" do
|
324
|
-
def symlink?(file_path)
|
325
|
-
if windows?
|
326
|
-
Chef::ReservedNames::Win32::File.symlink?(file_path)
|
327
|
-
else
|
328
|
-
File.symlink?(file_path)
|
329
|
-
end
|
330
|
-
end
|
331
|
-
|
332
|
-
def real_file?(file_path)
|
333
|
-
!symlink?(file_path) && File.file?(file_path)
|
334
|
-
end
|
335
|
-
|
336
|
-
before do
|
337
|
-
Chef::Config[:ssl_verify_mode] = :verify_none
|
338
|
-
end
|
339
|
-
|
340
|
-
describe "when force_unlink is set to true" do
|
341
|
-
it ":create unlinks the target" do
|
342
|
-
expect(real_file?(path)).to be_falsey
|
343
|
-
resource.force_unlink(true)
|
344
|
-
resource.run_action(:create)
|
345
|
-
expect(real_file?(path)).to be_truthy
|
346
|
-
expect(binread(path)).to eq(expected_content)
|
347
|
-
expect(resource).to be_updated_by_last_action
|
348
|
-
end
|
349
|
-
end
|
350
|
-
|
351
|
-
describe "when force_unlink is set to false" do
|
352
|
-
it ":create raises an error" do
|
353
|
-
expect { resource.run_action(:create) }.to raise_error(Chef::Exceptions::FileTypeMismatch)
|
354
|
-
end
|
355
|
-
end
|
356
|
-
|
357
|
-
describe "when force_unlink is not set (default)" do
|
358
|
-
it ":create raises an error" do
|
359
|
-
expect { resource.run_action(:create) }.to raise_error(Chef::Exceptions::FileTypeMismatch)
|
360
|
-
end
|
361
|
-
end
|
362
|
-
end
|
363
|
-
|
364
|
-
shared_examples_for "a configured file resource" do
|
365
|
-
|
366
|
-
include_context "diff disabled"
|
367
|
-
|
368
|
-
before do
|
369
|
-
Chef::Log.level = :info
|
370
|
-
Chef::Config[:ssl_verify_mode] = :verify_none
|
371
|
-
end
|
372
|
-
|
373
|
-
# note the stripping of the drive letter from the tmpdir on windows
|
374
|
-
let(:backup_glob) { File.join(CHEF_SPEC_BACKUP_PATH, test_file_dir.sub(/^([A-Za-z]:)/, ""), "#{file_base}*") }
|
375
|
-
|
376
|
-
# Most tests update the resource, but a few do not. We need to test that the
|
377
|
-
# resource is marked updated or not correctly, but the test contexts are
|
378
|
-
# composed between correct/incorrect content and correct/incorrect
|
379
|
-
# permissions. We override this "let" definition in the context where content
|
380
|
-
# and permissions are correct.
|
381
|
-
let(:expect_updated?) { true }
|
382
|
-
|
383
|
-
include Chef::Mixin::ShellOut
|
384
|
-
|
385
|
-
def selinux_security_context_restored?(path)
|
386
|
-
@restorecon_path = which("restorecon") if @restorecon_path.nil?
|
387
|
-
restorecon_test_command = "#{@restorecon_path} -n -v #{path}"
|
388
|
-
cmdresult = shell_out(restorecon_test_command)
|
389
|
-
# restorecon will print the required changes to stdout if any is
|
390
|
-
# needed
|
391
|
-
cmdresult.stdout.empty?
|
392
|
-
end
|
393
|
-
|
394
|
-
def binread(file)
|
395
|
-
content = File.open(file, "rb") do |f|
|
396
|
-
f.read
|
397
|
-
end
|
398
|
-
content.force_encoding(Encoding::BINARY) if "".respond_to?(:force_encoding)
|
399
|
-
content
|
400
|
-
end
|
401
|
-
|
402
|
-
context "when the target file is a symlink", :not_supported_on_win2k3 do
|
403
|
-
let(:symlink_target) {
|
404
|
-
File.join(CHEF_SPEC_DATA, "file-test-target")
|
405
|
-
}
|
406
|
-
|
407
|
-
describe "when configured not to manage symlink's target" do
|
408
|
-
before(:each) do
|
409
|
-
# configure not to manage symlink source
|
410
|
-
resource.manage_symlink_source(false)
|
411
|
-
|
412
|
-
# create symlinks for test context
|
413
|
-
FileUtils.touch(symlink_target)
|
414
|
-
|
415
|
-
if windows?
|
416
|
-
Chef::ReservedNames::Win32::File.symlink(symlink_target, path)
|
417
|
-
else
|
418
|
-
File.symlink(symlink_target, path)
|
419
|
-
end
|
420
|
-
end
|
421
|
-
|
422
|
-
after(:each) do
|
423
|
-
FileUtils.rm_rf(symlink_target)
|
424
|
-
FileUtils.rm_rf(path)
|
425
|
-
end
|
426
|
-
|
427
|
-
describe "when symlink target has correct content" do
|
428
|
-
before(:each) do
|
429
|
-
File.open(symlink_target, "wb") { |f| f.print expected_content }
|
430
|
-
end
|
431
|
-
|
432
|
-
it_behaves_like "file resource not pointing to a real file"
|
433
|
-
end
|
434
|
-
|
435
|
-
describe "when symlink target has the wrong content" do
|
436
|
-
before(:each) do
|
437
|
-
File.open(symlink_target, "wb") { |f| f.print "This is so wrong!!!" }
|
438
|
-
end
|
439
|
-
|
440
|
-
after(:each) do
|
441
|
-
# symlink should never be followed
|
442
|
-
expect(binread(symlink_target)).to eq("This is so wrong!!!")
|
443
|
-
end
|
444
|
-
|
445
|
-
it_behaves_like "file resource not pointing to a real file"
|
446
|
-
end
|
447
|
-
end
|
448
|
-
|
449
|
-
# Unix-only for now. Windows behavior may differ because of how ACL
|
450
|
-
# management handles symlinks. Since symlinks are rare on Windows and this
|
451
|
-
# feature primarily exists to support the case where a well-known file
|
452
|
-
# (e.g., resolv.conf) has been converted to a symlink, we're okay with the
|
453
|
-
# discrepancy.
|
454
|
-
context "when configured to manage the symlink source", :unix_only do
|
455
|
-
|
456
|
-
before do
|
457
|
-
resource.manage_symlink_source(true)
|
458
|
-
end
|
459
|
-
|
460
|
-
context "but the symlink is part of a loop" do
|
461
|
-
let(:link1_path) { File.join(CHEF_SPEC_DATA, "points-to-link2") }
|
462
|
-
let(:link2_path) { File.join(CHEF_SPEC_DATA, "points-to-link1") }
|
463
|
-
|
464
|
-
before do
|
465
|
-
# point resource at link1:
|
466
|
-
resource.path(link1_path)
|
467
|
-
# create symlinks for test context
|
468
|
-
File.symlink(link1_path, link2_path)
|
469
|
-
File.symlink(link2_path, link1_path)
|
470
|
-
end
|
471
|
-
|
472
|
-
after(:each) do
|
473
|
-
FileUtils.rm_rf(link1_path)
|
474
|
-
FileUtils.rm_rf(link2_path)
|
475
|
-
end
|
476
|
-
|
477
|
-
it "raises an InvalidSymlink error" do
|
478
|
-
expect { resource.run_action(:create) }.to raise_error(Chef::Exceptions::InvalidSymlink)
|
479
|
-
end
|
480
|
-
|
481
|
-
it "issues a warning/assumption in whyrun mode" do
|
482
|
-
begin
|
483
|
-
Chef::Config[:why_run] = true
|
484
|
-
resource.run_action(:create) # should not raise
|
485
|
-
ensure
|
486
|
-
Chef::Config[:why_run] = false
|
487
|
-
end
|
488
|
-
end
|
489
|
-
end
|
490
|
-
|
491
|
-
context "but the symlink points to a nonexistent file" do
|
492
|
-
let(:link_path) { File.join(CHEF_SPEC_DATA, "points-to-nothing") }
|
493
|
-
let(:not_existent_source) { File.join(CHEF_SPEC_DATA, "i-am-not-here") }
|
494
|
-
|
495
|
-
before do
|
496
|
-
resource.path(link_path)
|
497
|
-
# create symlinks for test context
|
498
|
-
File.symlink(not_existent_source, link_path)
|
499
|
-
FileUtils.rm_rf(not_existent_source)
|
500
|
-
end
|
501
|
-
|
502
|
-
after(:each) do
|
503
|
-
FileUtils.rm_rf(link_path)
|
504
|
-
end
|
505
|
-
it "raises an InvalidSymlink error" do
|
506
|
-
expect { resource.run_action(:create) }.to raise_error(Chef::Exceptions::InvalidSymlink)
|
507
|
-
end
|
508
|
-
|
509
|
-
it "issues a warning/assumption in whyrun mode" do
|
510
|
-
begin
|
511
|
-
Chef::Config[:why_run] = true
|
512
|
-
resource.run_action(:create) # should not raise
|
513
|
-
ensure
|
514
|
-
Chef::Config[:why_run] = false
|
515
|
-
end
|
516
|
-
end
|
517
|
-
end
|
518
|
-
|
519
|
-
context "but the symlink is points to a non-file fs entry" do
|
520
|
-
let(:link_path) { File.join(CHEF_SPEC_DATA, "points-to-dir") }
|
521
|
-
let(:not_a_file_path) { File.join(CHEF_SPEC_DATA, "dir-at-end-of-symlink") }
|
522
|
-
|
523
|
-
before do
|
524
|
-
# point resource at link1:
|
525
|
-
resource.path(link_path)
|
526
|
-
# create symlinks for test context
|
527
|
-
File.symlink(not_a_file_path, link_path)
|
528
|
-
Dir.mkdir(not_a_file_path)
|
529
|
-
end
|
530
|
-
|
531
|
-
after(:each) do
|
532
|
-
FileUtils.rm_rf(link_path)
|
533
|
-
FileUtils.rm_rf(not_a_file_path)
|
534
|
-
end
|
535
|
-
|
536
|
-
it "raises an InvalidSymlink error" do
|
537
|
-
expect { resource.run_action(:create) }.to raise_error(Chef::Exceptions::FileTypeMismatch)
|
538
|
-
end
|
539
|
-
|
540
|
-
it "issues a warning/assumption in whyrun mode" do
|
541
|
-
begin
|
542
|
-
Chef::Config[:why_run] = true
|
543
|
-
resource.run_action(:create) # should not raise
|
544
|
-
ensure
|
545
|
-
Chef::Config[:why_run] = false
|
546
|
-
end
|
547
|
-
end
|
548
|
-
end
|
549
|
-
|
550
|
-
context "when the symlink source is a real file" do
|
551
|
-
|
552
|
-
let(:wrong_content) { "this is the wrong content" }
|
553
|
-
let(:link_path) { File.join(CHEF_SPEC_DATA, "points-to-real-file") }
|
554
|
-
|
555
|
-
before do
|
556
|
-
# point resource at link:
|
557
|
-
resource.path(link_path)
|
558
|
-
# create symlinks for test context
|
559
|
-
File.symlink(path, link_path)
|
560
|
-
end
|
561
|
-
|
562
|
-
after(:each) do
|
563
|
-
# shared examples should not change our test setup of a file resource
|
564
|
-
# pointing at a symlink:
|
565
|
-
expect(resource.path).to eq(link_path)
|
566
|
-
FileUtils.rm_rf(link_path)
|
567
|
-
end
|
568
|
-
|
569
|
-
context "and the permissions are incorrect" do
|
570
|
-
before do
|
571
|
-
# Create source (real) file
|
572
|
-
File.open(path, "wb") { |f| f.write(expected_content) }
|
573
|
-
end
|
574
|
-
|
575
|
-
include_context "setup broken permissions"
|
576
|
-
|
577
|
-
include_examples "a securable resource with existing target"
|
578
|
-
|
579
|
-
it "does not replace the symlink with a real file" do
|
580
|
-
resource.run_action(:create)
|
581
|
-
expect(File).to be_symlink(link_path)
|
582
|
-
end
|
583
|
-
|
584
|
-
end
|
585
|
-
|
586
|
-
context "and the content is incorrect" do
|
587
|
-
before do
|
588
|
-
# Create source (real) file
|
589
|
-
File.open(path, "wb") { |f| f.write(wrong_content) }
|
590
|
-
end
|
591
|
-
|
592
|
-
it "marks the resource as updated" do
|
593
|
-
resource.run_action(:create)
|
594
|
-
expect(resource).to be_updated_by_last_action
|
595
|
-
end
|
596
|
-
|
597
|
-
it "does not replace the symlink with a real file" do
|
598
|
-
resource.run_action(:create)
|
599
|
-
expect(File).to be_symlink(link_path)
|
600
|
-
end
|
601
|
-
end
|
602
|
-
|
603
|
-
context "and the content and permissions are correct" do
|
604
|
-
let(:expect_updated?) { false }
|
605
|
-
|
606
|
-
before do
|
607
|
-
# Create source (real) file
|
608
|
-
File.open(path, "wb") { |f| f.write(expected_content) }
|
609
|
-
end
|
610
|
-
include_context "setup correct permissions"
|
611
|
-
|
612
|
-
include_examples "a securable resource with existing target"
|
613
|
-
|
614
|
-
end
|
615
|
-
|
616
|
-
end
|
617
|
-
|
618
|
-
context "when the symlink points to a symlink which points to a real file" do
|
619
|
-
|
620
|
-
let(:wrong_content) { "this is the wrong content" }
|
621
|
-
let(:link_to_file_path) { File.join(CHEF_SPEC_DATA, "points-to-real-file") }
|
622
|
-
let(:link_to_link_path) { File.join(CHEF_SPEC_DATA, "points-to-next-link") }
|
623
|
-
|
624
|
-
before do
|
625
|
-
# point resource at link:
|
626
|
-
resource.path(link_to_link_path)
|
627
|
-
# create symlinks for test context
|
628
|
-
File.symlink(path, link_to_file_path)
|
629
|
-
File.symlink(link_to_file_path, link_to_link_path)
|
630
|
-
|
631
|
-
# Create source (real) file
|
632
|
-
File.open(path, "wb") { |f| f.write(wrong_content) }
|
633
|
-
end
|
634
|
-
|
635
|
-
include_context "setup broken permissions"
|
636
|
-
|
637
|
-
include_examples "a securable resource with existing target"
|
638
|
-
|
639
|
-
after(:each) do
|
640
|
-
# shared examples should not change our test setup of a file resource
|
641
|
-
# pointing at a symlink:
|
642
|
-
expect(resource.path).to eq(link_to_link_path)
|
643
|
-
FileUtils.rm_rf(link_to_file_path)
|
644
|
-
FileUtils.rm_rf(link_to_link_path)
|
645
|
-
end
|
646
|
-
|
647
|
-
it "does not replace the symlink with a real file" do
|
648
|
-
resource.run_action(:create)
|
649
|
-
expect(File).to be_symlink(link_to_link_path)
|
650
|
-
expect(File).to be_symlink(link_to_file_path)
|
651
|
-
end
|
652
|
-
|
653
|
-
end
|
654
|
-
end
|
655
|
-
end
|
656
|
-
|
657
|
-
context "when the target file does not exist" do
|
658
|
-
before(:each) do
|
659
|
-
FileUtils.rm_rf(path)
|
660
|
-
end
|
661
|
-
|
662
|
-
after(:each) do
|
663
|
-
FileUtils.rm_rf(path)
|
664
|
-
end
|
665
|
-
|
666
|
-
def symlink?(file_path)
|
667
|
-
if windows?
|
668
|
-
Chef::ReservedNames::Win32::File.symlink?(file_path)
|
669
|
-
else
|
670
|
-
File.symlink?(file_path)
|
671
|
-
end
|
672
|
-
end
|
673
|
-
|
674
|
-
def real_file?(file_path)
|
675
|
-
!symlink?(file_path) && File.file?(file_path)
|
676
|
-
end
|
677
|
-
|
678
|
-
describe "when force_unlink is set to true" do
|
679
|
-
it ":create updates the target" do
|
680
|
-
resource.force_unlink(true)
|
681
|
-
resource.run_action(:create)
|
682
|
-
expect(real_file?(path)).to be_truthy
|
683
|
-
expect(binread(path)).to eq(expected_content)
|
684
|
-
expect(resource).to be_updated_by_last_action
|
685
|
-
end
|
686
|
-
end
|
687
|
-
|
688
|
-
describe "when force_unlink is set to false" do
|
689
|
-
it ":create updates the target" do
|
690
|
-
resource.force_unlink(true)
|
691
|
-
resource.run_action(:create)
|
692
|
-
expect(real_file?(path)).to be_truthy
|
693
|
-
expect(binread(path)).to eq(expected_content)
|
694
|
-
expect(resource).to be_updated_by_last_action
|
695
|
-
end
|
696
|
-
end
|
697
|
-
|
698
|
-
describe "when force_unlink is not set (default)" do
|
699
|
-
it ":create updates the target" do
|
700
|
-
resource.force_unlink(true)
|
701
|
-
resource.run_action(:create)
|
702
|
-
expect(real_file?(path)).to be_truthy
|
703
|
-
expect(binread(path)).to eq(expected_content)
|
704
|
-
expect(resource).to be_updated_by_last_action
|
705
|
-
end
|
706
|
-
end
|
707
|
-
end
|
708
|
-
|
709
|
-
context "when the target file is a directory" do
|
710
|
-
before(:each) do
|
711
|
-
FileUtils.mkdir_p(path)
|
712
|
-
end
|
713
|
-
|
714
|
-
after(:each) do
|
715
|
-
FileUtils.rm_rf(path)
|
716
|
-
end
|
717
|
-
|
718
|
-
it_behaves_like "file resource not pointing to a real file"
|
719
|
-
end
|
720
|
-
|
721
|
-
context "when the target file is a blockdev", :unix_only, :requires_root, :not_supported_on_solaris do
|
722
|
-
include Chef::Mixin::ShellOut
|
723
|
-
let(:path) do
|
724
|
-
File.join(CHEF_SPEC_DATA, "testdev")
|
725
|
-
end
|
726
|
-
|
727
|
-
before(:each) do
|
728
|
-
result = shell_out("mknod #{path} b 1 2")
|
729
|
-
result.stderr.empty?
|
730
|
-
end
|
731
|
-
|
732
|
-
after(:each) do
|
733
|
-
FileUtils.rm_rf(path)
|
734
|
-
end
|
735
|
-
|
736
|
-
it_behaves_like "file resource not pointing to a real file"
|
737
|
-
end
|
738
|
-
|
739
|
-
context "when the target file is a chardev", :unix_only, :requires_root, :not_supported_on_solaris do
|
740
|
-
include Chef::Mixin::ShellOut
|
741
|
-
let(:path) do
|
742
|
-
File.join(CHEF_SPEC_DATA, "testdev")
|
743
|
-
end
|
744
|
-
|
745
|
-
before(:each) do
|
746
|
-
result = shell_out("mknod #{path} c 1 2")
|
747
|
-
result.stderr.empty?
|
748
|
-
end
|
749
|
-
|
750
|
-
after(:each) do
|
751
|
-
FileUtils.rm_rf(path)
|
752
|
-
end
|
753
|
-
|
754
|
-
it_behaves_like "file resource not pointing to a real file"
|
755
|
-
end
|
756
|
-
|
757
|
-
context "when the target file is a pipe", :unix_only do
|
758
|
-
include Chef::Mixin::ShellOut
|
759
|
-
let(:path) do
|
760
|
-
File.join(CHEF_SPEC_DATA, "testpipe")
|
761
|
-
end
|
762
|
-
|
763
|
-
before(:each) do
|
764
|
-
result = shell_out("mkfifo #{path}")
|
765
|
-
result.stderr.empty?
|
766
|
-
end
|
767
|
-
|
768
|
-
after(:each) do
|
769
|
-
FileUtils.rm_rf(path)
|
770
|
-
end
|
771
|
-
|
772
|
-
it_behaves_like "file resource not pointing to a real file"
|
773
|
-
end
|
774
|
-
|
775
|
-
context "when the target file is a socket", :unix_only do
|
776
|
-
require "socket"
|
777
|
-
|
778
|
-
# It turns out that the path to a socket can have at most ~104
|
779
|
-
# bytes. Therefore we are creating our sockets in tmpdir so that
|
780
|
-
# they have a shorter path.
|
781
|
-
let(:test_socket_dir) { File.join(Dir.tmpdir, "sockets") }
|
782
|
-
|
783
|
-
before do
|
784
|
-
FileUtils.mkdir_p(test_socket_dir)
|
785
|
-
end
|
786
|
-
|
787
|
-
after do
|
788
|
-
FileUtils.rm_rf(test_socket_dir)
|
789
|
-
end
|
790
|
-
|
791
|
-
let(:path) do
|
792
|
-
File.join(test_socket_dir, "testsocket")
|
793
|
-
end
|
794
|
-
|
795
|
-
before(:each) do
|
796
|
-
expect(path.bytesize).to be <= 104
|
797
|
-
UNIXServer.new(path)
|
798
|
-
end
|
799
|
-
|
800
|
-
after(:each) do
|
801
|
-
FileUtils.rm_rf(path)
|
802
|
-
end
|
803
|
-
|
804
|
-
it_behaves_like "file resource not pointing to a real file"
|
805
|
-
end
|
806
|
-
|
807
|
-
# Regression test for http://tickets.opscode.com/browse/CHEF-4082
|
808
|
-
context "when notification is configured" do
|
809
|
-
describe "when path is specified with normal separator" do
|
810
|
-
before do
|
811
|
-
@notified_resource = Chef::Resource.new("punk", resource.run_context)
|
812
|
-
resource.notifies(:run, @notified_resource, :immediately)
|
813
|
-
resource.run_action(:create)
|
814
|
-
end
|
815
|
-
|
816
|
-
it "should notify the other resources correctly" do
|
817
|
-
expect(resource).to be_updated_by_last_action
|
818
|
-
expect(resource.run_context.immediate_notifications(resource).length).to eq(1)
|
819
|
-
end
|
820
|
-
end
|
821
|
-
|
822
|
-
describe "when path is specified with windows separator", :windows_only do
|
823
|
-
let(:path) {
|
824
|
-
File.join(test_file_dir, make_tmpname(file_base)).gsub(::File::SEPARATOR, ::File::ALT_SEPARATOR)
|
825
|
-
}
|
826
|
-
|
827
|
-
before do
|
828
|
-
@notified_resource = Chef::Resource.new("punk", resource.run_context)
|
829
|
-
resource.notifies(:run, @notified_resource, :immediately)
|
830
|
-
resource.run_action(:create)
|
831
|
-
end
|
832
|
-
|
833
|
-
it "should notify the other resources correctly" do
|
834
|
-
expect(resource).to be_updated_by_last_action
|
835
|
-
expect(resource.run_context.immediate_notifications(resource).length).to eq(1)
|
836
|
-
end
|
837
|
-
end
|
838
|
-
end
|
839
|
-
|
840
|
-
context "when the target file does not exist" do
|
841
|
-
before do
|
842
|
-
# Assert starting state is expected
|
843
|
-
expect(File).not_to exist(path)
|
844
|
-
end
|
845
|
-
|
846
|
-
describe "when running action :create" do
|
847
|
-
before do
|
848
|
-
resource.run_action(:create)
|
849
|
-
end
|
850
|
-
|
851
|
-
it "creates the file when the :create action is run" do
|
852
|
-
expect(File).to exist(path)
|
853
|
-
end
|
854
|
-
|
855
|
-
it "creates the file with the correct content when the :create action is run" do
|
856
|
-
expect(binread(path)).to eq(expected_content)
|
857
|
-
end
|
858
|
-
|
859
|
-
it "is marked as updated by last action" do
|
860
|
-
expect(resource).to be_updated_by_last_action
|
861
|
-
end
|
862
|
-
|
863
|
-
it "should restore the security contexts on selinux", :selinux_only do
|
864
|
-
expect(selinux_security_context_restored?(path)).to be_truthy
|
865
|
-
end
|
866
|
-
end
|
867
|
-
|
868
|
-
describe "when running action :create_if_missing" do
|
869
|
-
before do
|
870
|
-
resource.run_action(:create_if_missing)
|
871
|
-
end
|
872
|
-
|
873
|
-
it "creates the file with the correct content" do
|
874
|
-
expect(binread(path)).to eq(expected_content)
|
875
|
-
end
|
876
|
-
|
877
|
-
it "is marked as updated by last action" do
|
878
|
-
expect(resource).to be_updated_by_last_action
|
879
|
-
end
|
880
|
-
|
881
|
-
it "should restore the security contexts on selinux", :selinux_only do
|
882
|
-
expect(selinux_security_context_restored?(path)).to be_truthy
|
883
|
-
end
|
884
|
-
end
|
885
|
-
|
886
|
-
describe "when running action :delete" do
|
887
|
-
before do
|
888
|
-
resource.run_action(:delete)
|
889
|
-
end
|
890
|
-
|
891
|
-
it "deletes the file when the :delete action is run" do
|
892
|
-
expect(File).not_to exist(path)
|
893
|
-
end
|
894
|
-
|
895
|
-
it "is not marked updated by last action" do
|
896
|
-
expect(resource).not_to be_updated_by_last_action
|
897
|
-
end
|
898
|
-
end
|
899
|
-
end
|
900
|
-
|
901
|
-
# Set up the context for security tests
|
902
|
-
def allowed_acl(sid, expected_perms)
|
903
|
-
[ ACE.access_allowed(sid, expected_perms[:specific]) ]
|
904
|
-
end
|
905
|
-
|
906
|
-
def denied_acl(sid, expected_perms)
|
907
|
-
[ ACE.access_denied(sid, expected_perms[:specific]) ]
|
908
|
-
end
|
909
|
-
|
910
|
-
def parent_inheritable_acls
|
911
|
-
dummy_file_path = File.join(test_file_dir, "dummy_file")
|
912
|
-
FileUtils.touch(dummy_file_path)
|
913
|
-
dummy_desc = get_security_descriptor(dummy_file_path)
|
914
|
-
FileUtils.rm_rf(dummy_file_path)
|
915
|
-
dummy_desc
|
916
|
-
end
|
917
|
-
|
918
|
-
it_behaves_like "a securable resource without existing target"
|
919
|
-
|
920
|
-
context "when the target file has the wrong content" do
|
921
|
-
before(:each) do
|
922
|
-
File.open(path, "wb") { |f| f.print "This is so wrong!!!" }
|
923
|
-
now = Time.now.to_i
|
924
|
-
File.utime(now - 9000, now - 9000, path)
|
925
|
-
|
926
|
-
@expected_mtime = File.stat(path).mtime
|
927
|
-
@expected_checksum = sha256_checksum(path)
|
928
|
-
end
|
929
|
-
|
930
|
-
describe "and the target file has the correct permissions" do
|
931
|
-
include_context "setup correct permissions"
|
932
|
-
|
933
|
-
it_behaves_like "a file with the wrong content"
|
934
|
-
|
935
|
-
it_behaves_like "a securable resource with existing target"
|
936
|
-
end
|
937
|
-
|
938
|
-
context "and the target file has incorrect permissions" do
|
939
|
-
include_context "setup broken permissions"
|
940
|
-
|
941
|
-
it_behaves_like "a file with the wrong content"
|
942
|
-
|
943
|
-
it_behaves_like "a securable resource with existing target"
|
944
|
-
end
|
945
|
-
end
|
946
|
-
|
947
|
-
context "when the target file has the correct content" do
|
948
|
-
before(:each) do
|
949
|
-
File.open(path, "wb") { |f| f.print expected_content }
|
950
|
-
now = Time.now.to_i
|
951
|
-
File.utime(now - 9000, now - 9000, path)
|
952
|
-
|
953
|
-
@expected_mtime = File.stat(path).mtime
|
954
|
-
@expected_checksum = sha256_checksum(path)
|
955
|
-
end
|
956
|
-
|
957
|
-
describe "and the target file has the correct permissions" do
|
958
|
-
|
959
|
-
# When permissions and content are correct, chef should do nothing and
|
960
|
-
# the resource should not be marked updated.
|
961
|
-
let(:expect_updated?) { false }
|
962
|
-
|
963
|
-
include_context "setup correct permissions"
|
964
|
-
|
965
|
-
it_behaves_like "a file with the correct content"
|
966
|
-
|
967
|
-
it_behaves_like "a securable resource with existing target"
|
968
|
-
end
|
969
|
-
|
970
|
-
context "and the target file has incorrect permissions" do
|
971
|
-
include_context "setup broken permissions"
|
972
|
-
|
973
|
-
it_behaves_like "a file with the correct content"
|
974
|
-
|
975
|
-
it_behaves_like "a securable resource with existing target"
|
976
|
-
end
|
977
|
-
end
|
978
|
-
|
979
|
-
# Regression test for http://tickets.opscode.com/browse/CHEF-4419
|
980
|
-
context "when the path starts with '/' and target file exists", :windows_only do
|
981
|
-
let(:path) do
|
982
|
-
File.join(test_file_dir[2..test_file_dir.length], make_tmpname(file_base))
|
983
|
-
end
|
984
|
-
|
985
|
-
before do
|
986
|
-
File.open(path, "wb") { |f| f.print expected_content }
|
987
|
-
now = Time.now.to_i
|
988
|
-
File.utime(now - 9000, now - 9000, path)
|
989
|
-
|
990
|
-
@expected_mtime = File.stat(path).mtime
|
991
|
-
@expected_checksum = sha256_checksum(path)
|
992
|
-
end
|
993
|
-
|
994
|
-
describe ":create action should run without any updates" do
|
995
|
-
before do
|
996
|
-
# Assert starting state is as expected
|
997
|
-
expect(File).to exist(path)
|
998
|
-
expect(sha256_checksum(path)).to eq(@expected_checksum)
|
999
|
-
resource.run_action(:create)
|
1000
|
-
end
|
1001
|
-
|
1002
|
-
it "does not overwrite the original when the :create action is run" do
|
1003
|
-
expect(sha256_checksum(path)).to eq(@expected_checksum)
|
1004
|
-
end
|
1005
|
-
|
1006
|
-
it "does not update the mtime of the file when the :create action is run" do
|
1007
|
-
expect(File.stat(path).mtime).to eq(@expected_mtime)
|
1008
|
-
end
|
1009
|
-
|
1010
|
-
it "is not marked as updated by last action" do
|
1011
|
-
expect(resource).not_to be_updated_by_last_action
|
1012
|
-
end
|
1013
|
-
end
|
1014
|
-
end
|
1015
|
-
|
1016
|
-
end
|
1017
|
-
|
1018
|
-
shared_context Chef::Resource::File do
|
1019
|
-
if windows?
|
1020
|
-
require "chef/win32/file"
|
1021
|
-
end
|
1022
|
-
|
1023
|
-
# We create the files in a different directory than tmp to exercise
|
1024
|
-
# different file deployment strategies more completely.
|
1025
|
-
let(:test_file_dir) do
|
1026
|
-
if windows?
|
1027
|
-
File.join(ENV["systemdrive"], "test-dir")
|
1028
|
-
else
|
1029
|
-
File.join(CHEF_SPEC_DATA, "test-dir")
|
1030
|
-
end
|
1031
|
-
end
|
1032
|
-
|
1033
|
-
let(:path) do
|
1034
|
-
File.join(test_file_dir, make_tmpname(file_base))
|
1035
|
-
end
|
1036
|
-
|
1037
|
-
before do
|
1038
|
-
FileUtils.mkdir_p(test_file_dir)
|
1039
|
-
end
|
1040
|
-
|
1041
|
-
after(:each) do
|
1042
|
-
FileUtils.rm_r(path) if File.exists?(path)
|
1043
|
-
FileUtils.rm_r(CHEF_SPEC_BACKUP_PATH) if File.exists?(CHEF_SPEC_BACKUP_PATH)
|
1044
|
-
end
|
1045
|
-
|
1046
|
-
after do
|
1047
|
-
FileUtils.rm_rf(test_file_dir)
|
1048
|
-
end
|
1049
|
-
end
|
1
|
+
#
|
2
|
+
# Author:: Seth Chisamore (<schisamo@chef.io>)
|
3
|
+
# Copyright:: Copyright 2011-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
|
+
|
19
|
+
shared_context "deploying with move" do
|
20
|
+
before do
|
21
|
+
Chef::Config[:file_backup_path] = CHEF_SPEC_BACKUP_PATH
|
22
|
+
Chef::Config[:file_atomic_update] = true
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
shared_context "deploying with copy" do
|
27
|
+
before do
|
28
|
+
Chef::Config[:file_backup_path] = CHEF_SPEC_BACKUP_PATH
|
29
|
+
Chef::Config[:file_atomic_update] = false
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
shared_context "deploying via tmpdir" do
|
34
|
+
before do
|
35
|
+
Chef::Config[:file_staging_uses_destdir] = false
|
36
|
+
Chef::Config[:file_backup_path] = CHEF_SPEC_BACKUP_PATH
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
shared_context "deploying via destdir" do
|
41
|
+
before do
|
42
|
+
Chef::Config[:file_staging_uses_destdir] = true
|
43
|
+
Chef::Config[:file_backup_path] = CHEF_SPEC_BACKUP_PATH
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
shared_examples_for "a file with the wrong content" do
|
48
|
+
before do
|
49
|
+
# Assert starting state is as expected
|
50
|
+
expect(File).to exist(path)
|
51
|
+
# Kinda weird, in this case @expected_checksum is the cksum of the file
|
52
|
+
# with incorrect content.
|
53
|
+
expect(sha256_checksum(path)).to eq(@expected_checksum)
|
54
|
+
end
|
55
|
+
|
56
|
+
describe "when diff is disabled" do
|
57
|
+
|
58
|
+
include_context "diff disabled"
|
59
|
+
|
60
|
+
context "when running action :create" do
|
61
|
+
context "with backups enabled" do
|
62
|
+
before do
|
63
|
+
resource.run_action(:create)
|
64
|
+
end
|
65
|
+
|
66
|
+
it "overwrites the file with the updated content when the :create action is run" do
|
67
|
+
expect(File.stat(path).mtime).to be > @expected_mtime
|
68
|
+
expect(sha256_checksum(path)).not_to eq(@expected_checksum)
|
69
|
+
end
|
70
|
+
|
71
|
+
it "backs up the existing file" do
|
72
|
+
expect(Dir.glob(backup_glob).size).to equal(1)
|
73
|
+
end
|
74
|
+
|
75
|
+
it "is marked as updated by last action" do
|
76
|
+
expect(resource).to be_updated_by_last_action
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should restore the security contexts on selinux", :selinux_only do
|
80
|
+
expect(selinux_security_context_restored?(path)).to be_truthy
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
context "with backups disabled" do
|
85
|
+
before do
|
86
|
+
resource.backup(0)
|
87
|
+
resource.run_action(:create)
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should not attempt to backup the existing file if :backup == 0" do
|
91
|
+
expect(Dir.glob(backup_glob).size).to equal(0)
|
92
|
+
end
|
93
|
+
|
94
|
+
it "should restore the security contexts on selinux", :selinux_only do
|
95
|
+
expect(selinux_security_context_restored?(path)).to be_truthy
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
context "with a checksum that does not match the content to deploy" do
|
100
|
+
before do
|
101
|
+
resource.checksum("aAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaA")
|
102
|
+
end
|
103
|
+
|
104
|
+
it "raises an exception" do
|
105
|
+
expect { resource.run_action(:create) }.to raise_error(Chef::Exceptions::ChecksumMismatch)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
describe "when running action :create_if_missing" do
|
111
|
+
before do
|
112
|
+
resource.run_action(:create_if_missing)
|
113
|
+
end
|
114
|
+
|
115
|
+
it "doesn't overwrite the file when the :create_if_missing action is run" do
|
116
|
+
expect(File.stat(path).mtime).to eq(@expected_mtime)
|
117
|
+
expect(sha256_checksum(path)).to eq(@expected_checksum)
|
118
|
+
end
|
119
|
+
|
120
|
+
it "is not marked as updated" do
|
121
|
+
expect(resource).not_to be_updated_by_last_action
|
122
|
+
end
|
123
|
+
|
124
|
+
it "should restore the security contexts on selinux", :selinux_only do
|
125
|
+
expect(selinux_security_context_restored?(path)).to be_truthy
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
describe "when running action :delete" do
|
130
|
+
before do
|
131
|
+
resource.run_action(:delete)
|
132
|
+
end
|
133
|
+
|
134
|
+
it "deletes the file" do
|
135
|
+
expect(File).not_to exist(path)
|
136
|
+
end
|
137
|
+
|
138
|
+
it "is marked as updated by last action" do
|
139
|
+
expect(resource).to be_updated_by_last_action
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
end
|
144
|
+
|
145
|
+
context "when diff is enabled" do
|
146
|
+
describe "sensitive attribute" do
|
147
|
+
context "should be insensitive by default" do
|
148
|
+
it { expect(resource.sensitive).to(be_falsey) }
|
149
|
+
end
|
150
|
+
|
151
|
+
context "when set" do
|
152
|
+
before { resource.sensitive(true) }
|
153
|
+
|
154
|
+
it "should be set on the resource" do
|
155
|
+
expect(resource.sensitive).to(be_truthy)
|
156
|
+
end
|
157
|
+
|
158
|
+
context "when running :create action" do
|
159
|
+
let(:provider) { resource.provider_for_action(:create) }
|
160
|
+
let(:reporter_messages) { provider.instance_variable_get("@converge_actions").actions[0][0] }
|
161
|
+
|
162
|
+
before do
|
163
|
+
provider.run_action
|
164
|
+
end
|
165
|
+
|
166
|
+
it "should suppress the diff" do
|
167
|
+
expect(resource.diff).to(include("suppressed sensitive resource"))
|
168
|
+
expect(reporter_messages[1]).to eq("suppressed sensitive resource")
|
169
|
+
end
|
170
|
+
|
171
|
+
it "should still include the updated checksums" do
|
172
|
+
expect(reporter_messages[0]).to include("update content in file")
|
173
|
+
end
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
shared_examples_for "a file with the correct content" do
|
181
|
+
before do
|
182
|
+
# Assert starting state is as expected
|
183
|
+
expect(File).to exist(path)
|
184
|
+
expect(sha256_checksum(path)).to eq(@expected_checksum)
|
185
|
+
end
|
186
|
+
|
187
|
+
include_context "diff disabled"
|
188
|
+
|
189
|
+
describe "when running action :create" do
|
190
|
+
before do
|
191
|
+
resource.run_action(:create)
|
192
|
+
end
|
193
|
+
it "does not overwrite the original when the :create action is run" do
|
194
|
+
expect(sha256_checksum(path)).to eq(@expected_checksum)
|
195
|
+
end
|
196
|
+
|
197
|
+
it "does not update the mtime of the file when the :create action is run" do
|
198
|
+
expect(File.stat(path).mtime).to eq(@expected_mtime)
|
199
|
+
end
|
200
|
+
|
201
|
+
it "is not marked as updated by last action" do
|
202
|
+
expect(resource).not_to be_updated_by_last_action
|
203
|
+
end
|
204
|
+
|
205
|
+
it "should restore the security contexts on selinux", :selinux_only do
|
206
|
+
expect(selinux_security_context_restored?(path)).to be_truthy
|
207
|
+
end
|
208
|
+
end
|
209
|
+
|
210
|
+
describe "when running action :create_if_missing" do
|
211
|
+
before do
|
212
|
+
resource.run_action(:create_if_missing)
|
213
|
+
end
|
214
|
+
|
215
|
+
it "doesn't overwrite the file when the :create_if_missing action is run" do
|
216
|
+
expect(sha256_checksum(path)).to eq(@expected_checksum)
|
217
|
+
end
|
218
|
+
|
219
|
+
it "is not marked as updated by last action" do
|
220
|
+
expect(resource).not_to be_updated_by_last_action
|
221
|
+
end
|
222
|
+
|
223
|
+
it "should restore the security contexts on selinux", :selinux_only do
|
224
|
+
expect(selinux_security_context_restored?(path)).to be_truthy
|
225
|
+
end
|
226
|
+
end
|
227
|
+
|
228
|
+
describe "when running action :delete" do
|
229
|
+
before do
|
230
|
+
resource.run_action(:delete)
|
231
|
+
end
|
232
|
+
|
233
|
+
it "deletes the file when the :delete action is run" do
|
234
|
+
expect(File).not_to exist(path)
|
235
|
+
end
|
236
|
+
|
237
|
+
it "is marked as updated by last action" do
|
238
|
+
expect(resource).to be_updated_by_last_action
|
239
|
+
end
|
240
|
+
end
|
241
|
+
end
|
242
|
+
|
243
|
+
shared_examples_for "a file resource" do
|
244
|
+
describe "when deploying with :move" do
|
245
|
+
|
246
|
+
include_context "deploying with move"
|
247
|
+
|
248
|
+
describe "when deploying via tmpdir" do
|
249
|
+
|
250
|
+
include_context "deploying via tmpdir"
|
251
|
+
|
252
|
+
it_behaves_like "a configured file resource"
|
253
|
+
end
|
254
|
+
|
255
|
+
describe "when deploying via destdir" do
|
256
|
+
|
257
|
+
include_context "deploying via destdir"
|
258
|
+
|
259
|
+
it_behaves_like "a configured file resource"
|
260
|
+
end
|
261
|
+
end
|
262
|
+
|
263
|
+
describe "when deploying with :copy" do
|
264
|
+
|
265
|
+
include_context "deploying with copy"
|
266
|
+
|
267
|
+
describe "when deploying via tmpdir" do
|
268
|
+
|
269
|
+
include_context "deploying via tmpdir"
|
270
|
+
|
271
|
+
it_behaves_like "a configured file resource"
|
272
|
+
end
|
273
|
+
|
274
|
+
describe "when deploying via destdir" do
|
275
|
+
|
276
|
+
include_context "deploying via destdir"
|
277
|
+
|
278
|
+
it_behaves_like "a configured file resource"
|
279
|
+
end
|
280
|
+
end
|
281
|
+
|
282
|
+
describe "when running under why run" do
|
283
|
+
|
284
|
+
before do
|
285
|
+
Chef::Config[:why_run] = true
|
286
|
+
Chef::Config[:ssl_verify_mode] = :verify_none
|
287
|
+
end
|
288
|
+
|
289
|
+
after do
|
290
|
+
Chef::Config[:why_run] = false
|
291
|
+
end
|
292
|
+
|
293
|
+
context "and the resource has a path with a missing intermediate directory" do
|
294
|
+
# CHEF-3978
|
295
|
+
|
296
|
+
let(:path) do
|
297
|
+
File.join(test_file_dir, "intermediate_dir", make_tmpname(file_base))
|
298
|
+
end
|
299
|
+
|
300
|
+
it "successfully doesn't create the file" do
|
301
|
+
resource.run_action(:create) # should not raise
|
302
|
+
expect(File).not_to exist(path)
|
303
|
+
end
|
304
|
+
end
|
305
|
+
|
306
|
+
end
|
307
|
+
|
308
|
+
describe "when setting atomic_update" do
|
309
|
+
it "booleans should work" do
|
310
|
+
expect { resource.atomic_update(true) }.not_to raise_error
|
311
|
+
expect { resource.atomic_update(false) }.not_to raise_error
|
312
|
+
end
|
313
|
+
|
314
|
+
it "anything else should raise an error" do
|
315
|
+
expect { resource.atomic_update(:copy) }.to raise_error(ArgumentError)
|
316
|
+
expect { resource.atomic_update(:move) }.to raise_error(ArgumentError)
|
317
|
+
expect { resource.atomic_update(958) }.to raise_error(ArgumentError)
|
318
|
+
end
|
319
|
+
end
|
320
|
+
|
321
|
+
end
|
322
|
+
|
323
|
+
shared_examples_for "file resource not pointing to a real file" do
|
324
|
+
def symlink?(file_path)
|
325
|
+
if windows?
|
326
|
+
Chef::ReservedNames::Win32::File.symlink?(file_path)
|
327
|
+
else
|
328
|
+
File.symlink?(file_path)
|
329
|
+
end
|
330
|
+
end
|
331
|
+
|
332
|
+
def real_file?(file_path)
|
333
|
+
!symlink?(file_path) && File.file?(file_path)
|
334
|
+
end
|
335
|
+
|
336
|
+
before do
|
337
|
+
Chef::Config[:ssl_verify_mode] = :verify_none
|
338
|
+
end
|
339
|
+
|
340
|
+
describe "when force_unlink is set to true" do
|
341
|
+
it ":create unlinks the target" do
|
342
|
+
expect(real_file?(path)).to be_falsey
|
343
|
+
resource.force_unlink(true)
|
344
|
+
resource.run_action(:create)
|
345
|
+
expect(real_file?(path)).to be_truthy
|
346
|
+
expect(binread(path)).to eq(expected_content)
|
347
|
+
expect(resource).to be_updated_by_last_action
|
348
|
+
end
|
349
|
+
end
|
350
|
+
|
351
|
+
describe "when force_unlink is set to false" do
|
352
|
+
it ":create raises an error" do
|
353
|
+
expect { resource.run_action(:create) }.to raise_error(Chef::Exceptions::FileTypeMismatch)
|
354
|
+
end
|
355
|
+
end
|
356
|
+
|
357
|
+
describe "when force_unlink is not set (default)" do
|
358
|
+
it ":create raises an error" do
|
359
|
+
expect { resource.run_action(:create) }.to raise_error(Chef::Exceptions::FileTypeMismatch)
|
360
|
+
end
|
361
|
+
end
|
362
|
+
end
|
363
|
+
|
364
|
+
shared_examples_for "a configured file resource" do
|
365
|
+
|
366
|
+
include_context "diff disabled"
|
367
|
+
|
368
|
+
before do
|
369
|
+
Chef::Log.level = :info
|
370
|
+
Chef::Config[:ssl_verify_mode] = :verify_none
|
371
|
+
end
|
372
|
+
|
373
|
+
# note the stripping of the drive letter from the tmpdir on windows
|
374
|
+
let(:backup_glob) { File.join(CHEF_SPEC_BACKUP_PATH, test_file_dir.sub(/^([A-Za-z]:)/, ""), "#{file_base}*") }
|
375
|
+
|
376
|
+
# Most tests update the resource, but a few do not. We need to test that the
|
377
|
+
# resource is marked updated or not correctly, but the test contexts are
|
378
|
+
# composed between correct/incorrect content and correct/incorrect
|
379
|
+
# permissions. We override this "let" definition in the context where content
|
380
|
+
# and permissions are correct.
|
381
|
+
let(:expect_updated?) { true }
|
382
|
+
|
383
|
+
include Chef::Mixin::ShellOut
|
384
|
+
|
385
|
+
def selinux_security_context_restored?(path)
|
386
|
+
@restorecon_path = which("restorecon") if @restorecon_path.nil?
|
387
|
+
restorecon_test_command = "#{@restorecon_path} -n -v #{path}"
|
388
|
+
cmdresult = shell_out(restorecon_test_command)
|
389
|
+
# restorecon will print the required changes to stdout if any is
|
390
|
+
# needed
|
391
|
+
cmdresult.stdout.empty?
|
392
|
+
end
|
393
|
+
|
394
|
+
def binread(file)
|
395
|
+
content = File.open(file, "rb") do |f|
|
396
|
+
f.read
|
397
|
+
end
|
398
|
+
content.force_encoding(Encoding::BINARY) if "".respond_to?(:force_encoding)
|
399
|
+
content
|
400
|
+
end
|
401
|
+
|
402
|
+
context "when the target file is a symlink", :not_supported_on_win2k3 do
|
403
|
+
let(:symlink_target) {
|
404
|
+
File.join(CHEF_SPEC_DATA, "file-test-target")
|
405
|
+
}
|
406
|
+
|
407
|
+
describe "when configured not to manage symlink's target" do
|
408
|
+
before(:each) do
|
409
|
+
# configure not to manage symlink source
|
410
|
+
resource.manage_symlink_source(false)
|
411
|
+
|
412
|
+
# create symlinks for test context
|
413
|
+
FileUtils.touch(symlink_target)
|
414
|
+
|
415
|
+
if windows?
|
416
|
+
Chef::ReservedNames::Win32::File.symlink(symlink_target, path)
|
417
|
+
else
|
418
|
+
File.symlink(symlink_target, path)
|
419
|
+
end
|
420
|
+
end
|
421
|
+
|
422
|
+
after(:each) do
|
423
|
+
FileUtils.rm_rf(symlink_target)
|
424
|
+
FileUtils.rm_rf(path)
|
425
|
+
end
|
426
|
+
|
427
|
+
describe "when symlink target has correct content" do
|
428
|
+
before(:each) do
|
429
|
+
File.open(symlink_target, "wb") { |f| f.print expected_content }
|
430
|
+
end
|
431
|
+
|
432
|
+
it_behaves_like "file resource not pointing to a real file"
|
433
|
+
end
|
434
|
+
|
435
|
+
describe "when symlink target has the wrong content" do
|
436
|
+
before(:each) do
|
437
|
+
File.open(symlink_target, "wb") { |f| f.print "This is so wrong!!!" }
|
438
|
+
end
|
439
|
+
|
440
|
+
after(:each) do
|
441
|
+
# symlink should never be followed
|
442
|
+
expect(binread(symlink_target)).to eq("This is so wrong!!!")
|
443
|
+
end
|
444
|
+
|
445
|
+
it_behaves_like "file resource not pointing to a real file"
|
446
|
+
end
|
447
|
+
end
|
448
|
+
|
449
|
+
# Unix-only for now. Windows behavior may differ because of how ACL
|
450
|
+
# management handles symlinks. Since symlinks are rare on Windows and this
|
451
|
+
# feature primarily exists to support the case where a well-known file
|
452
|
+
# (e.g., resolv.conf) has been converted to a symlink, we're okay with the
|
453
|
+
# discrepancy.
|
454
|
+
context "when configured to manage the symlink source", :unix_only do
|
455
|
+
|
456
|
+
before do
|
457
|
+
resource.manage_symlink_source(true)
|
458
|
+
end
|
459
|
+
|
460
|
+
context "but the symlink is part of a loop" do
|
461
|
+
let(:link1_path) { File.join(CHEF_SPEC_DATA, "points-to-link2") }
|
462
|
+
let(:link2_path) { File.join(CHEF_SPEC_DATA, "points-to-link1") }
|
463
|
+
|
464
|
+
before do
|
465
|
+
# point resource at link1:
|
466
|
+
resource.path(link1_path)
|
467
|
+
# create symlinks for test context
|
468
|
+
File.symlink(link1_path, link2_path)
|
469
|
+
File.symlink(link2_path, link1_path)
|
470
|
+
end
|
471
|
+
|
472
|
+
after(:each) do
|
473
|
+
FileUtils.rm_rf(link1_path)
|
474
|
+
FileUtils.rm_rf(link2_path)
|
475
|
+
end
|
476
|
+
|
477
|
+
it "raises an InvalidSymlink error" do
|
478
|
+
expect { resource.run_action(:create) }.to raise_error(Chef::Exceptions::InvalidSymlink)
|
479
|
+
end
|
480
|
+
|
481
|
+
it "issues a warning/assumption in whyrun mode" do
|
482
|
+
begin
|
483
|
+
Chef::Config[:why_run] = true
|
484
|
+
resource.run_action(:create) # should not raise
|
485
|
+
ensure
|
486
|
+
Chef::Config[:why_run] = false
|
487
|
+
end
|
488
|
+
end
|
489
|
+
end
|
490
|
+
|
491
|
+
context "but the symlink points to a nonexistent file" do
|
492
|
+
let(:link_path) { File.join(CHEF_SPEC_DATA, "points-to-nothing") }
|
493
|
+
let(:not_existent_source) { File.join(CHEF_SPEC_DATA, "i-am-not-here") }
|
494
|
+
|
495
|
+
before do
|
496
|
+
resource.path(link_path)
|
497
|
+
# create symlinks for test context
|
498
|
+
File.symlink(not_existent_source, link_path)
|
499
|
+
FileUtils.rm_rf(not_existent_source)
|
500
|
+
end
|
501
|
+
|
502
|
+
after(:each) do
|
503
|
+
FileUtils.rm_rf(link_path)
|
504
|
+
end
|
505
|
+
it "raises an InvalidSymlink error" do
|
506
|
+
expect { resource.run_action(:create) }.to raise_error(Chef::Exceptions::InvalidSymlink)
|
507
|
+
end
|
508
|
+
|
509
|
+
it "issues a warning/assumption in whyrun mode" do
|
510
|
+
begin
|
511
|
+
Chef::Config[:why_run] = true
|
512
|
+
resource.run_action(:create) # should not raise
|
513
|
+
ensure
|
514
|
+
Chef::Config[:why_run] = false
|
515
|
+
end
|
516
|
+
end
|
517
|
+
end
|
518
|
+
|
519
|
+
context "but the symlink is points to a non-file fs entry" do
|
520
|
+
let(:link_path) { File.join(CHEF_SPEC_DATA, "points-to-dir") }
|
521
|
+
let(:not_a_file_path) { File.join(CHEF_SPEC_DATA, "dir-at-end-of-symlink") }
|
522
|
+
|
523
|
+
before do
|
524
|
+
# point resource at link1:
|
525
|
+
resource.path(link_path)
|
526
|
+
# create symlinks for test context
|
527
|
+
File.symlink(not_a_file_path, link_path)
|
528
|
+
Dir.mkdir(not_a_file_path)
|
529
|
+
end
|
530
|
+
|
531
|
+
after(:each) do
|
532
|
+
FileUtils.rm_rf(link_path)
|
533
|
+
FileUtils.rm_rf(not_a_file_path)
|
534
|
+
end
|
535
|
+
|
536
|
+
it "raises an InvalidSymlink error" do
|
537
|
+
expect { resource.run_action(:create) }.to raise_error(Chef::Exceptions::FileTypeMismatch)
|
538
|
+
end
|
539
|
+
|
540
|
+
it "issues a warning/assumption in whyrun mode" do
|
541
|
+
begin
|
542
|
+
Chef::Config[:why_run] = true
|
543
|
+
resource.run_action(:create) # should not raise
|
544
|
+
ensure
|
545
|
+
Chef::Config[:why_run] = false
|
546
|
+
end
|
547
|
+
end
|
548
|
+
end
|
549
|
+
|
550
|
+
context "when the symlink source is a real file" do
|
551
|
+
|
552
|
+
let(:wrong_content) { "this is the wrong content" }
|
553
|
+
let(:link_path) { File.join(CHEF_SPEC_DATA, "points-to-real-file") }
|
554
|
+
|
555
|
+
before do
|
556
|
+
# point resource at link:
|
557
|
+
resource.path(link_path)
|
558
|
+
# create symlinks for test context
|
559
|
+
File.symlink(path, link_path)
|
560
|
+
end
|
561
|
+
|
562
|
+
after(:each) do
|
563
|
+
# shared examples should not change our test setup of a file resource
|
564
|
+
# pointing at a symlink:
|
565
|
+
expect(resource.path).to eq(link_path)
|
566
|
+
FileUtils.rm_rf(link_path)
|
567
|
+
end
|
568
|
+
|
569
|
+
context "and the permissions are incorrect" do
|
570
|
+
before do
|
571
|
+
# Create source (real) file
|
572
|
+
File.open(path, "wb") { |f| f.write(expected_content) }
|
573
|
+
end
|
574
|
+
|
575
|
+
include_context "setup broken permissions"
|
576
|
+
|
577
|
+
include_examples "a securable resource with existing target"
|
578
|
+
|
579
|
+
it "does not replace the symlink with a real file" do
|
580
|
+
resource.run_action(:create)
|
581
|
+
expect(File).to be_symlink(link_path)
|
582
|
+
end
|
583
|
+
|
584
|
+
end
|
585
|
+
|
586
|
+
context "and the content is incorrect" do
|
587
|
+
before do
|
588
|
+
# Create source (real) file
|
589
|
+
File.open(path, "wb") { |f| f.write(wrong_content) }
|
590
|
+
end
|
591
|
+
|
592
|
+
it "marks the resource as updated" do
|
593
|
+
resource.run_action(:create)
|
594
|
+
expect(resource).to be_updated_by_last_action
|
595
|
+
end
|
596
|
+
|
597
|
+
it "does not replace the symlink with a real file" do
|
598
|
+
resource.run_action(:create)
|
599
|
+
expect(File).to be_symlink(link_path)
|
600
|
+
end
|
601
|
+
end
|
602
|
+
|
603
|
+
context "and the content and permissions are correct" do
|
604
|
+
let(:expect_updated?) { false }
|
605
|
+
|
606
|
+
before do
|
607
|
+
# Create source (real) file
|
608
|
+
File.open(path, "wb") { |f| f.write(expected_content) }
|
609
|
+
end
|
610
|
+
include_context "setup correct permissions"
|
611
|
+
|
612
|
+
include_examples "a securable resource with existing target"
|
613
|
+
|
614
|
+
end
|
615
|
+
|
616
|
+
end
|
617
|
+
|
618
|
+
context "when the symlink points to a symlink which points to a real file" do
|
619
|
+
|
620
|
+
let(:wrong_content) { "this is the wrong content" }
|
621
|
+
let(:link_to_file_path) { File.join(CHEF_SPEC_DATA, "points-to-real-file") }
|
622
|
+
let(:link_to_link_path) { File.join(CHEF_SPEC_DATA, "points-to-next-link") }
|
623
|
+
|
624
|
+
before do
|
625
|
+
# point resource at link:
|
626
|
+
resource.path(link_to_link_path)
|
627
|
+
# create symlinks for test context
|
628
|
+
File.symlink(path, link_to_file_path)
|
629
|
+
File.symlink(link_to_file_path, link_to_link_path)
|
630
|
+
|
631
|
+
# Create source (real) file
|
632
|
+
File.open(path, "wb") { |f| f.write(wrong_content) }
|
633
|
+
end
|
634
|
+
|
635
|
+
include_context "setup broken permissions"
|
636
|
+
|
637
|
+
include_examples "a securable resource with existing target"
|
638
|
+
|
639
|
+
after(:each) do
|
640
|
+
# shared examples should not change our test setup of a file resource
|
641
|
+
# pointing at a symlink:
|
642
|
+
expect(resource.path).to eq(link_to_link_path)
|
643
|
+
FileUtils.rm_rf(link_to_file_path)
|
644
|
+
FileUtils.rm_rf(link_to_link_path)
|
645
|
+
end
|
646
|
+
|
647
|
+
it "does not replace the symlink with a real file" do
|
648
|
+
resource.run_action(:create)
|
649
|
+
expect(File).to be_symlink(link_to_link_path)
|
650
|
+
expect(File).to be_symlink(link_to_file_path)
|
651
|
+
end
|
652
|
+
|
653
|
+
end
|
654
|
+
end
|
655
|
+
end
|
656
|
+
|
657
|
+
context "when the target file does not exist" do
|
658
|
+
before(:each) do
|
659
|
+
FileUtils.rm_rf(path)
|
660
|
+
end
|
661
|
+
|
662
|
+
after(:each) do
|
663
|
+
FileUtils.rm_rf(path)
|
664
|
+
end
|
665
|
+
|
666
|
+
def symlink?(file_path)
|
667
|
+
if windows?
|
668
|
+
Chef::ReservedNames::Win32::File.symlink?(file_path)
|
669
|
+
else
|
670
|
+
File.symlink?(file_path)
|
671
|
+
end
|
672
|
+
end
|
673
|
+
|
674
|
+
def real_file?(file_path)
|
675
|
+
!symlink?(file_path) && File.file?(file_path)
|
676
|
+
end
|
677
|
+
|
678
|
+
describe "when force_unlink is set to true" do
|
679
|
+
it ":create updates the target" do
|
680
|
+
resource.force_unlink(true)
|
681
|
+
resource.run_action(:create)
|
682
|
+
expect(real_file?(path)).to be_truthy
|
683
|
+
expect(binread(path)).to eq(expected_content)
|
684
|
+
expect(resource).to be_updated_by_last_action
|
685
|
+
end
|
686
|
+
end
|
687
|
+
|
688
|
+
describe "when force_unlink is set to false" do
|
689
|
+
it ":create updates the target" do
|
690
|
+
resource.force_unlink(true)
|
691
|
+
resource.run_action(:create)
|
692
|
+
expect(real_file?(path)).to be_truthy
|
693
|
+
expect(binread(path)).to eq(expected_content)
|
694
|
+
expect(resource).to be_updated_by_last_action
|
695
|
+
end
|
696
|
+
end
|
697
|
+
|
698
|
+
describe "when force_unlink is not set (default)" do
|
699
|
+
it ":create updates the target" do
|
700
|
+
resource.force_unlink(true)
|
701
|
+
resource.run_action(:create)
|
702
|
+
expect(real_file?(path)).to be_truthy
|
703
|
+
expect(binread(path)).to eq(expected_content)
|
704
|
+
expect(resource).to be_updated_by_last_action
|
705
|
+
end
|
706
|
+
end
|
707
|
+
end
|
708
|
+
|
709
|
+
context "when the target file is a directory" do
|
710
|
+
before(:each) do
|
711
|
+
FileUtils.mkdir_p(path)
|
712
|
+
end
|
713
|
+
|
714
|
+
after(:each) do
|
715
|
+
FileUtils.rm_rf(path)
|
716
|
+
end
|
717
|
+
|
718
|
+
it_behaves_like "file resource not pointing to a real file"
|
719
|
+
end
|
720
|
+
|
721
|
+
context "when the target file is a blockdev", :unix_only, :requires_root, :not_supported_on_solaris do
|
722
|
+
include Chef::Mixin::ShellOut
|
723
|
+
let(:path) do
|
724
|
+
File.join(CHEF_SPEC_DATA, "testdev")
|
725
|
+
end
|
726
|
+
|
727
|
+
before(:each) do
|
728
|
+
result = shell_out("mknod #{path} b 1 2")
|
729
|
+
result.stderr.empty?
|
730
|
+
end
|
731
|
+
|
732
|
+
after(:each) do
|
733
|
+
FileUtils.rm_rf(path)
|
734
|
+
end
|
735
|
+
|
736
|
+
it_behaves_like "file resource not pointing to a real file"
|
737
|
+
end
|
738
|
+
|
739
|
+
context "when the target file is a chardev", :unix_only, :requires_root, :not_supported_on_solaris do
|
740
|
+
include Chef::Mixin::ShellOut
|
741
|
+
let(:path) do
|
742
|
+
File.join(CHEF_SPEC_DATA, "testdev")
|
743
|
+
end
|
744
|
+
|
745
|
+
before(:each) do
|
746
|
+
result = shell_out("mknod #{path} c 1 2")
|
747
|
+
result.stderr.empty?
|
748
|
+
end
|
749
|
+
|
750
|
+
after(:each) do
|
751
|
+
FileUtils.rm_rf(path)
|
752
|
+
end
|
753
|
+
|
754
|
+
it_behaves_like "file resource not pointing to a real file"
|
755
|
+
end
|
756
|
+
|
757
|
+
context "when the target file is a pipe", :unix_only do
|
758
|
+
include Chef::Mixin::ShellOut
|
759
|
+
let(:path) do
|
760
|
+
File.join(CHEF_SPEC_DATA, "testpipe")
|
761
|
+
end
|
762
|
+
|
763
|
+
before(:each) do
|
764
|
+
result = shell_out("mkfifo #{path}")
|
765
|
+
result.stderr.empty?
|
766
|
+
end
|
767
|
+
|
768
|
+
after(:each) do
|
769
|
+
FileUtils.rm_rf(path)
|
770
|
+
end
|
771
|
+
|
772
|
+
it_behaves_like "file resource not pointing to a real file"
|
773
|
+
end
|
774
|
+
|
775
|
+
context "when the target file is a socket", :unix_only do
|
776
|
+
require "socket"
|
777
|
+
|
778
|
+
# It turns out that the path to a socket can have at most ~104
|
779
|
+
# bytes. Therefore we are creating our sockets in tmpdir so that
|
780
|
+
# they have a shorter path.
|
781
|
+
let(:test_socket_dir) { File.join(Dir.tmpdir, "sockets") }
|
782
|
+
|
783
|
+
before do
|
784
|
+
FileUtils.mkdir_p(test_socket_dir)
|
785
|
+
end
|
786
|
+
|
787
|
+
after do
|
788
|
+
FileUtils.rm_rf(test_socket_dir)
|
789
|
+
end
|
790
|
+
|
791
|
+
let(:path) do
|
792
|
+
File.join(test_socket_dir, "testsocket")
|
793
|
+
end
|
794
|
+
|
795
|
+
before(:each) do
|
796
|
+
expect(path.bytesize).to be <= 104
|
797
|
+
UNIXServer.new(path)
|
798
|
+
end
|
799
|
+
|
800
|
+
after(:each) do
|
801
|
+
FileUtils.rm_rf(path)
|
802
|
+
end
|
803
|
+
|
804
|
+
it_behaves_like "file resource not pointing to a real file"
|
805
|
+
end
|
806
|
+
|
807
|
+
# Regression test for http://tickets.opscode.com/browse/CHEF-4082
|
808
|
+
context "when notification is configured" do
|
809
|
+
describe "when path is specified with normal separator" do
|
810
|
+
before do
|
811
|
+
@notified_resource = Chef::Resource.new("punk", resource.run_context)
|
812
|
+
resource.notifies(:run, @notified_resource, :immediately)
|
813
|
+
resource.run_action(:create)
|
814
|
+
end
|
815
|
+
|
816
|
+
it "should notify the other resources correctly" do
|
817
|
+
expect(resource).to be_updated_by_last_action
|
818
|
+
expect(resource.run_context.immediate_notifications(resource).length).to eq(1)
|
819
|
+
end
|
820
|
+
end
|
821
|
+
|
822
|
+
describe "when path is specified with windows separator", :windows_only do
|
823
|
+
let(:path) {
|
824
|
+
File.join(test_file_dir, make_tmpname(file_base)).gsub(::File::SEPARATOR, ::File::ALT_SEPARATOR)
|
825
|
+
}
|
826
|
+
|
827
|
+
before do
|
828
|
+
@notified_resource = Chef::Resource.new("punk", resource.run_context)
|
829
|
+
resource.notifies(:run, @notified_resource, :immediately)
|
830
|
+
resource.run_action(:create)
|
831
|
+
end
|
832
|
+
|
833
|
+
it "should notify the other resources correctly" do
|
834
|
+
expect(resource).to be_updated_by_last_action
|
835
|
+
expect(resource.run_context.immediate_notifications(resource).length).to eq(1)
|
836
|
+
end
|
837
|
+
end
|
838
|
+
end
|
839
|
+
|
840
|
+
context "when the target file does not exist" do
|
841
|
+
before do
|
842
|
+
# Assert starting state is expected
|
843
|
+
expect(File).not_to exist(path)
|
844
|
+
end
|
845
|
+
|
846
|
+
describe "when running action :create" do
|
847
|
+
before do
|
848
|
+
resource.run_action(:create)
|
849
|
+
end
|
850
|
+
|
851
|
+
it "creates the file when the :create action is run" do
|
852
|
+
expect(File).to exist(path)
|
853
|
+
end
|
854
|
+
|
855
|
+
it "creates the file with the correct content when the :create action is run" do
|
856
|
+
expect(binread(path)).to eq(expected_content)
|
857
|
+
end
|
858
|
+
|
859
|
+
it "is marked as updated by last action" do
|
860
|
+
expect(resource).to be_updated_by_last_action
|
861
|
+
end
|
862
|
+
|
863
|
+
it "should restore the security contexts on selinux", :selinux_only do
|
864
|
+
expect(selinux_security_context_restored?(path)).to be_truthy
|
865
|
+
end
|
866
|
+
end
|
867
|
+
|
868
|
+
describe "when running action :create_if_missing" do
|
869
|
+
before do
|
870
|
+
resource.run_action(:create_if_missing)
|
871
|
+
end
|
872
|
+
|
873
|
+
it "creates the file with the correct content" do
|
874
|
+
expect(binread(path)).to eq(expected_content)
|
875
|
+
end
|
876
|
+
|
877
|
+
it "is marked as updated by last action" do
|
878
|
+
expect(resource).to be_updated_by_last_action
|
879
|
+
end
|
880
|
+
|
881
|
+
it "should restore the security contexts on selinux", :selinux_only do
|
882
|
+
expect(selinux_security_context_restored?(path)).to be_truthy
|
883
|
+
end
|
884
|
+
end
|
885
|
+
|
886
|
+
describe "when running action :delete" do
|
887
|
+
before do
|
888
|
+
resource.run_action(:delete)
|
889
|
+
end
|
890
|
+
|
891
|
+
it "deletes the file when the :delete action is run" do
|
892
|
+
expect(File).not_to exist(path)
|
893
|
+
end
|
894
|
+
|
895
|
+
it "is not marked updated by last action" do
|
896
|
+
expect(resource).not_to be_updated_by_last_action
|
897
|
+
end
|
898
|
+
end
|
899
|
+
end
|
900
|
+
|
901
|
+
# Set up the context for security tests
|
902
|
+
def allowed_acl(sid, expected_perms)
|
903
|
+
[ ACE.access_allowed(sid, expected_perms[:specific]) ]
|
904
|
+
end
|
905
|
+
|
906
|
+
def denied_acl(sid, expected_perms)
|
907
|
+
[ ACE.access_denied(sid, expected_perms[:specific]) ]
|
908
|
+
end
|
909
|
+
|
910
|
+
def parent_inheritable_acls
|
911
|
+
dummy_file_path = File.join(test_file_dir, "dummy_file")
|
912
|
+
FileUtils.touch(dummy_file_path)
|
913
|
+
dummy_desc = get_security_descriptor(dummy_file_path)
|
914
|
+
FileUtils.rm_rf(dummy_file_path)
|
915
|
+
dummy_desc
|
916
|
+
end
|
917
|
+
|
918
|
+
it_behaves_like "a securable resource without existing target"
|
919
|
+
|
920
|
+
context "when the target file has the wrong content" do
|
921
|
+
before(:each) do
|
922
|
+
File.open(path, "wb") { |f| f.print "This is so wrong!!!" }
|
923
|
+
now = Time.now.to_i
|
924
|
+
File.utime(now - 9000, now - 9000, path)
|
925
|
+
|
926
|
+
@expected_mtime = File.stat(path).mtime
|
927
|
+
@expected_checksum = sha256_checksum(path)
|
928
|
+
end
|
929
|
+
|
930
|
+
describe "and the target file has the correct permissions" do
|
931
|
+
include_context "setup correct permissions"
|
932
|
+
|
933
|
+
it_behaves_like "a file with the wrong content"
|
934
|
+
|
935
|
+
it_behaves_like "a securable resource with existing target"
|
936
|
+
end
|
937
|
+
|
938
|
+
context "and the target file has incorrect permissions" do
|
939
|
+
include_context "setup broken permissions"
|
940
|
+
|
941
|
+
it_behaves_like "a file with the wrong content"
|
942
|
+
|
943
|
+
it_behaves_like "a securable resource with existing target"
|
944
|
+
end
|
945
|
+
end
|
946
|
+
|
947
|
+
context "when the target file has the correct content" do
|
948
|
+
before(:each) do
|
949
|
+
File.open(path, "wb") { |f| f.print expected_content }
|
950
|
+
now = Time.now.to_i
|
951
|
+
File.utime(now - 9000, now - 9000, path)
|
952
|
+
|
953
|
+
@expected_mtime = File.stat(path).mtime
|
954
|
+
@expected_checksum = sha256_checksum(path)
|
955
|
+
end
|
956
|
+
|
957
|
+
describe "and the target file has the correct permissions" do
|
958
|
+
|
959
|
+
# When permissions and content are correct, chef should do nothing and
|
960
|
+
# the resource should not be marked updated.
|
961
|
+
let(:expect_updated?) { false }
|
962
|
+
|
963
|
+
include_context "setup correct permissions"
|
964
|
+
|
965
|
+
it_behaves_like "a file with the correct content"
|
966
|
+
|
967
|
+
it_behaves_like "a securable resource with existing target"
|
968
|
+
end
|
969
|
+
|
970
|
+
context "and the target file has incorrect permissions" do
|
971
|
+
include_context "setup broken permissions"
|
972
|
+
|
973
|
+
it_behaves_like "a file with the correct content"
|
974
|
+
|
975
|
+
it_behaves_like "a securable resource with existing target"
|
976
|
+
end
|
977
|
+
end
|
978
|
+
|
979
|
+
# Regression test for http://tickets.opscode.com/browse/CHEF-4419
|
980
|
+
context "when the path starts with '/' and target file exists", :windows_only do
|
981
|
+
let(:path) do
|
982
|
+
File.join(test_file_dir[2..test_file_dir.length], make_tmpname(file_base))
|
983
|
+
end
|
984
|
+
|
985
|
+
before do
|
986
|
+
File.open(path, "wb") { |f| f.print expected_content }
|
987
|
+
now = Time.now.to_i
|
988
|
+
File.utime(now - 9000, now - 9000, path)
|
989
|
+
|
990
|
+
@expected_mtime = File.stat(path).mtime
|
991
|
+
@expected_checksum = sha256_checksum(path)
|
992
|
+
end
|
993
|
+
|
994
|
+
describe ":create action should run without any updates" do
|
995
|
+
before do
|
996
|
+
# Assert starting state is as expected
|
997
|
+
expect(File).to exist(path)
|
998
|
+
expect(sha256_checksum(path)).to eq(@expected_checksum)
|
999
|
+
resource.run_action(:create)
|
1000
|
+
end
|
1001
|
+
|
1002
|
+
it "does not overwrite the original when the :create action is run" do
|
1003
|
+
expect(sha256_checksum(path)).to eq(@expected_checksum)
|
1004
|
+
end
|
1005
|
+
|
1006
|
+
it "does not update the mtime of the file when the :create action is run" do
|
1007
|
+
expect(File.stat(path).mtime).to eq(@expected_mtime)
|
1008
|
+
end
|
1009
|
+
|
1010
|
+
it "is not marked as updated by last action" do
|
1011
|
+
expect(resource).not_to be_updated_by_last_action
|
1012
|
+
end
|
1013
|
+
end
|
1014
|
+
end
|
1015
|
+
|
1016
|
+
end
|
1017
|
+
|
1018
|
+
shared_context Chef::Resource::File do
|
1019
|
+
if windows?
|
1020
|
+
require "chef/win32/file"
|
1021
|
+
end
|
1022
|
+
|
1023
|
+
# We create the files in a different directory than tmp to exercise
|
1024
|
+
# different file deployment strategies more completely.
|
1025
|
+
let(:test_file_dir) do
|
1026
|
+
if windows?
|
1027
|
+
File.join(ENV["systemdrive"], "test-dir")
|
1028
|
+
else
|
1029
|
+
File.join(CHEF_SPEC_DATA, "test-dir")
|
1030
|
+
end
|
1031
|
+
end
|
1032
|
+
|
1033
|
+
let(:path) do
|
1034
|
+
File.join(test_file_dir, make_tmpname(file_base))
|
1035
|
+
end
|
1036
|
+
|
1037
|
+
before do
|
1038
|
+
FileUtils.mkdir_p(test_file_dir)
|
1039
|
+
end
|
1040
|
+
|
1041
|
+
after(:each) do
|
1042
|
+
FileUtils.rm_r(path) if File.exists?(path)
|
1043
|
+
FileUtils.rm_r(CHEF_SPEC_BACKUP_PATH) if File.exists?(CHEF_SPEC_BACKUP_PATH)
|
1044
|
+
end
|
1045
|
+
|
1046
|
+
after do
|
1047
|
+
FileUtils.rm_rf(test_file_dir)
|
1048
|
+
end
|
1049
|
+
end
|