knife 18.6.13 → 18.7.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +23 -23
- data/LICENSE +201 -201
- data/Rakefile +33 -33
- data/bin/knife +24 -24
- data/knife.gemspec +65 -65
- data/lib/chef/application/knife.rb +237 -237
- data/lib/chef/chef_fs/knife.rb +162 -162
- data/lib/chef/knife/acl_add.rb +57 -57
- data/lib/chef/knife/acl_base.rb +183 -183
- data/lib/chef/knife/acl_bulk_add.rb +78 -78
- data/lib/chef/knife/acl_bulk_remove.rb +83 -83
- data/lib/chef/knife/acl_remove.rb +62 -62
- data/lib/chef/knife/acl_show.rb +56 -56
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +160 -160
- data/lib/chef/knife/bootstrap/client_builder.rb +212 -212
- data/lib/chef/knife/bootstrap/templates/README.md +11 -11
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +249 -249
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +278 -278
- data/lib/chef/knife/bootstrap/train_connector.rb +334 -334
- data/lib/chef/knife/bootstrap.rb +1229 -1224
- data/lib/chef/knife/client_bulk_delete.rb +104 -104
- data/lib/chef/knife/client_create.rb +140 -140
- data/lib/chef/knife/client_delete.rb +62 -62
- data/lib/chef/knife/client_edit.rb +52 -52
- data/lib/chef/knife/client_key_create.rb +73 -73
- data/lib/chef/knife/client_key_delete.rb +80 -80
- data/lib/chef/knife/client_key_edit.rb +83 -83
- data/lib/chef/knife/client_key_list.rb +73 -73
- data/lib/chef/knife/client_key_show.rb +80 -80
- data/lib/chef/knife/client_list.rb +41 -41
- data/lib/chef/knife/client_reregister.rb +58 -58
- data/lib/chef/knife/client_show.rb +48 -48
- data/lib/chef/knife/config_get.rb +39 -39
- data/lib/chef/knife/config_get_profile.rb +37 -37
- data/lib/chef/knife/config_list.rb +139 -139
- data/lib/chef/knife/config_list_profiles.rb +37 -37
- data/lib/chef/knife/config_show.rb +127 -127
- data/lib/chef/knife/config_use.rb +61 -61
- data/lib/chef/knife/config_use_profile.rb +47 -47
- data/lib/chef/knife/configure.rb +150 -150
- data/lib/chef/knife/configure_client.rb +48 -48
- data/lib/chef/knife/cookbook_bulk_delete.rb +71 -71
- data/lib/chef/knife/cookbook_delete.rb +151 -151
- data/lib/chef/knife/cookbook_download.rb +142 -142
- data/lib/chef/knife/cookbook_list.rb +47 -47
- data/lib/chef/knife/cookbook_metadata.rb +106 -106
- data/lib/chef/knife/cookbook_metadata_from_file.rb +49 -49
- data/lib/chef/knife/cookbook_show.rb +98 -98
- data/lib/chef/knife/cookbook_upload.rb +313 -313
- data/lib/chef/knife/core/bootstrap_context.rb +274 -274
- data/lib/chef/knife/core/cookbook_scm_repo.rb +159 -159
- data/lib/chef/knife/core/cookbook_site_streaming_uploader.rb +249 -249
- data/lib/chef/knife/core/formatting_options.rb +49 -49
- data/lib/chef/knife/core/gem_glob_loader.rb +134 -134
- data/lib/chef/knife/core/generic_presenter.rb +238 -238
- data/lib/chef/knife/core/hashed_command_loader.rb +100 -100
- data/lib/chef/knife/core/node_editor.rb +130 -130
- data/lib/chef/knife/core/node_presenter.rb +133 -133
- data/lib/chef/knife/core/object_loader.rb +115 -115
- data/lib/chef/knife/core/status_presenter.rb +147 -147
- data/lib/chef/knife/core/subcommand_loader.rb +208 -208
- data/lib/chef/knife/core/text_formatter.rb +85 -85
- data/lib/chef/knife/core/ui.rb +339 -339
- data/lib/chef/knife/core/windows_bootstrap_context.rb +441 -443
- data/lib/chef/knife/data_bag_create.rb +81 -81
- data/lib/chef/knife/data_bag_delete.rb +49 -49
- data/lib/chef/knife/data_bag_edit.rb +74 -74
- data/lib/chef/knife/data_bag_from_file.rb +113 -113
- data/lib/chef/knife/data_bag_list.rb +42 -42
- data/lib/chef/knife/data_bag_secret_options.rb +122 -122
- data/lib/chef/knife/data_bag_show.rb +69 -69
- data/lib/chef/knife/delete.rb +125 -125
- data/lib/chef/knife/deps.rb +156 -156
- data/lib/chef/knife/diff.rb +83 -83
- data/lib/chef/knife/download.rb +85 -85
- data/lib/chef/knife/edit.rb +88 -88
- data/lib/chef/knife/environment_compare.rb +128 -128
- data/lib/chef/knife/environment_create.rb +52 -52
- data/lib/chef/knife/environment_delete.rb +44 -44
- data/lib/chef/knife/environment_edit.rb +44 -44
- data/lib/chef/knife/environment_from_file.rb +84 -84
- data/lib/chef/knife/environment_list.rb +41 -41
- data/lib/chef/knife/environment_show.rb +47 -47
- data/lib/chef/knife/exec.rb +99 -99
- data/lib/chef/knife/group_add.rb +55 -55
- data/lib/chef/knife/group_create.rb +49 -49
- data/lib/chef/knife/group_destroy.rb +53 -53
- data/lib/chef/knife/group_list.rb +43 -43
- data/lib/chef/knife/group_remove.rb +56 -56
- data/lib/chef/knife/group_show.rb +49 -49
- 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 +90 -90
- data/lib/chef/knife/key_list_base.rb +45 -45
- data/lib/chef/knife/key_show.rb +53 -53
- data/lib/chef/knife/license.rb +52 -52
- data/lib/chef/knife/list.rb +177 -177
- data/lib/chef/knife/node_bulk_delete.rb +75 -75
- 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 +53 -53
- data/lib/chef/knife/node_from_file.rb +51 -51
- data/lib/chef/knife/node_list.rb +44 -44
- data/lib/chef/knife/node_policy_set.rb +79 -79
- data/lib/chef/knife/node_run_list_add.rb +104 -104
- data/lib/chef/knife/node_run_list_remove.rb +67 -67
- data/lib/chef/knife/node_run_list_set.rb +66 -66
- data/lib/chef/knife/node_show.rb +63 -63
- data/lib/chef/knife/null.rb +12 -12
- data/lib/chef/knife/org_create.rb +70 -70
- data/lib/chef/knife/org_delete.rb +32 -32
- data/lib/chef/knife/org_edit.rb +48 -48
- data/lib/chef/knife/org_list.rb +44 -44
- data/lib/chef/knife/org_show.rb +31 -31
- data/lib/chef/knife/org_user_add.rb +62 -62
- data/lib/chef/knife/org_user_remove.rb +103 -103
- data/lib/chef/knife/raw.rb +123 -123
- data/lib/chef/knife/recipe_list.rb +32 -32
- data/lib/chef/knife/rehash.rb +50 -50
- data/lib/chef/knife/role_bulk_delete.rb +66 -66
- data/lib/chef/knife/role_create.rb +53 -53
- data/lib/chef/knife/role_delete.rb +46 -46
- data/lib/chef/knife/role_edit.rb +45 -45
- data/lib/chef/knife/role_env_run_list_add.rb +87 -87
- data/lib/chef/knife/role_env_run_list_clear.rb +55 -55
- data/lib/chef/knife/role_env_run_list_remove.rb +57 -57
- data/lib/chef/knife/role_env_run_list_replace.rb +60 -60
- data/lib/chef/knife/role_env_run_list_set.rb +70 -70
- data/lib/chef/knife/role_from_file.rb +51 -51
- data/lib/chef/knife/role_list.rb +42 -42
- data/lib/chef/knife/role_run_list_add.rb +87 -87
- data/lib/chef/knife/role_run_list_clear.rb +55 -55
- data/lib/chef/knife/role_run_list_remove.rb +56 -56
- data/lib/chef/knife/role_run_list_replace.rb +60 -60
- data/lib/chef/knife/role_run_list_set.rb +69 -69
- data/lib/chef/knife/role_show.rb +48 -48
- data/lib/chef/knife/search.rb +194 -194
- data/lib/chef/knife/serve.rb +65 -65
- data/lib/chef/knife/show.rb +72 -72
- data/lib/chef/knife/ssh.rb +657 -657
- data/lib/chef/knife/ssl_check.rb +284 -284
- data/lib/chef/knife/ssl_fetch.rb +162 -162
- data/lib/chef/knife/status.rb +95 -95
- data/lib/chef/knife/supermarket_download.rb +119 -119
- data/lib/chef/knife/supermarket_install.rb +192 -192
- data/lib/chef/knife/supermarket_list.rb +76 -76
- data/lib/chef/knife/supermarket_search.rb +53 -53
- data/lib/chef/knife/supermarket_share.rb +166 -166
- data/lib/chef/knife/supermarket_show.rb +66 -66
- data/lib/chef/knife/supermarket_unshare.rb +62 -62
- 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 +87 -87
- data/lib/chef/knife/user_create.rb +180 -180
- data/lib/chef/knife/user_delete.rb +151 -151
- data/lib/chef/knife/user_dissociate.rb +42 -42
- data/lib/chef/knife/user_edit.rb +94 -94
- data/lib/chef/knife/user_invite_add.rb +43 -43
- data/lib/chef/knife/user_invite_list.rb +34 -34
- data/lib/chef/knife/user_invite_rescind.rb +63 -63
- data/lib/chef/knife/user_key_create.rb +73 -73
- data/lib/chef/knife/user_key_delete.rb +80 -80
- data/lib/chef/knife/user_key_edit.rb +83 -83
- data/lib/chef/knife/user_key_list.rb +73 -73
- data/lib/chef/knife/user_key_show.rb +80 -80
- data/lib/chef/knife/user_list.rb +43 -43
- data/lib/chef/knife/user_password.rb +70 -70
- data/lib/chef/knife/user_reregister.rb +59 -59
- data/lib/chef/knife/user_show.rb +52 -52
- data/lib/chef/knife/version.rb +24 -24
- data/lib/chef/knife/xargs.rb +282 -282
- data/lib/chef/knife/yaml_convert.rb +91 -91
- data/lib/chef/knife.rb +677 -677
- data/lib/chef/utils/licensing_config.rb +9 -9
- data/lib/chef/utils/licensing_handler.rb +72 -53
- 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/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/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/compat +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/conffiles +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/control +13 -13
- data/spec/data/apt/chef-integration-test2-1.0/debian/copyright +34 -34
- data/spec/data/apt/chef-integration-test2-1.0/debian/files +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/rules +13 -13
- data/spec/data/apt/chef-integration-test2-1.0/debian/source/format +1 -1
- data/spec/data/apt/chef-integration-test2_1.0-1.dsc +18 -18
- data/spec/data/apt/chef-integration-test2_1.0-1_amd64.build +91 -91
- data/spec/data/apt/chef-integration-test2_1.0-1_amd64.changes +31 -31
- data/spec/data/apt/chef-integration-test_1.0-1_amd64.changes +22 -22
- data/spec/data/apt/chef-integration-test_1.1-1_amd64.changes +22 -22
- data/spec/data/apt/var/www/apt/conf/distributions +7 -7
- data/spec/data/apt/var/www/apt/conf/incoming +4 -4
- data/spec/data/apt/var/www/apt/conf/pulls +3 -3
- data/spec/data/apt/var/www/apt/db/version +4 -4
- data/spec/data/apt/var/www/apt/dists/sid/Release +19 -19
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages +16 -16
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Release +5 -5
- data/spec/data/bootstrap/encrypted_data_bag_secret +1 -1
- data/spec/data/bootstrap/no_proxy.erb +2 -2
- data/spec/data/bootstrap/secret.erb +9 -9
- data/spec/data/bootstrap/test-hints.erb +12 -12
- data/spec/data/bootstrap/test.erb +1 -1
- data/spec/data/cb_version_cookbooks/tatft/README.rdoc +2 -2
- data/spec/data/cb_version_cookbooks/tatft/attributes/default.rb +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-600hhz-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ahd2gq-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-api8ux-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-b0r1m1-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-bfygsi-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-el14l6-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ivrl3y-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-kkbs85-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ory1ux-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-pgsq76-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ra8uim-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-t7k1g-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-t8g0sv-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ufy6g3-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-x2d6j9-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-xi0l6h-0 +1 -1
- data/spec/data/client.d_00/00-foo.rb +2 -2
- data/spec/data/client.d_00/01-bar.rb +1 -1
- data/spec/data/client.d_00/02-strings.rb +2 -2
- data/spec/data/client.d_00/bar +1 -1
- data/spec/data/client.d_01/foo/bar.rb +1 -1
- data/spec/data/client.d_02/foo.rb/foo.txt +1 -1
- data/spec/data/config.rb +6 -6
- data/spec/data/cookbooks/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.json +33 -33
- 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/irssi/files/default/irssi.response +2 -2
- data/spec/data/cookbooks/java/files/default/java.response +1 -1
- data/spec/data/cookbooks/java/metadata.json +33 -33
- 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/version.rb +3 -3
- data/spec/data/cookbooks/openldap/libraries/openldap.rb +4 -4
- data/spec/data/cookbooks/openldap/metadata.rb +8 -8
- data/spec/data/cookbooks/openldap/recipes/default.rb +4 -4
- data/spec/data/cookbooks/openldap/recipes/gigantor.rb +3 -3
- data/spec/data/cookbooks/openldap/recipes/one.rb +15 -15
- data/spec/data/cookbooks/openldap/recipes/return.rb +2 -2
- data/spec/data/cookbooks/openldap/templates/default/helper_test.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/helpers.erb +14 -14
- data/spec/data/cookbooks/openldap/templates/default/helpers_via_partial_test.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/nested_openldap_partials.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/nested_partial.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/no_windows_line_endings.erb +4 -4
- data/spec/data/cookbooks/openldap/templates/default/openldap_nested_variable_stuff.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/openldap_variable_stuff.conf.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/test.erb +1 -1
- data/spec/data/cookbooks/preseed/files/default/preseed-file.seed +1 -1
- data/spec/data/cookbooks/preseed/files/default/preseed-template.seed +4 -4
- data/spec/data/cookbooks/preseed/metadata.rb +2 -2
- data/spec/data/cookbooks/preseed/templates/default/preseed-template-variables.seed +1 -1
- data/spec/data/cookbooks/preseed/templates/default/preseed-template.seed +1 -1
- data/spec/data/cookbooks/starter/chefignore +8 -8
- data/spec/data/cookbooks/starter/metadata.rb +2 -2
- data/spec/data/cookbooks/starter/recipes/default.rb +4 -4
- data/spec/data/cookbooks/supports-platform-constraints/metadata.rb +5 -5
- data/spec/data/cookbooks/wget/files/default/wget.response +2 -2
- data/spec/data/definitions/test.rb +4 -4
- data/spec/data/environment-config.rb +4 -4
- data/spec/data/file-providers-method-snapshot-chef-11-4.json +127 -127
- data/spec/data/fileedit/hosts +4 -4
- data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/README.md +4 -4
- data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/metadata.rb +13 -13
- data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/recipes/default.rb +8 -8
- data/spec/data/invalid-metadata-chef-repo/invalid-metadata/README.md +4 -4
- data/spec/data/invalid-metadata-chef-repo/invalid-metadata/metadata.rb +9 -9
- data/spec/data/invalid-metadata-chef-repo/invalid-metadata/recipes/default.rb +8 -8
- data/spec/data/kitchen/chefignore +6 -6
- data/spec/data/kitchen/openldap/attributes/default.rb +3 -3
- data/spec/data/kitchen/openldap/attributes/robinson.rb +2 -2
- data/spec/data/kitchen/openldap/definitions/client.rb +3 -3
- data/spec/data/kitchen/openldap/definitions/drewbarrymore.rb +2 -2
- data/spec/data/kitchen/openldap/recipes/gigantor.rb +2 -2
- data/spec/data/kitchen/openldap/recipes/ignoreme.rb +2 -2
- data/spec/data/kitchen/openldap/recipes/woot.rb +3 -3
- data/spec/data/knife_subcommand/test_explicit_category.rb +6 -6
- data/spec/data/knife_subcommand/test_name_mapping.rb +4 -4
- data/spec/data/knife_subcommand/test_yourself.rb +21 -21
- data/spec/data/lwrp/providers/buck_passer.rb +28 -28
- data/spec/data/lwrp/providers/buck_passer_2.rb +26 -26
- data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +28 -28
- data/spec/data/lwrp/providers/inline_compiler.rb +24 -24
- data/spec/data/lwrp/providers/monkey_name_printer.rb +5 -5
- data/spec/data/lwrp/providers/paint_drying_watcher.rb +7 -7
- data/spec/data/lwrp/providers/thumb_twiddler.rb +7 -7
- data/spec/data/lwrp/resources/bar.rb +4 -4
- data/spec/data/lwrp/resources/buck_passer.rb +6 -6
- data/spec/data/lwrp/resources/buck_passer_2.rb +4 -4
- data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +4 -4
- data/spec/data/lwrp/resources/foo.rb +6 -6
- data/spec/data/lwrp/resources/inline_compiler.rb +4 -4
- data/spec/data/lwrp/resources/monkey_name_printer.rb +6 -6
- data/spec/data/lwrp/resources/paint_drying_watcher.rb +4 -4
- data/spec/data/lwrp/resources/thumb_twiddler.rb +4 -4
- data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +3 -3
- data/spec/data/lwrp_const_scoping/resources/conflict.rb +1 -1
- data/spec/data/lwrp_override/providers/buck_passer.rb +5 -5
- data/spec/data/lwrp_override/resources/foo.rb +11 -11
- 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 +14 -14
- data/spec/data/mixin/invalid_data.rb +3 -3
- data/spec/data/mixin/real_data.rb +2 -2
- data/spec/data/nested.json +2 -2
- data/spec/data/nodes/default.rb +15 -15
- data/spec/data/nodes/test.example.com.rb +17 -17
- data/spec/data/nodes/test.rb +15 -15
- data/spec/data/null_config.rb +1 -1
- data/spec/data/object_loader/environments/test.json +7 -7
- data/spec/data/object_loader/environments/test.rb +2 -2
- data/spec/data/object_loader/environments/test_json_class.json +8 -8
- data/spec/data/object_loader/nodes/test.json +7 -7
- data/spec/data/object_loader/nodes/test.rb +2 -2
- data/spec/data/object_loader/nodes/test_json_class.json +8 -8
- data/spec/data/object_loader/roles/test.json +7 -7
- data/spec/data/object_loader/roles/test.rb +2 -2
- data/spec/data/object_loader/roles/test_json_class.json +8 -8
- data/spec/data/partial_one.erb +1 -1
- data/spec/data/prefer_metadata_json/metadata.json +51 -51
- data/spec/data/prefer_metadata_json/metadata.rb +6 -6
- data/spec/data/recipes/test.rb +7 -7
- data/spec/data/root_alias_cookbooks/dup_attr/attributes/default.rb +1 -1
- data/spec/data/root_alias_cookbooks/dup_attr/attributes.rb +1 -1
- data/spec/data/root_alias_cookbooks/dup_attr/metadata.rb +2 -2
- data/spec/data/root_alias_cookbooks/dup_attr/recipe.rb +3 -3
- data/spec/data/root_alias_cookbooks/dup_recipe/attributes.rb +1 -1
- data/spec/data/root_alias_cookbooks/dup_recipe/metadata.rb +2 -2
- data/spec/data/root_alias_cookbooks/dup_recipe/recipe.rb +3 -3
- data/spec/data/root_alias_cookbooks/dup_recipe/recipes/default.rb +3 -3
- data/spec/data/root_alias_cookbooks/simple/attributes.rb +1 -1
- data/spec/data/root_alias_cookbooks/simple/metadata.rb +2 -2
- data/spec/data/root_alias_cookbooks/simple/recipe.rb +3 -3
- data/spec/data/rubygems.org/sexp_processor-info +49 -49
- data/spec/data/run_context/cookbooks/circular-dep1/attributes/default.rb +2 -2
- data/spec/data/run_context/cookbooks/circular-dep1/definitions/circular_dep1_res.rb +1 -1
- data/spec/data/run_context/cookbooks/circular-dep1/libraries/lib.rb +2 -2
- data/spec/data/run_context/cookbooks/circular-dep1/metadata.rb +2 -2
- data/spec/data/run_context/cookbooks/circular-dep1/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +2 -2
- data/spec/data/run_context/cookbooks/circular-dep2/attributes/default.rb +2 -2
- data/spec/data/run_context/cookbooks/circular-dep2/definitions/circular_dep2_res.rb +1 -1
- data/spec/data/run_context/cookbooks/circular-dep2/libraries/lib.rb +2 -2
- data/spec/data/run_context/cookbooks/circular-dep2/metadata.rb +2 -2
- data/spec/data/run_context/cookbooks/circular-dep2/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +2 -2
- 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/unparsed_file +1 -1
- data/spec/data/run_context/cookbooks/dependency1/attributes/zz_last.rb +2 -2
- data/spec/data/run_context/cookbooks/dependency1/definitions/dependency1_res.rb +1 -1
- data/spec/data/run_context/cookbooks/dependency1/definitions/unparsed_file +1 -1
- data/spec/data/run_context/cookbooks/dependency1/libraries/lib.rb +2 -2
- data/spec/data/run_context/cookbooks/dependency1/libraries/unparsed_file +1 -1
- data/spec/data/run_context/cookbooks/dependency1/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/dependency1/providers/unparsed_file +1 -1
- data/spec/data/run_context/cookbooks/dependency1/recipes/unparsed_file +1 -1
- data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +2 -2
- data/spec/data/run_context/cookbooks/dependency1/resources/unparsed_file +1 -1
- data/spec/data/run_context/cookbooks/dependency2/attributes/default.rb +2 -2
- data/spec/data/run_context/cookbooks/dependency2/definitions/dependency2_res.rb +1 -1
- data/spec/data/run_context/cookbooks/dependency2/libraries/lib.rb +2 -2
- data/spec/data/run_context/cookbooks/dependency2/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +2 -2
- data/spec/data/run_context/cookbooks/include/recipes/default.rb +24 -24
- data/spec/data/run_context/cookbooks/include/recipes/includee.rb +3 -3
- data/spec/data/run_context/cookbooks/no-default-attr/attributes/server.rb +2 -2
- data/spec/data/run_context/cookbooks/no-default-attr/definitions/no_default-attr_res.rb +1 -1
- data/spec/data/run_context/cookbooks/no-default-attr/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +2 -2
- 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 +3 -3
- data/spec/data/run_context/cookbooks/test-with-circular-deps/attributes/default.rb +2 -2
- data/spec/data/run_context/cookbooks/test-with-circular-deps/definitions/test_with-circular-deps_res.rb +1 -1
- data/spec/data/run_context/cookbooks/test-with-circular-deps/libraries/lib.rb +2 -2
- data/spec/data/run_context/cookbooks/test-with-circular-deps/metadata.rb +2 -2
- data/spec/data/run_context/cookbooks/test-with-circular-deps/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +3 -3
- data/spec/data/run_context/cookbooks/test-with-deps/attributes/default.rb +2 -2
- data/spec/data/run_context/cookbooks/test-with-deps/definitions/test_with-deps_res.rb +1 -1
- data/spec/data/run_context/cookbooks/test-with-deps/libraries/lib.rb +1 -1
- data/spec/data/run_context/cookbooks/test-with-deps/metadata.rb +3 -3
- data/spec/data/run_context/cookbooks/test-with-deps/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +2 -2
- data/spec/data/run_context/nodes/run_context.rb +5 -5
- data/spec/data/sample_msu1.xml +10 -10
- data/spec/data/sample_msu2.xml +14 -14
- data/spec/data/sample_msu3.xml +16 -16
- data/spec/data/search_queries_to_transform.txt +98 -98
- data/spec/data/shef-config.rb +11 -11
- data/spec/data/snap_package/async_result_success.json +6 -6
- data/spec/data/snap_package/change_id_result.json +175 -175
- data/spec/data/snap_package/find_result_failure.json +10 -10
- data/spec/data/snap_package/find_result_success.json +70 -70
- data/spec/data/snap_package/get_by_name_result_failure.json +10 -10
- data/spec/data/snap_package/get_by_name_result_success.json +38 -38
- data/spec/data/snap_package/get_conf_success.json +10 -10
- data/spec/data/snap_package/result_failure.json +9 -9
- data/spec/data/ssl/5e707473.0 +18 -18
- data/spec/data/ssl/chef-rspec.cert +27 -27
- data/spec/data/ssl/chef-rspec.key +27 -27
- data/spec/data/ssl/key.pem +15 -15
- data/spec/data/ssl/private_key.pem +27 -27
- data/spec/data/ssl/private_key_with_whitespace.pem +32 -32
- data/spec/data/standalone_cookbook/chefignore +9 -9
- data/spec/data/standalone_cookbook/recipes/default.rb +2 -2
- data/spec/data/templates/failed.erb +5 -5
- data/spec/data/trusted_certs/example.crt +22 -22
- data/spec/data/trusted_certs/example_no_cn.crt +36 -36
- data/spec/data/trusted_certs/intermediate.pem +27 -27
- data/spec/data/trusted_certs/opscode.pem +57 -57
- data/spec/data/trusted_certs/root.pem +22 -22
- data/spec/data/windows_certificates/base64_test.cer +20 -20
- data/spec/data/windows_certificates/othertest.cer +20 -20
- data/spec/data/windows_certificates/test.cer +20 -20
- data/spec/data/windows_certificates/test.pem +20 -20
- data/spec/functional/configure_spec.rb +33 -33
- data/spec/functional/cookbook_delete_spec.rb +157 -156
- data/spec/functional/exec_spec.rb +55 -55
- data/spec/functional/rehash_spec.rb +39 -39
- data/spec/functional/smoke_test.rb +42 -42
- data/spec/functional/ssh_spec.rb +352 -352
- data/spec/functional/version_spec.rb +26 -26
- data/spec/integration/chef_fs_data_store_spec.rb +557 -557
- data/spec/integration/chef_repo_path_spec.rb +962 -962
- data/spec/integration/chef_repository_file_system_spec.rb +200 -200
- data/spec/integration/chefignore_spec.rb +301 -301
- data/spec/integration/client_bulk_delete_spec.rb +131 -131
- data/spec/integration/client_create_spec.rb +70 -70
- data/spec/integration/client_delete_spec.rb +64 -64
- data/spec/integration/client_key_create_spec.rb +66 -66
- data/spec/integration/client_key_delete_spec.rb +43 -43
- data/spec/integration/client_key_list_spec.rb +61 -61
- data/spec/integration/client_key_show_spec.rb +45 -45
- data/spec/integration/client_list_spec.rb +49 -49
- data/spec/integration/client_show_spec.rb +37 -37
- data/spec/integration/commands_spec.rb +55 -55
- data/spec/integration/common_options_spec.rb +174 -174
- data/spec/integration/config_list_spec.rb +220 -220
- data/spec/integration/config_show_spec.rb +192 -192
- data/spec/integration/config_use_spec.rb +198 -198
- data/spec/integration/cookbook_api_ipv6_spec.rb +113 -113
- data/spec/integration/cookbook_bulk_delete_spec.rb +65 -65
- data/spec/integration/cookbook_download_spec.rb +72 -72
- data/spec/integration/cookbook_list_spec.rb +55 -55
- data/spec/integration/cookbook_show_spec.rb +149 -149
- data/spec/integration/cookbook_upload_spec.rb +128 -128
- data/spec/integration/data_bag_create_spec.rb +125 -125
- data/spec/integration/data_bag_delete_spec.rb +59 -59
- data/spec/integration/data_bag_edit_spec.rb +105 -105
- data/spec/integration/data_bag_from_file_spec.rb +116 -116
- data/spec/integration/data_bag_list_spec.rb +44 -44
- data/spec/integration/data_bag_show_spec.rb +95 -95
- data/spec/integration/delete_spec.rb +1018 -1018
- data/spec/integration/deps_spec.rb +703 -703
- data/spec/integration/diff_spec.rb +605 -605
- data/spec/integration/download_spec.rb +1336 -1336
- data/spec/integration/environment_compare_spec.rb +75 -75
- data/spec/integration/environment_create_spec.rb +41 -41
- data/spec/integration/environment_delete_spec.rb +37 -37
- data/spec/integration/environment_from_file_spec.rb +116 -116
- data/spec/integration/environment_list_spec.rb +42 -42
- data/spec/integration/environment_show_spec.rb +77 -77
- data/spec/integration/list_spec.rb +1060 -1060
- data/spec/integration/node_bulk_delete_spec.rb +52 -52
- data/spec/integration/node_create_spec.rb +47 -47
- data/spec/integration/node_delete_spec.rb +48 -48
- data/spec/integration/node_environment_set_spec.rb +46 -46
- data/spec/integration/node_from_file_spec.rb +59 -59
- data/spec/integration/node_list_spec.rb +45 -45
- data/spec/integration/node_run_list_add_spec.rb +54 -54
- data/spec/integration/node_run_list_remove_spec.rb +36 -36
- data/spec/integration/node_run_list_set_spec.rb +41 -41
- data/spec/integration/node_show_spec.rb +36 -36
- data/spec/integration/raw_spec.rb +297 -297
- data/spec/integration/redirection_spec.rb +64 -64
- data/spec/integration/role_bulk_delete_spec.rb +52 -52
- data/spec/integration/role_create_spec.rb +41 -41
- data/spec/integration/role_delete_spec.rb +48 -48
- data/spec/integration/role_from_file_spec.rb +96 -96
- data/spec/integration/role_list_spec.rb +45 -45
- data/spec/integration/role_show_spec.rb +51 -51
- data/spec/integration/search_node_spec.rb +40 -40
- data/spec/integration/serve_spec.rb +92 -92
- data/spec/integration/show_spec.rb +197 -197
- data/spec/integration/upload_spec.rb +1616 -1616
- data/spec/knife_spec_helper.rb +241 -241
- data/spec/support/chef_helpers.rb +79 -79
- data/spec/support/key_helpers.rb +102 -102
- data/spec/support/platform_helpers.rb +255 -255
- data/spec/support/platforms/prof/gc.rb +51 -51
- data/spec/support/platforms/prof/win32.rb +45 -45
- data/spec/support/platforms/win32/spec_service.rb +57 -57
- data/spec/support/recipe_dsl_helper.rb +83 -83
- data/spec/support/shared/context/config.rb +18 -18
- data/spec/support/shared/functional/knife.rb +37 -37
- data/spec/support/shared/integration/integration_helper.rb +122 -122
- data/spec/support/shared/integration/knife_support.rb +192 -192
- 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/unit/knife_shared.rb +39 -39
- data/spec/support/shared/unit/mock_shellout.rb +49 -49
- data/spec/tiny_server.rb +193 -190
- data/spec/unit/application/knife_spec.rb +241 -241
- 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/train_connector_spec.rb +244 -244
- data/spec/unit/knife/bootstrap_spec.rb +2311 -2288
- data/spec/unit/knife/client_bulk_delete_spec.rb +166 -166
- data/spec/unit/knife/client_create_spec.rb +232 -232
- data/spec/unit/knife/client_delete_spec.rb +99 -99
- data/spec/unit/knife/client_edit_spec.rb +53 -53
- data/spec/unit/knife/client_list_spec.rb +34 -34
- data/spec/unit/knife/client_reregister_spec.rb +62 -62
- data/spec/unit/knife/client_show_spec.rb +52 -52
- data/spec/unit/knife/configure_client_spec.rb +81 -81
- data/spec/unit/knife/configure_spec.rb +190 -190
- data/spec/unit/knife/cookbook_bulk_delete_spec.rb +87 -87
- data/spec/unit/knife/cookbook_delete_spec.rb +239 -239
- data/spec/unit/knife/cookbook_download_spec.rb +255 -255
- data/spec/unit/knife/cookbook_list_spec.rb +88 -88
- data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +72 -72
- data/spec/unit/knife/cookbook_metadata_spec.rb +182 -182
- data/spec/unit/knife/cookbook_show_spec.rb +253 -253
- data/spec/unit/knife/cookbook_upload_spec.rb +426 -426
- data/spec/unit/knife/core/bootstrap_context_spec.rb +287 -287
- data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +187 -187
- data/spec/unit/knife/core/cookbook_site_streaming_uploader_spec.rb +198 -198
- data/spec/unit/knife/core/gem_glob_loader_spec.rb +242 -242
- data/spec/unit/knife/core/hashed_command_loader_spec.rb +112 -112
- 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/status_presenter_spec.rb +54 -54
- data/spec/unit/knife/core/subcommand_loader_spec.rb +64 -64
- data/spec/unit/knife/core/ui_spec.rb +656 -656
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +282 -238
- data/spec/unit/knife/data_bag_create_spec.rb +175 -175
- data/spec/unit/knife/data_bag_edit_spec.rb +126 -126
- data/spec/unit/knife/data_bag_from_file_spec.rb +174 -174
- data/spec/unit/knife/data_bag_secret_options_spec.rb +173 -173
- data/spec/unit/knife/data_bag_show_spec.rb +139 -139
- data/spec/unit/knife/environment_compare_spec.rb +112 -112
- data/spec/unit/knife/environment_create_spec.rb +91 -91
- data/spec/unit/knife/environment_delete_spec.rb +71 -71
- data/spec/unit/knife/environment_edit_spec.rb +79 -79
- data/spec/unit/knife/environment_from_file_spec.rb +90 -90
- data/spec/unit/knife/environment_list_spec.rb +54 -54
- data/spec/unit/knife/environment_show_spec.rb +52 -52
- data/spec/unit/knife/key_create_spec.rb +223 -223
- data/spec/unit/knife/key_delete_spec.rb +133 -133
- data/spec/unit/knife/key_edit_spec.rb +264 -264
- data/spec/unit/knife/key_helper.rb +74 -74
- data/spec/unit/knife/key_list_spec.rb +216 -216
- data/spec/unit/knife/key_show_spec.rb +126 -126
- data/spec/unit/knife/license_spec.rb +89 -89
- data/spec/unit/knife/node_bulk_delete_spec.rb +94 -94
- data/spec/unit/knife/node_delete_spec.rb +77 -77
- data/spec/unit/knife/node_edit_spec.rb +116 -116
- data/spec/unit/knife/node_environment_set_spec.rb +61 -61
- data/spec/unit/knife/node_from_file_spec.rb +59 -59
- data/spec/unit/knife/node_list_spec.rb +62 -62
- data/spec/unit/knife/node_policy_set_spec.rb +122 -122
- data/spec/unit/knife/node_run_list_add_spec.rb +145 -145
- data/spec/unit/knife/node_run_list_remove_spec.rb +106 -106
- data/spec/unit/knife/node_run_list_set_spec.rb +115 -115
- data/spec/unit/knife/node_show_spec.rb +65 -65
- data/spec/unit/knife/org_create_spec.rb +76 -76
- data/spec/unit/knife/org_delete_spec.rb +41 -41
- data/spec/unit/knife/org_edit_spec.rb +49 -49
- data/spec/unit/knife/org_list_spec.rb +58 -58
- data/spec/unit/knife/org_show_spec.rb +45 -45
- data/spec/unit/knife/org_user_add_spec.rb +39 -39
- 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/search_spec.rb +147 -147
- data/spec/unit/knife/ssh_spec.rb +403 -403
- data/spec/unit/knife/ssl_check_spec.rb +256 -256
- data/spec/unit/knife/ssl_fetch_spec.rb +222 -222
- data/spec/unit/knife/status_spec.rb +112 -112
- data/spec/unit/knife/supermarket_download_spec.rb +152 -152
- data/spec/unit/knife/supermarket_install_spec.rb +203 -203
- data/spec/unit/knife/supermarket_list_spec.rb +70 -70
- data/spec/unit/knife/supermarket_search_spec.rb +85 -85
- data/spec/unit/knife/supermarket_share_spec.rb +208 -208
- data/spec/unit/knife/supermarket_unshare_spec.rb +78 -78
- data/spec/unit/knife/tag_create_spec.rb +23 -23
- data/spec/unit/knife/tag_delete_spec.rb +25 -25
- data/spec/unit/knife/tag_list_spec.rb +23 -23
- data/spec/unit/knife/user_create_spec.rb +282 -282
- data/spec/unit/knife/user_delete_spec.rb +171 -171
- data/spec/unit/knife/user_edit_spec.rb +54 -54
- data/spec/unit/knife/user_list_spec.rb +73 -73
- data/spec/unit/knife/user_password_spec.rb +64 -64
- data/spec/unit/knife/user_reregister_spec.rb +56 -56
- data/spec/unit/knife/user_show_spec.rb +91 -91
- data/spec/unit/knife_spec.rb +637 -637
- data/spec/unit/utils/licensing_handler_spec.rb +140 -0
- metadata +11 -7
@@ -1,962 +1,962 @@
|
|
1
|
-
#
|
2
|
-
# Author:: John Keiser (<jkeiser@chef.io>)
|
3
|
-
# Copyright:: Copyright (c) Chef Software Inc.
|
4
|
-
# License:: Apache License, Version 2.0
|
5
|
-
#
|
6
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
-
# you may not use this file except in compliance with the License.
|
8
|
-
# You may obtain a copy of the License at
|
9
|
-
#
|
10
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
-
#
|
12
|
-
# Unless required by applicable law or agreed to in writing, software
|
13
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
-
# See the License for the specific language governing permissions and
|
16
|
-
# limitations under the License.
|
17
|
-
|
18
|
-
require "knife_spec_helper"
|
19
|
-
require "support/shared/integration/integration_helper"
|
20
|
-
require "support/shared/context/config"
|
21
|
-
require "chef/knife/list"
|
22
|
-
require "chef/knife/show"
|
23
|
-
|
24
|
-
describe "chef_repo_path tests", :workstation do
|
25
|
-
include IntegrationSupport
|
26
|
-
include KnifeSupport
|
27
|
-
|
28
|
-
let(:error_rel_path_outside_repo) { /^ERROR: Attempt to use relative path '' when current directory is outside the repository path/ }
|
29
|
-
|
30
|
-
# TODO alternate repo_path / *_path
|
31
|
-
context "alternate *_path" do
|
32
|
-
when_the_repository "has clients and clients2, cookbooks and cookbooks2, etc." do
|
33
|
-
before do
|
34
|
-
file "clients/client1.json", {}
|
35
|
-
file "cookbooks/cookbook1/metadata.rb", ""
|
36
|
-
file "data_bags/bag/item.json", {}
|
37
|
-
file "environments/env1.json", {}
|
38
|
-
file "nodes/node1.json", {}
|
39
|
-
file "roles/role1.json", {}
|
40
|
-
file "users/user1.json", {}
|
41
|
-
|
42
|
-
file "clients2/client2.json", {}
|
43
|
-
file "cookbooks2/cookbook2/metadata.rb", ""
|
44
|
-
file "data_bags2/bag2/item2.json", {}
|
45
|
-
file "environments2/env2.json", {}
|
46
|
-
file "nodes2/node2.json", {}
|
47
|
-
file "roles2/role2.json", {}
|
48
|
-
file "users2/user2.json", {}
|
49
|
-
|
50
|
-
directory "chef_repo2" do
|
51
|
-
file "clients/client3.json", {}
|
52
|
-
file "cookbooks/cookbook3/metadata.rb", "name 'cookbook3'"
|
53
|
-
file "data_bags/bag3/item3.json", {}
|
54
|
-
file "environments/env3.json", {}
|
55
|
-
file "nodes/node3.json", {}
|
56
|
-
file "roles/role3.json", {}
|
57
|
-
file "users/user3.json", {}
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
it "knife list --local -Rfp --chef-repo-path chef_repo2 / grabs chef_repo2 stuff" do
|
62
|
-
Chef::Config.delete(:chef_repo_path)
|
63
|
-
knife("list --local -Rfp --chef-repo-path #{path_to("chef_repo2")} /").should_succeed <<~EOM
|
64
|
-
/clients/
|
65
|
-
/clients/client3.json
|
66
|
-
/cookbooks/
|
67
|
-
/cookbooks/cookbook3/
|
68
|
-
/cookbooks/cookbook3/metadata.rb
|
69
|
-
/data_bags/
|
70
|
-
/data_bags/bag3/
|
71
|
-
/data_bags/bag3/item3.json
|
72
|
-
/environments/
|
73
|
-
/environments/env3.json
|
74
|
-
/nodes/
|
75
|
-
/nodes/node3.json
|
76
|
-
/roles/
|
77
|
-
/roles/role3.json
|
78
|
-
/users/
|
79
|
-
/users/user3.json
|
80
|
-
EOM
|
81
|
-
end
|
82
|
-
|
83
|
-
# "Skipping for BK... As Windows 2019 has 8dot3name disabled by default"
|
84
|
-
it "knife list --local -Rfp --chef-repo-path chef_r~1 / grabs chef_repo2 stuff", :windows_only, :skip_buildkite do
|
85
|
-
Chef::Config.delete(:chef_repo_path)
|
86
|
-
knife("list --local -Rfp --chef-repo-path #{path_to("chef_r~1")} /").should_succeed <<~EOM
|
87
|
-
/clients/
|
88
|
-
/clients/client3.json
|
89
|
-
/cookbooks/
|
90
|
-
/cookbooks/cookbook3/
|
91
|
-
/cookbooks/cookbook3/metadata.rb
|
92
|
-
/data_bags/
|
93
|
-
/data_bags/bag3/
|
94
|
-
/data_bags/bag3/item3.json
|
95
|
-
/environments/
|
96
|
-
/environments/env3.json
|
97
|
-
/nodes/
|
98
|
-
/nodes/node3.json
|
99
|
-
/roles/
|
100
|
-
/roles/role3.json
|
101
|
-
/users/
|
102
|
-
/users/user3.json
|
103
|
-
EOM
|
104
|
-
end
|
105
|
-
|
106
|
-
# "Skipping for BK... As Windows 2019 has 8dot3name disabled by default"
|
107
|
-
it "knife list --local -Rfp --chef-repo-path chef_r~1 / grabs chef_repo2 stuff", :windows_only, :skip_buildkite do
|
108
|
-
Chef::Config.delete(:chef_repo_path)
|
109
|
-
knife("list -z -Rfp --chef-repo-path #{path_to("chef_r~1")} /").should_succeed <<~EOM
|
110
|
-
/acls/
|
111
|
-
/acls/clients/
|
112
|
-
/acls/clients/client3.json
|
113
|
-
/acls/containers/
|
114
|
-
/acls/cookbook_artifacts/
|
115
|
-
/acls/cookbooks/
|
116
|
-
/acls/cookbooks/cookbook3.json
|
117
|
-
/acls/data_bags/
|
118
|
-
/acls/data_bags/bag3.json
|
119
|
-
/acls/environments/
|
120
|
-
/acls/environments/env3.json
|
121
|
-
/acls/groups/
|
122
|
-
/acls/nodes/
|
123
|
-
/acls/nodes/node3.json
|
124
|
-
/acls/organization.json
|
125
|
-
/acls/policies/
|
126
|
-
/acls/policy_groups/
|
127
|
-
/acls/roles/
|
128
|
-
/acls/roles/role3.json
|
129
|
-
/clients/
|
130
|
-
/clients/client3.json
|
131
|
-
/containers/
|
132
|
-
/cookbook_artifacts/
|
133
|
-
/cookbooks/
|
134
|
-
/cookbooks/cookbook3/
|
135
|
-
/cookbooks/cookbook3/metadata.rb
|
136
|
-
/data_bags/
|
137
|
-
/data_bags/bag3/
|
138
|
-
/data_bags/bag3/item3.json
|
139
|
-
/environments/
|
140
|
-
/environments/env3.json
|
141
|
-
/groups/
|
142
|
-
/invitations.json
|
143
|
-
/members.json
|
144
|
-
/nodes/
|
145
|
-
/nodes/node3.json
|
146
|
-
/org.json
|
147
|
-
/policies/
|
148
|
-
/policy_groups/
|
149
|
-
/roles/
|
150
|
-
/roles/role3.json
|
151
|
-
EOM
|
152
|
-
end
|
153
|
-
|
154
|
-
context "when all _paths are set to alternates" do
|
155
|
-
before :each do
|
156
|
-
%w{client cookbook data_bag environment node role user}.each do |object_name|
|
157
|
-
Chef::Config["#{object_name}_path".to_sym] = File.join(Chef::Config.chef_repo_path, "#{object_name}s2")
|
158
|
-
end
|
159
|
-
Chef::Config.chef_repo_path = File.join(Chef::Config.chef_repo_path, "chef_repo2")
|
160
|
-
end
|
161
|
-
|
162
|
-
it "knife list --local -Rfp --chef-repo-path chef_repo2 / grabs chef_repo2 stuff" do
|
163
|
-
knife("list --local -Rfp --chef-repo-path #{path_to("chef_repo2")} /").should_succeed <<~EOM
|
164
|
-
/clients/
|
165
|
-
/clients/client3.json
|
166
|
-
/cookbooks/
|
167
|
-
/cookbooks/cookbook3/
|
168
|
-
/cookbooks/cookbook3/metadata.rb
|
169
|
-
/data_bags/
|
170
|
-
/data_bags/bag3/
|
171
|
-
/data_bags/bag3/item3.json
|
172
|
-
/environments/
|
173
|
-
/environments/env3.json
|
174
|
-
/nodes/
|
175
|
-
/nodes/node3.json
|
176
|
-
/roles/
|
177
|
-
/roles/role3.json
|
178
|
-
/users/
|
179
|
-
/users/user3.json
|
180
|
-
EOM
|
181
|
-
end
|
182
|
-
|
183
|
-
context "when cwd is at the top level" do
|
184
|
-
before { cwd "." }
|
185
|
-
it "knife list --local -Rfp fails" do
|
186
|
-
knife("list --local -Rfp").should_fail(error_rel_path_outside_repo)
|
187
|
-
end
|
188
|
-
end
|
189
|
-
|
190
|
-
context "when cwd is inside the data_bags directory" do
|
191
|
-
before { cwd "data_bags" }
|
192
|
-
it "knife list --local -Rfp fails" do
|
193
|
-
knife("list --local -Rfp").should_fail(error_rel_path_outside_repo)
|
194
|
-
end
|
195
|
-
end
|
196
|
-
|
197
|
-
context "when cwd is inside chef_repo2" do
|
198
|
-
before { cwd "chef_repo2" }
|
199
|
-
it "knife list --local -Rfp lists everything" do
|
200
|
-
knife("list --local -Rfp").should_succeed <<~EOM
|
201
|
-
clients/
|
202
|
-
clients/client2.json
|
203
|
-
cookbooks/
|
204
|
-
cookbooks/cookbook2/
|
205
|
-
cookbooks/cookbook2/metadata.rb
|
206
|
-
data_bags/
|
207
|
-
data_bags/bag2/
|
208
|
-
data_bags/bag2/item2.json
|
209
|
-
environments/
|
210
|
-
environments/env2.json
|
211
|
-
nodes/
|
212
|
-
nodes/node2.json
|
213
|
-
roles/
|
214
|
-
roles/role2.json
|
215
|
-
users/
|
216
|
-
users/user2.json
|
217
|
-
EOM
|
218
|
-
end
|
219
|
-
end
|
220
|
-
|
221
|
-
context "when cwd is inside data_bags2" do
|
222
|
-
before { cwd "data_bags2" }
|
223
|
-
it "knife list --local -Rfp lists data bags" do
|
224
|
-
knife("list --local -Rfp").should_succeed <<~EOM
|
225
|
-
bag2/
|
226
|
-
bag2/item2.json
|
227
|
-
EOM
|
228
|
-
end
|
229
|
-
it "knife list --local -Rfp ../roles lists roles" do
|
230
|
-
knife("list --local -Rfp ../roles").should_succeed "/roles/role2.json\n"
|
231
|
-
end
|
232
|
-
end
|
233
|
-
end
|
234
|
-
|
235
|
-
context "when all _paths except chef_repo_path are set to alternates" do
|
236
|
-
before :each do
|
237
|
-
%w{client cookbook data_bag environment node role user}.each do |object_name|
|
238
|
-
Chef::Config["#{object_name}_path".to_sym] = File.join(Chef::Config.chef_repo_path, "#{object_name}s2")
|
239
|
-
end
|
240
|
-
end
|
241
|
-
|
242
|
-
context "when cwd is at the top level" do
|
243
|
-
before { cwd "." }
|
244
|
-
it "knife list --local -Rfp lists everything" do
|
245
|
-
knife("list --local -Rfp").should_succeed <<~EOM
|
246
|
-
clients/
|
247
|
-
clients/client2.json
|
248
|
-
cookbooks/
|
249
|
-
cookbooks/cookbook2/
|
250
|
-
cookbooks/cookbook2/metadata.rb
|
251
|
-
data_bags/
|
252
|
-
data_bags/bag2/
|
253
|
-
data_bags/bag2/item2.json
|
254
|
-
environments/
|
255
|
-
environments/env2.json
|
256
|
-
nodes/
|
257
|
-
nodes/node2.json
|
258
|
-
roles/
|
259
|
-
roles/role2.json
|
260
|
-
users/
|
261
|
-
users/user2.json
|
262
|
-
EOM
|
263
|
-
end
|
264
|
-
end
|
265
|
-
|
266
|
-
context "when cwd is inside the data_bags directory" do
|
267
|
-
before { cwd "data_bags" }
|
268
|
-
it "knife list --local -Rfp fails" do
|
269
|
-
knife("list --local -Rfp").should_fail(error_rel_path_outside_repo)
|
270
|
-
end
|
271
|
-
end
|
272
|
-
|
273
|
-
context "when cwd is inside chef_repo2" do
|
274
|
-
before { cwd "chef_repo2" }
|
275
|
-
it "knife list -Rfp fails" do
|
276
|
-
knife("list --local -Rfp").should_fail(error_rel_path_outside_repo)
|
277
|
-
end
|
278
|
-
end
|
279
|
-
|
280
|
-
context "when cwd is inside data_bags2" do
|
281
|
-
before { cwd "data_bags2" }
|
282
|
-
it "knife list --local -Rfp lists data bags" do
|
283
|
-
knife("list --local -Rfp").should_succeed <<~EOM
|
284
|
-
bag2/
|
285
|
-
bag2/item2.json
|
286
|
-
EOM
|
287
|
-
end
|
288
|
-
end
|
289
|
-
end
|
290
|
-
|
291
|
-
context "when only chef_repo_path is set to its alternate" do
|
292
|
-
before :each do
|
293
|
-
%w{client cookbook data_bag environment node role user}.each do |object_name|
|
294
|
-
Chef::Config.delete("#{object_name}_path".to_sym)
|
295
|
-
end
|
296
|
-
Chef::Config.chef_repo_path = File.join(Chef::Config.chef_repo_path, "chef_repo2")
|
297
|
-
end
|
298
|
-
|
299
|
-
context "when cwd is at the top level" do
|
300
|
-
before { cwd "." }
|
301
|
-
it "knife list --local -Rfp fails" do
|
302
|
-
knife("list --local -Rfp").should_fail(error_rel_path_outside_repo)
|
303
|
-
end
|
304
|
-
end
|
305
|
-
|
306
|
-
context "when cwd is inside the data_bags directory" do
|
307
|
-
before { cwd "data_bags" }
|
308
|
-
it "knife list --local -Rfp fails" do
|
309
|
-
knife("list --local -Rfp").should_fail(error_rel_path_outside_repo)
|
310
|
-
end
|
311
|
-
end
|
312
|
-
|
313
|
-
context "when cwd is inside chef_repo2" do
|
314
|
-
before { cwd "chef_repo2" }
|
315
|
-
it "knife list --local -Rfp lists everything" do
|
316
|
-
knife("list --local -Rfp").should_succeed <<~EOM
|
317
|
-
clients/
|
318
|
-
clients/client3.json
|
319
|
-
cookbooks/
|
320
|
-
cookbooks/cookbook3/
|
321
|
-
cookbooks/cookbook3/metadata.rb
|
322
|
-
data_bags/
|
323
|
-
data_bags/bag3/
|
324
|
-
data_bags/bag3/item3.json
|
325
|
-
environments/
|
326
|
-
environments/env3.json
|
327
|
-
nodes/
|
328
|
-
nodes/node3.json
|
329
|
-
roles/
|
330
|
-
roles/role3.json
|
331
|
-
users/
|
332
|
-
users/user3.json
|
333
|
-
EOM
|
334
|
-
end
|
335
|
-
end
|
336
|
-
|
337
|
-
context "when cwd is inside chef_repo2/data_bags" do
|
338
|
-
before { cwd "chef_repo2/data_bags" }
|
339
|
-
it "knife list --local -Rfp lists data bags" do
|
340
|
-
knife("list --local -Rfp").should_succeed <<~EOM
|
341
|
-
bag3/
|
342
|
-
bag3/item3.json
|
343
|
-
EOM
|
344
|
-
end
|
345
|
-
end
|
346
|
-
end
|
347
|
-
|
348
|
-
context "when paths are set to point to both versions of each" do
|
349
|
-
before :each do
|
350
|
-
%w{client cookbook data_bag environment node role user}.each do |object_name|
|
351
|
-
Chef::Config["#{object_name}_path".to_sym] = [
|
352
|
-
File.join(Chef::Config.chef_repo_path, "#{object_name}s"),
|
353
|
-
File.join(Chef::Config.chef_repo_path, "#{object_name}s2"),
|
354
|
-
]
|
355
|
-
end
|
356
|
-
Chef::Config.chef_repo_path = File.join(Chef::Config.chef_repo_path, "chef_repo2")
|
357
|
-
end
|
358
|
-
|
359
|
-
context "when there is a directory in clients1 and file in clients2 with the same name" do
|
360
|
-
before do
|
361
|
-
directory "clients/blah.json"
|
362
|
-
file "clients2/blah.json", {}
|
363
|
-
end
|
364
|
-
it "knife show /clients/blah.json succeeds" do
|
365
|
-
knife("show --local /clients/blah.json").should_succeed <<~EOM
|
366
|
-
/clients/blah.json:
|
367
|
-
{
|
368
|
-
|
369
|
-
}
|
370
|
-
EOM
|
371
|
-
end
|
372
|
-
end
|
373
|
-
|
374
|
-
context "when there is a file in cookbooks1 and directory in cookbooks2 with the same name" do
|
375
|
-
before do
|
376
|
-
file "cookbooks/blah", ""
|
377
|
-
file "cookbooks2/blah/metadata.rb", ""
|
378
|
-
end
|
379
|
-
it "knife list -Rfp cookbooks shows files in blah" do
|
380
|
-
knife("list --local -Rfp /cookbooks").should_succeed <<~EOM
|
381
|
-
/cookbooks/blah/
|
382
|
-
/cookbooks/blah/metadata.rb
|
383
|
-
/cookbooks/cookbook1/
|
384
|
-
/cookbooks/cookbook1/metadata.rb
|
385
|
-
/cookbooks/cookbook2/
|
386
|
-
/cookbooks/cookbook2/metadata.rb
|
387
|
-
EOM
|
388
|
-
end
|
389
|
-
end
|
390
|
-
|
391
|
-
context "when there is an empty directory in cookbooks1 and a real cookbook in cookbooks2 with the same name" do
|
392
|
-
before do
|
393
|
-
directory "cookbooks/blah"
|
394
|
-
file "cookbooks2/blah/metadata.rb", ""
|
395
|
-
end
|
396
|
-
it "knife list -Rfp cookbooks shows files in blah" do
|
397
|
-
knife("list --local -Rfp /cookbooks").should_succeed(<<~EOM, stderr: "WARN: Cookbook 'blah' is empty or entirely chefignored at #{Chef::Config.cookbook_path[0]}/blah\n")
|
398
|
-
/cookbooks/blah/
|
399
|
-
/cookbooks/blah/metadata.rb
|
400
|
-
/cookbooks/cookbook1/
|
401
|
-
/cookbooks/cookbook1/metadata.rb
|
402
|
-
/cookbooks/cookbook2/
|
403
|
-
/cookbooks/cookbook2/metadata.rb
|
404
|
-
EOM
|
405
|
-
end
|
406
|
-
end
|
407
|
-
|
408
|
-
context "when there is a cookbook in cookbooks1 and a cookbook in cookbooks2 with the same name" do
|
409
|
-
before do
|
410
|
-
file "cookbooks/blah/metadata.json", {}
|
411
|
-
file "cookbooks2/blah/metadata.rb", ""
|
412
|
-
end
|
413
|
-
it "knife list -Rfp cookbooks shows files in the first cookbook and not the second" do
|
414
|
-
knife("list --local -Rfp /cookbooks").should_succeed(<<~EOM, stderr: "WARN: Child with name 'blah' found in multiple directories: #{Chef::Config.cookbook_path[0]}/blah and #{Chef::Config.cookbook_path[1]}/blah\n")
|
415
|
-
/cookbooks/blah/
|
416
|
-
/cookbooks/blah/metadata.json
|
417
|
-
/cookbooks/cookbook1/
|
418
|
-
/cookbooks/cookbook1/metadata.rb
|
419
|
-
/cookbooks/cookbook2/
|
420
|
-
/cookbooks/cookbook2/metadata.rb
|
421
|
-
EOM
|
422
|
-
end
|
423
|
-
end
|
424
|
-
|
425
|
-
context "when there is a file in data_bags1 and a directory in data_bags2 with the same name" do
|
426
|
-
before do
|
427
|
-
file "data_bags/blah", ""
|
428
|
-
file "data_bags2/blah/item.json", ""
|
429
|
-
end
|
430
|
-
it "knife list -Rfp data_bags shows files in blah" do
|
431
|
-
knife("list --local -Rfp /data_bags").should_succeed <<~EOM
|
432
|
-
/data_bags/bag/
|
433
|
-
/data_bags/bag/item.json
|
434
|
-
/data_bags/bag2/
|
435
|
-
/data_bags/bag2/item2.json
|
436
|
-
/data_bags/blah/
|
437
|
-
/data_bags/blah/item.json
|
438
|
-
EOM
|
439
|
-
end
|
440
|
-
end
|
441
|
-
|
442
|
-
context "when there is a data bag in data_bags1 and a data bag in data_bags2 with the same name" do
|
443
|
-
before do
|
444
|
-
file "data_bags/blah/item1.json", ""
|
445
|
-
file "data_bags2/blah/item2.json", ""
|
446
|
-
end
|
447
|
-
it "knife list -Rfp data_bags shows only items in data_bags1" do
|
448
|
-
knife("list --local -Rfp /data_bags").should_succeed(<<~EOM, stderr: "WARN: Child with name 'blah' found in multiple directories: #{Chef::Config.data_bag_path[0]}/blah and #{Chef::Config.data_bag_path[1]}/blah\n")
|
449
|
-
/data_bags/bag/
|
450
|
-
/data_bags/bag/item.json
|
451
|
-
/data_bags/bag2/
|
452
|
-
/data_bags/bag2/item2.json
|
453
|
-
/data_bags/blah/
|
454
|
-
/data_bags/blah/item1.json
|
455
|
-
EOM
|
456
|
-
end
|
457
|
-
end
|
458
|
-
|
459
|
-
context "when there is a directory in environments1 and file in environments2 with the same name" do
|
460
|
-
before do
|
461
|
-
directory "environments/blah.json"
|
462
|
-
file "environments2/blah.json", {}
|
463
|
-
end
|
464
|
-
it "knife show /environments/blah.json succeeds" do
|
465
|
-
knife("show --local /environments/blah.json").should_succeed <<~EOM
|
466
|
-
/environments/blah.json:
|
467
|
-
{
|
468
|
-
|
469
|
-
}
|
470
|
-
EOM
|
471
|
-
end
|
472
|
-
end
|
473
|
-
|
474
|
-
context "when there is a directory in nodes1 and file in nodes2 with the same name" do
|
475
|
-
before do
|
476
|
-
directory "nodes/blah.json"
|
477
|
-
file "nodes2/blah.json", {}
|
478
|
-
end
|
479
|
-
it "knife show /nodes/blah.json succeeds" do
|
480
|
-
knife("show --local /nodes/blah.json").should_succeed <<~EOM
|
481
|
-
/nodes/blah.json:
|
482
|
-
{
|
483
|
-
|
484
|
-
}
|
485
|
-
EOM
|
486
|
-
end
|
487
|
-
end
|
488
|
-
|
489
|
-
context "when there is a directory in roles1 and file in roles2 with the same name" do
|
490
|
-
before do
|
491
|
-
directory "roles/blah.json"
|
492
|
-
file "roles2/blah.json", {}
|
493
|
-
end
|
494
|
-
it "knife show /roles/blah.json succeeds" do
|
495
|
-
knife("show --local /roles/blah.json").should_succeed <<~EOM
|
496
|
-
/roles/blah.json:
|
497
|
-
{
|
498
|
-
|
499
|
-
}
|
500
|
-
EOM
|
501
|
-
end
|
502
|
-
end
|
503
|
-
|
504
|
-
context "when there is a directory in users1 and file in users2 with the same name" do
|
505
|
-
before do
|
506
|
-
directory "users/blah.json"
|
507
|
-
file "users2/blah.json", {}
|
508
|
-
end
|
509
|
-
it "knife show /users/blah.json succeeds" do
|
510
|
-
knife("show --local /users/blah.json").should_succeed <<~EOM
|
511
|
-
/users/blah.json:
|
512
|
-
{
|
513
|
-
|
514
|
-
}
|
515
|
-
EOM
|
516
|
-
end
|
517
|
-
end
|
518
|
-
|
519
|
-
context "when cwd is at the top level" do
|
520
|
-
before { cwd "." }
|
521
|
-
it "knife list --local -Rfp fails" do
|
522
|
-
knife("list --local -Rfp").should_fail(error_rel_path_outside_repo)
|
523
|
-
end
|
524
|
-
end
|
525
|
-
|
526
|
-
context "when cwd is inside the data_bags directory" do
|
527
|
-
before { cwd "data_bags" }
|
528
|
-
it "knife list --local -Rfp lists data bags" do
|
529
|
-
knife("list --local -Rfp").should_succeed <<~EOM
|
530
|
-
bag/
|
531
|
-
bag/item.json
|
532
|
-
bag2/
|
533
|
-
bag2/item2.json
|
534
|
-
EOM
|
535
|
-
end
|
536
|
-
end
|
537
|
-
|
538
|
-
context "when cwd is inside chef_repo2" do
|
539
|
-
before { cwd "chef_repo2" }
|
540
|
-
it "knife list --local -Rfp lists everything" do
|
541
|
-
knife("list --local -Rfp").should_succeed <<~EOM
|
542
|
-
clients/
|
543
|
-
clients/client1.json
|
544
|
-
clients/client2.json
|
545
|
-
cookbooks/
|
546
|
-
cookbooks/cookbook1/
|
547
|
-
cookbooks/cookbook1/metadata.rb
|
548
|
-
cookbooks/cookbook2/
|
549
|
-
cookbooks/cookbook2/metadata.rb
|
550
|
-
data_bags/
|
551
|
-
data_bags/bag/
|
552
|
-
data_bags/bag/item.json
|
553
|
-
data_bags/bag2/
|
554
|
-
data_bags/bag2/item2.json
|
555
|
-
environments/
|
556
|
-
environments/env1.json
|
557
|
-
environments/env2.json
|
558
|
-
nodes/
|
559
|
-
nodes/node1.json
|
560
|
-
nodes/node2.json
|
561
|
-
roles/
|
562
|
-
roles/role1.json
|
563
|
-
roles/role2.json
|
564
|
-
users/
|
565
|
-
users/user1.json
|
566
|
-
users/user2.json
|
567
|
-
EOM
|
568
|
-
end
|
569
|
-
end
|
570
|
-
|
571
|
-
context "when cwd is inside data_bags2" do
|
572
|
-
before { cwd "data_bags2" }
|
573
|
-
it "knife list --local -Rfp lists data bags" do
|
574
|
-
knife("list --local -Rfp").should_succeed <<~EOM
|
575
|
-
bag/
|
576
|
-
bag/item.json
|
577
|
-
bag2/
|
578
|
-
bag2/item2.json
|
579
|
-
EOM
|
580
|
-
end
|
581
|
-
end
|
582
|
-
end
|
583
|
-
|
584
|
-
context "when when chef_repo_path is set to both places and no other _path is set" do
|
585
|
-
before :each do
|
586
|
-
%w{client cookbook data_bag environment node role user}.each do |object_name|
|
587
|
-
Chef::Config.delete("#{object_name}_path".to_sym)
|
588
|
-
end
|
589
|
-
Chef::Config.chef_repo_path = [
|
590
|
-
Chef::Config.chef_repo_path,
|
591
|
-
File.join(Chef::Config.chef_repo_path, "chef_repo2"),
|
592
|
-
]
|
593
|
-
end
|
594
|
-
|
595
|
-
context "when cwd is at the top level" do
|
596
|
-
before { cwd "." }
|
597
|
-
it "knife list --local -Rfp lists everything" do
|
598
|
-
knife("list --local -Rfp").should_succeed <<~EOM
|
599
|
-
clients/
|
600
|
-
clients/client1.json
|
601
|
-
clients/client3.json
|
602
|
-
cookbooks/
|
603
|
-
cookbooks/cookbook1/
|
604
|
-
cookbooks/cookbook1/metadata.rb
|
605
|
-
cookbooks/cookbook3/
|
606
|
-
cookbooks/cookbook3/metadata.rb
|
607
|
-
data_bags/
|
608
|
-
data_bags/bag/
|
609
|
-
data_bags/bag/item.json
|
610
|
-
data_bags/bag3/
|
611
|
-
data_bags/bag3/item3.json
|
612
|
-
environments/
|
613
|
-
environments/env1.json
|
614
|
-
environments/env3.json
|
615
|
-
nodes/
|
616
|
-
nodes/node1.json
|
617
|
-
nodes/node3.json
|
618
|
-
roles/
|
619
|
-
roles/role1.json
|
620
|
-
roles/role3.json
|
621
|
-
users/
|
622
|
-
users/user1.json
|
623
|
-
users/user3.json
|
624
|
-
EOM
|
625
|
-
end
|
626
|
-
end
|
627
|
-
|
628
|
-
context "when cwd is inside the data_bags directory" do
|
629
|
-
before { cwd "data_bags" }
|
630
|
-
it "knife list --local -Rfp lists data bags" do
|
631
|
-
knife("list --local -Rfp").should_succeed <<~EOM
|
632
|
-
bag/
|
633
|
-
bag/item.json
|
634
|
-
bag3/
|
635
|
-
bag3/item3.json
|
636
|
-
EOM
|
637
|
-
end
|
638
|
-
end
|
639
|
-
|
640
|
-
context "when cwd is inside chef_repo2" do
|
641
|
-
before { cwd "chef_repo2" }
|
642
|
-
it "knife list --local -Rfp lists everything" do
|
643
|
-
knife("list --local -Rfp").should_succeed <<~EOM
|
644
|
-
clients/
|
645
|
-
clients/client1.json
|
646
|
-
clients/client3.json
|
647
|
-
cookbooks/
|
648
|
-
cookbooks/cookbook1/
|
649
|
-
cookbooks/cookbook1/metadata.rb
|
650
|
-
cookbooks/cookbook3/
|
651
|
-
cookbooks/cookbook3/metadata.rb
|
652
|
-
data_bags/
|
653
|
-
data_bags/bag/
|
654
|
-
data_bags/bag/item.json
|
655
|
-
data_bags/bag3/
|
656
|
-
data_bags/bag3/item3.json
|
657
|
-
environments/
|
658
|
-
environments/env1.json
|
659
|
-
environments/env3.json
|
660
|
-
nodes/
|
661
|
-
nodes/node1.json
|
662
|
-
nodes/node3.json
|
663
|
-
roles/
|
664
|
-
roles/role1.json
|
665
|
-
roles/role3.json
|
666
|
-
users/
|
667
|
-
users/user1.json
|
668
|
-
users/user3.json
|
669
|
-
EOM
|
670
|
-
end
|
671
|
-
end
|
672
|
-
|
673
|
-
context "when cwd is inside chef_repo2/data_bags" do
|
674
|
-
before { cwd "chef_repo2/data_bags" }
|
675
|
-
it "knife list --local -Rfp lists data bags" do
|
676
|
-
knife("list --local -Rfp").should_succeed <<~EOM
|
677
|
-
bag/
|
678
|
-
bag/item.json
|
679
|
-
bag3/
|
680
|
-
bag3/item3.json
|
681
|
-
EOM
|
682
|
-
end
|
683
|
-
end
|
684
|
-
end
|
685
|
-
|
686
|
-
context "when cookbook_path is set and nothing else" do
|
687
|
-
before :each do
|
688
|
-
%w{client data_bag environment node role user}.each do |object_name|
|
689
|
-
Chef::Config.delete("#{object_name}_path".to_sym)
|
690
|
-
end
|
691
|
-
Chef::Config.delete(:chef_repo_path)
|
692
|
-
Chef::Config.cookbook_path = File.join(@repository_dir, "chef_repo2", "cookbooks")
|
693
|
-
end
|
694
|
-
|
695
|
-
context "when cwd is at the top level" do
|
696
|
-
before { cwd "." }
|
697
|
-
it "knife list --local -Rfp fails" do
|
698
|
-
knife("list --local -Rfp").should_fail(error_rel_path_outside_repo)
|
699
|
-
end
|
700
|
-
end
|
701
|
-
|
702
|
-
context "when cwd is inside the data_bags directory" do
|
703
|
-
before { cwd "data_bags" }
|
704
|
-
it "knife list --local -Rfp fails" do
|
705
|
-
knife("list --local -Rfp").should_fail(error_rel_path_outside_repo)
|
706
|
-
end
|
707
|
-
end
|
708
|
-
|
709
|
-
context "when cwd is inside chef_repo2" do
|
710
|
-
before { cwd "chef_repo2" }
|
711
|
-
it "knife list --local -Rfp lists everything" do
|
712
|
-
knife("list --local -Rfp").should_succeed <<~EOM
|
713
|
-
clients/
|
714
|
-
clients/client3.json
|
715
|
-
cookbooks/
|
716
|
-
cookbooks/cookbook3/
|
717
|
-
cookbooks/cookbook3/metadata.rb
|
718
|
-
data_bags/
|
719
|
-
data_bags/bag3/
|
720
|
-
data_bags/bag3/item3.json
|
721
|
-
environments/
|
722
|
-
environments/env3.json
|
723
|
-
nodes/
|
724
|
-
nodes/node3.json
|
725
|
-
roles/
|
726
|
-
roles/role3.json
|
727
|
-
users/
|
728
|
-
users/user3.json
|
729
|
-
EOM
|
730
|
-
end
|
731
|
-
end
|
732
|
-
|
733
|
-
context "when cwd is inside chef_repo2/data_bags" do
|
734
|
-
before { cwd "chef_repo2/data_bags" }
|
735
|
-
it "knife list --local -Rfp lists data bags" do
|
736
|
-
knife("list --local -Rfp").should_succeed <<~EOM
|
737
|
-
bag3/
|
738
|
-
bag3/item3.json
|
739
|
-
EOM
|
740
|
-
end
|
741
|
-
end
|
742
|
-
end
|
743
|
-
|
744
|
-
context "when cookbook_path is set to multiple places and nothing else is set" do
|
745
|
-
before :each do
|
746
|
-
%w{client data_bag environment node role user}.each do |object_name|
|
747
|
-
Chef::Config.delete("#{object_name}_path".to_sym)
|
748
|
-
end
|
749
|
-
Chef::Config.delete(:chef_repo_path)
|
750
|
-
Chef::Config.cookbook_path = [
|
751
|
-
File.join(@repository_dir, "cookbooks"),
|
752
|
-
File.join(@repository_dir, "chef_repo2", "cookbooks"),
|
753
|
-
]
|
754
|
-
end
|
755
|
-
|
756
|
-
context "when cwd is at the top level" do
|
757
|
-
before { cwd "." }
|
758
|
-
it "knife list --local -Rfp lists everything" do
|
759
|
-
knife("list --local -Rfp").should_succeed <<~EOM
|
760
|
-
clients/
|
761
|
-
clients/client1.json
|
762
|
-
clients/client3.json
|
763
|
-
cookbooks/
|
764
|
-
cookbooks/cookbook1/
|
765
|
-
cookbooks/cookbook1/metadata.rb
|
766
|
-
cookbooks/cookbook3/
|
767
|
-
cookbooks/cookbook3/metadata.rb
|
768
|
-
data_bags/
|
769
|
-
data_bags/bag/
|
770
|
-
data_bags/bag/item.json
|
771
|
-
data_bags/bag3/
|
772
|
-
data_bags/bag3/item3.json
|
773
|
-
environments/
|
774
|
-
environments/env1.json
|
775
|
-
environments/env3.json
|
776
|
-
nodes/
|
777
|
-
nodes/node1.json
|
778
|
-
nodes/node3.json
|
779
|
-
roles/
|
780
|
-
roles/role1.json
|
781
|
-
roles/role3.json
|
782
|
-
users/
|
783
|
-
users/user1.json
|
784
|
-
users/user3.json
|
785
|
-
EOM
|
786
|
-
end
|
787
|
-
end
|
788
|
-
|
789
|
-
context "when cwd is inside the data_bags directory" do
|
790
|
-
before { cwd "data_bags" }
|
791
|
-
it "knife list --local -Rfp lists data bags" do
|
792
|
-
knife("list --local -Rfp").should_succeed <<~EOM
|
793
|
-
bag/
|
794
|
-
bag/item.json
|
795
|
-
bag3/
|
796
|
-
bag3/item3.json
|
797
|
-
EOM
|
798
|
-
end
|
799
|
-
end
|
800
|
-
|
801
|
-
context "when cwd is inside chef_repo2" do
|
802
|
-
before { cwd "chef_repo2" }
|
803
|
-
it "knife list --local -Rfp lists everything" do
|
804
|
-
knife("list --local -Rfp").should_succeed <<~EOM
|
805
|
-
clients/
|
806
|
-
clients/client1.json
|
807
|
-
clients/client3.json
|
808
|
-
cookbooks/
|
809
|
-
cookbooks/cookbook1/
|
810
|
-
cookbooks/cookbook1/metadata.rb
|
811
|
-
cookbooks/cookbook3/
|
812
|
-
cookbooks/cookbook3/metadata.rb
|
813
|
-
data_bags/
|
814
|
-
data_bags/bag/
|
815
|
-
data_bags/bag/item.json
|
816
|
-
data_bags/bag3/
|
817
|
-
data_bags/bag3/item3.json
|
818
|
-
environments/
|
819
|
-
environments/env1.json
|
820
|
-
environments/env3.json
|
821
|
-
nodes/
|
822
|
-
nodes/node1.json
|
823
|
-
nodes/node3.json
|
824
|
-
roles/
|
825
|
-
roles/role1.json
|
826
|
-
roles/role3.json
|
827
|
-
users/
|
828
|
-
users/user1.json
|
829
|
-
users/user3.json
|
830
|
-
EOM
|
831
|
-
end
|
832
|
-
end
|
833
|
-
|
834
|
-
context "when cwd is inside chef_repo2/data_bags" do
|
835
|
-
before { cwd "chef_repo2/data_bags" }
|
836
|
-
it "knife list --local -Rfp lists data bags" do
|
837
|
-
knife("list --local -Rfp").should_succeed <<~EOM
|
838
|
-
bag/
|
839
|
-
bag/item.json
|
840
|
-
bag3/
|
841
|
-
bag3/item3.json
|
842
|
-
EOM
|
843
|
-
end
|
844
|
-
end
|
845
|
-
end
|
846
|
-
|
847
|
-
context "when data_bag_path and chef_repo_path are set, and nothing else" do
|
848
|
-
before :each do
|
849
|
-
%w{client cookbook environment node role user}.each do |object_name|
|
850
|
-
Chef::Config.delete("#{object_name}_path".to_sym)
|
851
|
-
end
|
852
|
-
Chef::Config.data_bag_path = File.join(Chef::Config.chef_repo_path, "data_bags")
|
853
|
-
Chef::Config.chef_repo_path = File.join(Chef::Config.chef_repo_path, "chef_repo2")
|
854
|
-
end
|
855
|
-
|
856
|
-
context "when cwd is at the top level" do
|
857
|
-
before { cwd "." }
|
858
|
-
it "knife list --local -Rfp fails" do
|
859
|
-
knife("list --local -Rfp").should_fail(error_rel_path_outside_repo)
|
860
|
-
end
|
861
|
-
end
|
862
|
-
|
863
|
-
context "when cwd is inside the data_bags directory" do
|
864
|
-
before { cwd "data_bags" }
|
865
|
-
it "knife list --local -Rfp lists data bags" do
|
866
|
-
knife("list --local -Rfp").should_succeed <<~EOM
|
867
|
-
bag/
|
868
|
-
bag/item.json
|
869
|
-
EOM
|
870
|
-
end
|
871
|
-
end
|
872
|
-
|
873
|
-
context "when cwd is inside chef_repo2" do
|
874
|
-
before { cwd "chef_repo2" }
|
875
|
-
it "knife list --local -Rfp lists everything" do
|
876
|
-
knife("list --local -Rfp").should_succeed <<~EOM
|
877
|
-
clients/
|
878
|
-
clients/client3.json
|
879
|
-
cookbooks/
|
880
|
-
cookbooks/cookbook3/
|
881
|
-
cookbooks/cookbook3/metadata.rb
|
882
|
-
data_bags/
|
883
|
-
data_bags/bag/
|
884
|
-
data_bags/bag/item.json
|
885
|
-
environments/
|
886
|
-
environments/env3.json
|
887
|
-
nodes/
|
888
|
-
nodes/node3.json
|
889
|
-
roles/
|
890
|
-
roles/role3.json
|
891
|
-
users/
|
892
|
-
users/user3.json
|
893
|
-
EOM
|
894
|
-
end
|
895
|
-
end
|
896
|
-
|
897
|
-
context "when cwd is inside chef_repo2/data_bags" do
|
898
|
-
before { cwd "chef_repo2/data_bags" }
|
899
|
-
it "knife list --local -Rfp fails" do
|
900
|
-
knife("list --local -Rfp").should_fail(error_rel_path_outside_repo)
|
901
|
-
end
|
902
|
-
end
|
903
|
-
end
|
904
|
-
|
905
|
-
context "when data_bag_path is set and nothing else" do
|
906
|
-
include_context "default config options"
|
907
|
-
|
908
|
-
before :each do
|
909
|
-
%w{client cookbook environment node role user}.each do |object_name|
|
910
|
-
Chef::Config.delete("#{object_name}_path".to_sym)
|
911
|
-
end
|
912
|
-
Chef::Config.delete(:chef_repo_path)
|
913
|
-
Chef::Config.data_bag_path = File.join(@repository_dir, "data_bags")
|
914
|
-
end
|
915
|
-
|
916
|
-
it "knife list --local -Rfp / lists data bags" do
|
917
|
-
knife("list --local -Rfp /").should_succeed <<~EOM
|
918
|
-
/data_bags/
|
919
|
-
/data_bags/bag/
|
920
|
-
/data_bags/bag/item.json
|
921
|
-
EOM
|
922
|
-
end
|
923
|
-
|
924
|
-
it "knife list --local -Rfp /data_bags lists data bags" do
|
925
|
-
knife("list --local -Rfp /data_bags").should_succeed <<~EOM
|
926
|
-
/data_bags/bag/
|
927
|
-
/data_bags/bag/item.json
|
928
|
-
EOM
|
929
|
-
end
|
930
|
-
|
931
|
-
context "when cwd is inside the data_bags directory" do
|
932
|
-
before { cwd "data_bags" }
|
933
|
-
it "knife list --local -Rfp lists data bags" do
|
934
|
-
knife("list --local -Rfp").should_succeed <<~EOM
|
935
|
-
bag/
|
936
|
-
bag/item.json
|
937
|
-
EOM
|
938
|
-
end
|
939
|
-
end
|
940
|
-
end
|
941
|
-
end
|
942
|
-
|
943
|
-
when_the_repository "is empty" do
|
944
|
-
context "when the repository _paths point to places that do not exist" do
|
945
|
-
before :each do
|
946
|
-
%w{client cookbook data_bag environment node role user}.each do |object_name|
|
947
|
-
Chef::Config["#{object_name}_path".to_sym] = File.join(Chef::Config.chef_repo_path, "nowhere", object_name)
|
948
|
-
end
|
949
|
-
Chef::Config.chef_repo_path = File.join(Chef::Config.chef_repo_path, "nowhere")
|
950
|
-
end
|
951
|
-
|
952
|
-
it "knife list --local -Rfp / fails" do
|
953
|
-
knife("list --local -Rfp /").should_succeed ""
|
954
|
-
end
|
955
|
-
|
956
|
-
it "knife list --local -Rfp /data_bags fails" do
|
957
|
-
knife("list --local -Rfp /data_bags").should_fail("ERROR: /data_bags: No such file or directory\n")
|
958
|
-
end
|
959
|
-
end
|
960
|
-
end
|
961
|
-
end
|
962
|
-
end
|
1
|
+
#
|
2
|
+
# Author:: John Keiser (<jkeiser@chef.io>)
|
3
|
+
# Copyright:: Copyright (c) Chef Software Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
|
18
|
+
require "knife_spec_helper"
|
19
|
+
require "support/shared/integration/integration_helper"
|
20
|
+
require "support/shared/context/config"
|
21
|
+
require "chef/knife/list"
|
22
|
+
require "chef/knife/show"
|
23
|
+
|
24
|
+
describe "chef_repo_path tests", :workstation do
|
25
|
+
include IntegrationSupport
|
26
|
+
include KnifeSupport
|
27
|
+
|
28
|
+
let(:error_rel_path_outside_repo) { /^ERROR: Attempt to use relative path '' when current directory is outside the repository path/ }
|
29
|
+
|
30
|
+
# TODO alternate repo_path / *_path
|
31
|
+
context "alternate *_path" do
|
32
|
+
when_the_repository "has clients and clients2, cookbooks and cookbooks2, etc." do
|
33
|
+
before do
|
34
|
+
file "clients/client1.json", {}
|
35
|
+
file "cookbooks/cookbook1/metadata.rb", ""
|
36
|
+
file "data_bags/bag/item.json", {}
|
37
|
+
file "environments/env1.json", {}
|
38
|
+
file "nodes/node1.json", {}
|
39
|
+
file "roles/role1.json", {}
|
40
|
+
file "users/user1.json", {}
|
41
|
+
|
42
|
+
file "clients2/client2.json", {}
|
43
|
+
file "cookbooks2/cookbook2/metadata.rb", ""
|
44
|
+
file "data_bags2/bag2/item2.json", {}
|
45
|
+
file "environments2/env2.json", {}
|
46
|
+
file "nodes2/node2.json", {}
|
47
|
+
file "roles2/role2.json", {}
|
48
|
+
file "users2/user2.json", {}
|
49
|
+
|
50
|
+
directory "chef_repo2" do
|
51
|
+
file "clients/client3.json", {}
|
52
|
+
file "cookbooks/cookbook3/metadata.rb", "name 'cookbook3'"
|
53
|
+
file "data_bags/bag3/item3.json", {}
|
54
|
+
file "environments/env3.json", {}
|
55
|
+
file "nodes/node3.json", {}
|
56
|
+
file "roles/role3.json", {}
|
57
|
+
file "users/user3.json", {}
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
it "knife list --local -Rfp --chef-repo-path chef_repo2 / grabs chef_repo2 stuff" do
|
62
|
+
Chef::Config.delete(:chef_repo_path)
|
63
|
+
knife("list --local -Rfp --chef-repo-path #{path_to("chef_repo2")} /").should_succeed <<~EOM
|
64
|
+
/clients/
|
65
|
+
/clients/client3.json
|
66
|
+
/cookbooks/
|
67
|
+
/cookbooks/cookbook3/
|
68
|
+
/cookbooks/cookbook3/metadata.rb
|
69
|
+
/data_bags/
|
70
|
+
/data_bags/bag3/
|
71
|
+
/data_bags/bag3/item3.json
|
72
|
+
/environments/
|
73
|
+
/environments/env3.json
|
74
|
+
/nodes/
|
75
|
+
/nodes/node3.json
|
76
|
+
/roles/
|
77
|
+
/roles/role3.json
|
78
|
+
/users/
|
79
|
+
/users/user3.json
|
80
|
+
EOM
|
81
|
+
end
|
82
|
+
|
83
|
+
# "Skipping for BK... As Windows 2019 has 8dot3name disabled by default"
|
84
|
+
it "knife list --local -Rfp --chef-repo-path chef_r~1 / grabs chef_repo2 stuff", :windows_only, :skip_buildkite do
|
85
|
+
Chef::Config.delete(:chef_repo_path)
|
86
|
+
knife("list --local -Rfp --chef-repo-path #{path_to("chef_r~1")} /").should_succeed <<~EOM
|
87
|
+
/clients/
|
88
|
+
/clients/client3.json
|
89
|
+
/cookbooks/
|
90
|
+
/cookbooks/cookbook3/
|
91
|
+
/cookbooks/cookbook3/metadata.rb
|
92
|
+
/data_bags/
|
93
|
+
/data_bags/bag3/
|
94
|
+
/data_bags/bag3/item3.json
|
95
|
+
/environments/
|
96
|
+
/environments/env3.json
|
97
|
+
/nodes/
|
98
|
+
/nodes/node3.json
|
99
|
+
/roles/
|
100
|
+
/roles/role3.json
|
101
|
+
/users/
|
102
|
+
/users/user3.json
|
103
|
+
EOM
|
104
|
+
end
|
105
|
+
|
106
|
+
# "Skipping for BK... As Windows 2019 has 8dot3name disabled by default"
|
107
|
+
it "knife list --local -Rfp --chef-repo-path chef_r~1 / grabs chef_repo2 stuff", :windows_only, :skip_buildkite do
|
108
|
+
Chef::Config.delete(:chef_repo_path)
|
109
|
+
knife("list -z -Rfp --chef-repo-path #{path_to("chef_r~1")} /").should_succeed <<~EOM
|
110
|
+
/acls/
|
111
|
+
/acls/clients/
|
112
|
+
/acls/clients/client3.json
|
113
|
+
/acls/containers/
|
114
|
+
/acls/cookbook_artifacts/
|
115
|
+
/acls/cookbooks/
|
116
|
+
/acls/cookbooks/cookbook3.json
|
117
|
+
/acls/data_bags/
|
118
|
+
/acls/data_bags/bag3.json
|
119
|
+
/acls/environments/
|
120
|
+
/acls/environments/env3.json
|
121
|
+
/acls/groups/
|
122
|
+
/acls/nodes/
|
123
|
+
/acls/nodes/node3.json
|
124
|
+
/acls/organization.json
|
125
|
+
/acls/policies/
|
126
|
+
/acls/policy_groups/
|
127
|
+
/acls/roles/
|
128
|
+
/acls/roles/role3.json
|
129
|
+
/clients/
|
130
|
+
/clients/client3.json
|
131
|
+
/containers/
|
132
|
+
/cookbook_artifacts/
|
133
|
+
/cookbooks/
|
134
|
+
/cookbooks/cookbook3/
|
135
|
+
/cookbooks/cookbook3/metadata.rb
|
136
|
+
/data_bags/
|
137
|
+
/data_bags/bag3/
|
138
|
+
/data_bags/bag3/item3.json
|
139
|
+
/environments/
|
140
|
+
/environments/env3.json
|
141
|
+
/groups/
|
142
|
+
/invitations.json
|
143
|
+
/members.json
|
144
|
+
/nodes/
|
145
|
+
/nodes/node3.json
|
146
|
+
/org.json
|
147
|
+
/policies/
|
148
|
+
/policy_groups/
|
149
|
+
/roles/
|
150
|
+
/roles/role3.json
|
151
|
+
EOM
|
152
|
+
end
|
153
|
+
|
154
|
+
context "when all _paths are set to alternates" do
|
155
|
+
before :each do
|
156
|
+
%w{client cookbook data_bag environment node role user}.each do |object_name|
|
157
|
+
Chef::Config["#{object_name}_path".to_sym] = File.join(Chef::Config.chef_repo_path, "#{object_name}s2")
|
158
|
+
end
|
159
|
+
Chef::Config.chef_repo_path = File.join(Chef::Config.chef_repo_path, "chef_repo2")
|
160
|
+
end
|
161
|
+
|
162
|
+
it "knife list --local -Rfp --chef-repo-path chef_repo2 / grabs chef_repo2 stuff" do
|
163
|
+
knife("list --local -Rfp --chef-repo-path #{path_to("chef_repo2")} /").should_succeed <<~EOM
|
164
|
+
/clients/
|
165
|
+
/clients/client3.json
|
166
|
+
/cookbooks/
|
167
|
+
/cookbooks/cookbook3/
|
168
|
+
/cookbooks/cookbook3/metadata.rb
|
169
|
+
/data_bags/
|
170
|
+
/data_bags/bag3/
|
171
|
+
/data_bags/bag3/item3.json
|
172
|
+
/environments/
|
173
|
+
/environments/env3.json
|
174
|
+
/nodes/
|
175
|
+
/nodes/node3.json
|
176
|
+
/roles/
|
177
|
+
/roles/role3.json
|
178
|
+
/users/
|
179
|
+
/users/user3.json
|
180
|
+
EOM
|
181
|
+
end
|
182
|
+
|
183
|
+
context "when cwd is at the top level" do
|
184
|
+
before { cwd "." }
|
185
|
+
it "knife list --local -Rfp fails" do
|
186
|
+
knife("list --local -Rfp").should_fail(error_rel_path_outside_repo)
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
190
|
+
context "when cwd is inside the data_bags directory" do
|
191
|
+
before { cwd "data_bags" }
|
192
|
+
it "knife list --local -Rfp fails" do
|
193
|
+
knife("list --local -Rfp").should_fail(error_rel_path_outside_repo)
|
194
|
+
end
|
195
|
+
end
|
196
|
+
|
197
|
+
context "when cwd is inside chef_repo2" do
|
198
|
+
before { cwd "chef_repo2" }
|
199
|
+
it "knife list --local -Rfp lists everything" do
|
200
|
+
knife("list --local -Rfp").should_succeed <<~EOM
|
201
|
+
clients/
|
202
|
+
clients/client2.json
|
203
|
+
cookbooks/
|
204
|
+
cookbooks/cookbook2/
|
205
|
+
cookbooks/cookbook2/metadata.rb
|
206
|
+
data_bags/
|
207
|
+
data_bags/bag2/
|
208
|
+
data_bags/bag2/item2.json
|
209
|
+
environments/
|
210
|
+
environments/env2.json
|
211
|
+
nodes/
|
212
|
+
nodes/node2.json
|
213
|
+
roles/
|
214
|
+
roles/role2.json
|
215
|
+
users/
|
216
|
+
users/user2.json
|
217
|
+
EOM
|
218
|
+
end
|
219
|
+
end
|
220
|
+
|
221
|
+
context "when cwd is inside data_bags2" do
|
222
|
+
before { cwd "data_bags2" }
|
223
|
+
it "knife list --local -Rfp lists data bags" do
|
224
|
+
knife("list --local -Rfp").should_succeed <<~EOM
|
225
|
+
bag2/
|
226
|
+
bag2/item2.json
|
227
|
+
EOM
|
228
|
+
end
|
229
|
+
it "knife list --local -Rfp ../roles lists roles" do
|
230
|
+
knife("list --local -Rfp ../roles").should_succeed "/roles/role2.json\n"
|
231
|
+
end
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
context "when all _paths except chef_repo_path are set to alternates" do
|
236
|
+
before :each do
|
237
|
+
%w{client cookbook data_bag environment node role user}.each do |object_name|
|
238
|
+
Chef::Config["#{object_name}_path".to_sym] = File.join(Chef::Config.chef_repo_path, "#{object_name}s2")
|
239
|
+
end
|
240
|
+
end
|
241
|
+
|
242
|
+
context "when cwd is at the top level" do
|
243
|
+
before { cwd "." }
|
244
|
+
it "knife list --local -Rfp lists everything" do
|
245
|
+
knife("list --local -Rfp").should_succeed <<~EOM
|
246
|
+
clients/
|
247
|
+
clients/client2.json
|
248
|
+
cookbooks/
|
249
|
+
cookbooks/cookbook2/
|
250
|
+
cookbooks/cookbook2/metadata.rb
|
251
|
+
data_bags/
|
252
|
+
data_bags/bag2/
|
253
|
+
data_bags/bag2/item2.json
|
254
|
+
environments/
|
255
|
+
environments/env2.json
|
256
|
+
nodes/
|
257
|
+
nodes/node2.json
|
258
|
+
roles/
|
259
|
+
roles/role2.json
|
260
|
+
users/
|
261
|
+
users/user2.json
|
262
|
+
EOM
|
263
|
+
end
|
264
|
+
end
|
265
|
+
|
266
|
+
context "when cwd is inside the data_bags directory" do
|
267
|
+
before { cwd "data_bags" }
|
268
|
+
it "knife list --local -Rfp fails" do
|
269
|
+
knife("list --local -Rfp").should_fail(error_rel_path_outside_repo)
|
270
|
+
end
|
271
|
+
end
|
272
|
+
|
273
|
+
context "when cwd is inside chef_repo2" do
|
274
|
+
before { cwd "chef_repo2" }
|
275
|
+
it "knife list -Rfp fails" do
|
276
|
+
knife("list --local -Rfp").should_fail(error_rel_path_outside_repo)
|
277
|
+
end
|
278
|
+
end
|
279
|
+
|
280
|
+
context "when cwd is inside data_bags2" do
|
281
|
+
before { cwd "data_bags2" }
|
282
|
+
it "knife list --local -Rfp lists data bags" do
|
283
|
+
knife("list --local -Rfp").should_succeed <<~EOM
|
284
|
+
bag2/
|
285
|
+
bag2/item2.json
|
286
|
+
EOM
|
287
|
+
end
|
288
|
+
end
|
289
|
+
end
|
290
|
+
|
291
|
+
context "when only chef_repo_path is set to its alternate" do
|
292
|
+
before :each do
|
293
|
+
%w{client cookbook data_bag environment node role user}.each do |object_name|
|
294
|
+
Chef::Config.delete("#{object_name}_path".to_sym)
|
295
|
+
end
|
296
|
+
Chef::Config.chef_repo_path = File.join(Chef::Config.chef_repo_path, "chef_repo2")
|
297
|
+
end
|
298
|
+
|
299
|
+
context "when cwd is at the top level" do
|
300
|
+
before { cwd "." }
|
301
|
+
it "knife list --local -Rfp fails" do
|
302
|
+
knife("list --local -Rfp").should_fail(error_rel_path_outside_repo)
|
303
|
+
end
|
304
|
+
end
|
305
|
+
|
306
|
+
context "when cwd is inside the data_bags directory" do
|
307
|
+
before { cwd "data_bags" }
|
308
|
+
it "knife list --local -Rfp fails" do
|
309
|
+
knife("list --local -Rfp").should_fail(error_rel_path_outside_repo)
|
310
|
+
end
|
311
|
+
end
|
312
|
+
|
313
|
+
context "when cwd is inside chef_repo2" do
|
314
|
+
before { cwd "chef_repo2" }
|
315
|
+
it "knife list --local -Rfp lists everything" do
|
316
|
+
knife("list --local -Rfp").should_succeed <<~EOM
|
317
|
+
clients/
|
318
|
+
clients/client3.json
|
319
|
+
cookbooks/
|
320
|
+
cookbooks/cookbook3/
|
321
|
+
cookbooks/cookbook3/metadata.rb
|
322
|
+
data_bags/
|
323
|
+
data_bags/bag3/
|
324
|
+
data_bags/bag3/item3.json
|
325
|
+
environments/
|
326
|
+
environments/env3.json
|
327
|
+
nodes/
|
328
|
+
nodes/node3.json
|
329
|
+
roles/
|
330
|
+
roles/role3.json
|
331
|
+
users/
|
332
|
+
users/user3.json
|
333
|
+
EOM
|
334
|
+
end
|
335
|
+
end
|
336
|
+
|
337
|
+
context "when cwd is inside chef_repo2/data_bags" do
|
338
|
+
before { cwd "chef_repo2/data_bags" }
|
339
|
+
it "knife list --local -Rfp lists data bags" do
|
340
|
+
knife("list --local -Rfp").should_succeed <<~EOM
|
341
|
+
bag3/
|
342
|
+
bag3/item3.json
|
343
|
+
EOM
|
344
|
+
end
|
345
|
+
end
|
346
|
+
end
|
347
|
+
|
348
|
+
context "when paths are set to point to both versions of each" do
|
349
|
+
before :each do
|
350
|
+
%w{client cookbook data_bag environment node role user}.each do |object_name|
|
351
|
+
Chef::Config["#{object_name}_path".to_sym] = [
|
352
|
+
File.join(Chef::Config.chef_repo_path, "#{object_name}s"),
|
353
|
+
File.join(Chef::Config.chef_repo_path, "#{object_name}s2"),
|
354
|
+
]
|
355
|
+
end
|
356
|
+
Chef::Config.chef_repo_path = File.join(Chef::Config.chef_repo_path, "chef_repo2")
|
357
|
+
end
|
358
|
+
|
359
|
+
context "when there is a directory in clients1 and file in clients2 with the same name" do
|
360
|
+
before do
|
361
|
+
directory "clients/blah.json"
|
362
|
+
file "clients2/blah.json", {}
|
363
|
+
end
|
364
|
+
it "knife show /clients/blah.json succeeds" do
|
365
|
+
knife("show --local /clients/blah.json").should_succeed <<~EOM
|
366
|
+
/clients/blah.json:
|
367
|
+
{
|
368
|
+
|
369
|
+
}
|
370
|
+
EOM
|
371
|
+
end
|
372
|
+
end
|
373
|
+
|
374
|
+
context "when there is a file in cookbooks1 and directory in cookbooks2 with the same name" do
|
375
|
+
before do
|
376
|
+
file "cookbooks/blah", ""
|
377
|
+
file "cookbooks2/blah/metadata.rb", ""
|
378
|
+
end
|
379
|
+
it "knife list -Rfp cookbooks shows files in blah" do
|
380
|
+
knife("list --local -Rfp /cookbooks").should_succeed <<~EOM
|
381
|
+
/cookbooks/blah/
|
382
|
+
/cookbooks/blah/metadata.rb
|
383
|
+
/cookbooks/cookbook1/
|
384
|
+
/cookbooks/cookbook1/metadata.rb
|
385
|
+
/cookbooks/cookbook2/
|
386
|
+
/cookbooks/cookbook2/metadata.rb
|
387
|
+
EOM
|
388
|
+
end
|
389
|
+
end
|
390
|
+
|
391
|
+
context "when there is an empty directory in cookbooks1 and a real cookbook in cookbooks2 with the same name" do
|
392
|
+
before do
|
393
|
+
directory "cookbooks/blah"
|
394
|
+
file "cookbooks2/blah/metadata.rb", ""
|
395
|
+
end
|
396
|
+
it "knife list -Rfp cookbooks shows files in blah" do
|
397
|
+
knife("list --local -Rfp /cookbooks").should_succeed(<<~EOM, stderr: "WARN: Cookbook 'blah' is empty or entirely chefignored at #{Chef::Config.cookbook_path[0]}/blah\n")
|
398
|
+
/cookbooks/blah/
|
399
|
+
/cookbooks/blah/metadata.rb
|
400
|
+
/cookbooks/cookbook1/
|
401
|
+
/cookbooks/cookbook1/metadata.rb
|
402
|
+
/cookbooks/cookbook2/
|
403
|
+
/cookbooks/cookbook2/metadata.rb
|
404
|
+
EOM
|
405
|
+
end
|
406
|
+
end
|
407
|
+
|
408
|
+
context "when there is a cookbook in cookbooks1 and a cookbook in cookbooks2 with the same name" do
|
409
|
+
before do
|
410
|
+
file "cookbooks/blah/metadata.json", {}
|
411
|
+
file "cookbooks2/blah/metadata.rb", ""
|
412
|
+
end
|
413
|
+
it "knife list -Rfp cookbooks shows files in the first cookbook and not the second" do
|
414
|
+
knife("list --local -Rfp /cookbooks").should_succeed(<<~EOM, stderr: "WARN: Child with name 'blah' found in multiple directories: #{Chef::Config.cookbook_path[0]}/blah and #{Chef::Config.cookbook_path[1]}/blah\n")
|
415
|
+
/cookbooks/blah/
|
416
|
+
/cookbooks/blah/metadata.json
|
417
|
+
/cookbooks/cookbook1/
|
418
|
+
/cookbooks/cookbook1/metadata.rb
|
419
|
+
/cookbooks/cookbook2/
|
420
|
+
/cookbooks/cookbook2/metadata.rb
|
421
|
+
EOM
|
422
|
+
end
|
423
|
+
end
|
424
|
+
|
425
|
+
context "when there is a file in data_bags1 and a directory in data_bags2 with the same name" do
|
426
|
+
before do
|
427
|
+
file "data_bags/blah", ""
|
428
|
+
file "data_bags2/blah/item.json", ""
|
429
|
+
end
|
430
|
+
it "knife list -Rfp data_bags shows files in blah" do
|
431
|
+
knife("list --local -Rfp /data_bags").should_succeed <<~EOM
|
432
|
+
/data_bags/bag/
|
433
|
+
/data_bags/bag/item.json
|
434
|
+
/data_bags/bag2/
|
435
|
+
/data_bags/bag2/item2.json
|
436
|
+
/data_bags/blah/
|
437
|
+
/data_bags/blah/item.json
|
438
|
+
EOM
|
439
|
+
end
|
440
|
+
end
|
441
|
+
|
442
|
+
context "when there is a data bag in data_bags1 and a data bag in data_bags2 with the same name" do
|
443
|
+
before do
|
444
|
+
file "data_bags/blah/item1.json", ""
|
445
|
+
file "data_bags2/blah/item2.json", ""
|
446
|
+
end
|
447
|
+
it "knife list -Rfp data_bags shows only items in data_bags1" do
|
448
|
+
knife("list --local -Rfp /data_bags").should_succeed(<<~EOM, stderr: "WARN: Child with name 'blah' found in multiple directories: #{Chef::Config.data_bag_path[0]}/blah and #{Chef::Config.data_bag_path[1]}/blah\n")
|
449
|
+
/data_bags/bag/
|
450
|
+
/data_bags/bag/item.json
|
451
|
+
/data_bags/bag2/
|
452
|
+
/data_bags/bag2/item2.json
|
453
|
+
/data_bags/blah/
|
454
|
+
/data_bags/blah/item1.json
|
455
|
+
EOM
|
456
|
+
end
|
457
|
+
end
|
458
|
+
|
459
|
+
context "when there is a directory in environments1 and file in environments2 with the same name" do
|
460
|
+
before do
|
461
|
+
directory "environments/blah.json"
|
462
|
+
file "environments2/blah.json", {}
|
463
|
+
end
|
464
|
+
it "knife show /environments/blah.json succeeds" do
|
465
|
+
knife("show --local /environments/blah.json").should_succeed <<~EOM
|
466
|
+
/environments/blah.json:
|
467
|
+
{
|
468
|
+
|
469
|
+
}
|
470
|
+
EOM
|
471
|
+
end
|
472
|
+
end
|
473
|
+
|
474
|
+
context "when there is a directory in nodes1 and file in nodes2 with the same name" do
|
475
|
+
before do
|
476
|
+
directory "nodes/blah.json"
|
477
|
+
file "nodes2/blah.json", {}
|
478
|
+
end
|
479
|
+
it "knife show /nodes/blah.json succeeds" do
|
480
|
+
knife("show --local /nodes/blah.json").should_succeed <<~EOM
|
481
|
+
/nodes/blah.json:
|
482
|
+
{
|
483
|
+
|
484
|
+
}
|
485
|
+
EOM
|
486
|
+
end
|
487
|
+
end
|
488
|
+
|
489
|
+
context "when there is a directory in roles1 and file in roles2 with the same name" do
|
490
|
+
before do
|
491
|
+
directory "roles/blah.json"
|
492
|
+
file "roles2/blah.json", {}
|
493
|
+
end
|
494
|
+
it "knife show /roles/blah.json succeeds" do
|
495
|
+
knife("show --local /roles/blah.json").should_succeed <<~EOM
|
496
|
+
/roles/blah.json:
|
497
|
+
{
|
498
|
+
|
499
|
+
}
|
500
|
+
EOM
|
501
|
+
end
|
502
|
+
end
|
503
|
+
|
504
|
+
context "when there is a directory in users1 and file in users2 with the same name" do
|
505
|
+
before do
|
506
|
+
directory "users/blah.json"
|
507
|
+
file "users2/blah.json", {}
|
508
|
+
end
|
509
|
+
it "knife show /users/blah.json succeeds" do
|
510
|
+
knife("show --local /users/blah.json").should_succeed <<~EOM
|
511
|
+
/users/blah.json:
|
512
|
+
{
|
513
|
+
|
514
|
+
}
|
515
|
+
EOM
|
516
|
+
end
|
517
|
+
end
|
518
|
+
|
519
|
+
context "when cwd is at the top level" do
|
520
|
+
before { cwd "." }
|
521
|
+
it "knife list --local -Rfp fails" do
|
522
|
+
knife("list --local -Rfp").should_fail(error_rel_path_outside_repo)
|
523
|
+
end
|
524
|
+
end
|
525
|
+
|
526
|
+
context "when cwd is inside the data_bags directory" do
|
527
|
+
before { cwd "data_bags" }
|
528
|
+
it "knife list --local -Rfp lists data bags" do
|
529
|
+
knife("list --local -Rfp").should_succeed <<~EOM
|
530
|
+
bag/
|
531
|
+
bag/item.json
|
532
|
+
bag2/
|
533
|
+
bag2/item2.json
|
534
|
+
EOM
|
535
|
+
end
|
536
|
+
end
|
537
|
+
|
538
|
+
context "when cwd is inside chef_repo2" do
|
539
|
+
before { cwd "chef_repo2" }
|
540
|
+
it "knife list --local -Rfp lists everything" do
|
541
|
+
knife("list --local -Rfp").should_succeed <<~EOM
|
542
|
+
clients/
|
543
|
+
clients/client1.json
|
544
|
+
clients/client2.json
|
545
|
+
cookbooks/
|
546
|
+
cookbooks/cookbook1/
|
547
|
+
cookbooks/cookbook1/metadata.rb
|
548
|
+
cookbooks/cookbook2/
|
549
|
+
cookbooks/cookbook2/metadata.rb
|
550
|
+
data_bags/
|
551
|
+
data_bags/bag/
|
552
|
+
data_bags/bag/item.json
|
553
|
+
data_bags/bag2/
|
554
|
+
data_bags/bag2/item2.json
|
555
|
+
environments/
|
556
|
+
environments/env1.json
|
557
|
+
environments/env2.json
|
558
|
+
nodes/
|
559
|
+
nodes/node1.json
|
560
|
+
nodes/node2.json
|
561
|
+
roles/
|
562
|
+
roles/role1.json
|
563
|
+
roles/role2.json
|
564
|
+
users/
|
565
|
+
users/user1.json
|
566
|
+
users/user2.json
|
567
|
+
EOM
|
568
|
+
end
|
569
|
+
end
|
570
|
+
|
571
|
+
context "when cwd is inside data_bags2" do
|
572
|
+
before { cwd "data_bags2" }
|
573
|
+
it "knife list --local -Rfp lists data bags" do
|
574
|
+
knife("list --local -Rfp").should_succeed <<~EOM
|
575
|
+
bag/
|
576
|
+
bag/item.json
|
577
|
+
bag2/
|
578
|
+
bag2/item2.json
|
579
|
+
EOM
|
580
|
+
end
|
581
|
+
end
|
582
|
+
end
|
583
|
+
|
584
|
+
context "when when chef_repo_path is set to both places and no other _path is set" do
|
585
|
+
before :each do
|
586
|
+
%w{client cookbook data_bag environment node role user}.each do |object_name|
|
587
|
+
Chef::Config.delete("#{object_name}_path".to_sym)
|
588
|
+
end
|
589
|
+
Chef::Config.chef_repo_path = [
|
590
|
+
Chef::Config.chef_repo_path,
|
591
|
+
File.join(Chef::Config.chef_repo_path, "chef_repo2"),
|
592
|
+
]
|
593
|
+
end
|
594
|
+
|
595
|
+
context "when cwd is at the top level" do
|
596
|
+
before { cwd "." }
|
597
|
+
it "knife list --local -Rfp lists everything" do
|
598
|
+
knife("list --local -Rfp").should_succeed <<~EOM
|
599
|
+
clients/
|
600
|
+
clients/client1.json
|
601
|
+
clients/client3.json
|
602
|
+
cookbooks/
|
603
|
+
cookbooks/cookbook1/
|
604
|
+
cookbooks/cookbook1/metadata.rb
|
605
|
+
cookbooks/cookbook3/
|
606
|
+
cookbooks/cookbook3/metadata.rb
|
607
|
+
data_bags/
|
608
|
+
data_bags/bag/
|
609
|
+
data_bags/bag/item.json
|
610
|
+
data_bags/bag3/
|
611
|
+
data_bags/bag3/item3.json
|
612
|
+
environments/
|
613
|
+
environments/env1.json
|
614
|
+
environments/env3.json
|
615
|
+
nodes/
|
616
|
+
nodes/node1.json
|
617
|
+
nodes/node3.json
|
618
|
+
roles/
|
619
|
+
roles/role1.json
|
620
|
+
roles/role3.json
|
621
|
+
users/
|
622
|
+
users/user1.json
|
623
|
+
users/user3.json
|
624
|
+
EOM
|
625
|
+
end
|
626
|
+
end
|
627
|
+
|
628
|
+
context "when cwd is inside the data_bags directory" do
|
629
|
+
before { cwd "data_bags" }
|
630
|
+
it "knife list --local -Rfp lists data bags" do
|
631
|
+
knife("list --local -Rfp").should_succeed <<~EOM
|
632
|
+
bag/
|
633
|
+
bag/item.json
|
634
|
+
bag3/
|
635
|
+
bag3/item3.json
|
636
|
+
EOM
|
637
|
+
end
|
638
|
+
end
|
639
|
+
|
640
|
+
context "when cwd is inside chef_repo2" do
|
641
|
+
before { cwd "chef_repo2" }
|
642
|
+
it "knife list --local -Rfp lists everything" do
|
643
|
+
knife("list --local -Rfp").should_succeed <<~EOM
|
644
|
+
clients/
|
645
|
+
clients/client1.json
|
646
|
+
clients/client3.json
|
647
|
+
cookbooks/
|
648
|
+
cookbooks/cookbook1/
|
649
|
+
cookbooks/cookbook1/metadata.rb
|
650
|
+
cookbooks/cookbook3/
|
651
|
+
cookbooks/cookbook3/metadata.rb
|
652
|
+
data_bags/
|
653
|
+
data_bags/bag/
|
654
|
+
data_bags/bag/item.json
|
655
|
+
data_bags/bag3/
|
656
|
+
data_bags/bag3/item3.json
|
657
|
+
environments/
|
658
|
+
environments/env1.json
|
659
|
+
environments/env3.json
|
660
|
+
nodes/
|
661
|
+
nodes/node1.json
|
662
|
+
nodes/node3.json
|
663
|
+
roles/
|
664
|
+
roles/role1.json
|
665
|
+
roles/role3.json
|
666
|
+
users/
|
667
|
+
users/user1.json
|
668
|
+
users/user3.json
|
669
|
+
EOM
|
670
|
+
end
|
671
|
+
end
|
672
|
+
|
673
|
+
context "when cwd is inside chef_repo2/data_bags" do
|
674
|
+
before { cwd "chef_repo2/data_bags" }
|
675
|
+
it "knife list --local -Rfp lists data bags" do
|
676
|
+
knife("list --local -Rfp").should_succeed <<~EOM
|
677
|
+
bag/
|
678
|
+
bag/item.json
|
679
|
+
bag3/
|
680
|
+
bag3/item3.json
|
681
|
+
EOM
|
682
|
+
end
|
683
|
+
end
|
684
|
+
end
|
685
|
+
|
686
|
+
context "when cookbook_path is set and nothing else" do
|
687
|
+
before :each do
|
688
|
+
%w{client data_bag environment node role user}.each do |object_name|
|
689
|
+
Chef::Config.delete("#{object_name}_path".to_sym)
|
690
|
+
end
|
691
|
+
Chef::Config.delete(:chef_repo_path)
|
692
|
+
Chef::Config.cookbook_path = File.join(@repository_dir, "chef_repo2", "cookbooks")
|
693
|
+
end
|
694
|
+
|
695
|
+
context "when cwd is at the top level" do
|
696
|
+
before { cwd "." }
|
697
|
+
it "knife list --local -Rfp fails" do
|
698
|
+
knife("list --local -Rfp").should_fail(error_rel_path_outside_repo)
|
699
|
+
end
|
700
|
+
end
|
701
|
+
|
702
|
+
context "when cwd is inside the data_bags directory" do
|
703
|
+
before { cwd "data_bags" }
|
704
|
+
it "knife list --local -Rfp fails" do
|
705
|
+
knife("list --local -Rfp").should_fail(error_rel_path_outside_repo)
|
706
|
+
end
|
707
|
+
end
|
708
|
+
|
709
|
+
context "when cwd is inside chef_repo2" do
|
710
|
+
before { cwd "chef_repo2" }
|
711
|
+
it "knife list --local -Rfp lists everything" do
|
712
|
+
knife("list --local -Rfp").should_succeed <<~EOM
|
713
|
+
clients/
|
714
|
+
clients/client3.json
|
715
|
+
cookbooks/
|
716
|
+
cookbooks/cookbook3/
|
717
|
+
cookbooks/cookbook3/metadata.rb
|
718
|
+
data_bags/
|
719
|
+
data_bags/bag3/
|
720
|
+
data_bags/bag3/item3.json
|
721
|
+
environments/
|
722
|
+
environments/env3.json
|
723
|
+
nodes/
|
724
|
+
nodes/node3.json
|
725
|
+
roles/
|
726
|
+
roles/role3.json
|
727
|
+
users/
|
728
|
+
users/user3.json
|
729
|
+
EOM
|
730
|
+
end
|
731
|
+
end
|
732
|
+
|
733
|
+
context "when cwd is inside chef_repo2/data_bags" do
|
734
|
+
before { cwd "chef_repo2/data_bags" }
|
735
|
+
it "knife list --local -Rfp lists data bags" do
|
736
|
+
knife("list --local -Rfp").should_succeed <<~EOM
|
737
|
+
bag3/
|
738
|
+
bag3/item3.json
|
739
|
+
EOM
|
740
|
+
end
|
741
|
+
end
|
742
|
+
end
|
743
|
+
|
744
|
+
context "when cookbook_path is set to multiple places and nothing else is set" do
|
745
|
+
before :each do
|
746
|
+
%w{client data_bag environment node role user}.each do |object_name|
|
747
|
+
Chef::Config.delete("#{object_name}_path".to_sym)
|
748
|
+
end
|
749
|
+
Chef::Config.delete(:chef_repo_path)
|
750
|
+
Chef::Config.cookbook_path = [
|
751
|
+
File.join(@repository_dir, "cookbooks"),
|
752
|
+
File.join(@repository_dir, "chef_repo2", "cookbooks"),
|
753
|
+
]
|
754
|
+
end
|
755
|
+
|
756
|
+
context "when cwd is at the top level" do
|
757
|
+
before { cwd "." }
|
758
|
+
it "knife list --local -Rfp lists everything" do
|
759
|
+
knife("list --local -Rfp").should_succeed <<~EOM
|
760
|
+
clients/
|
761
|
+
clients/client1.json
|
762
|
+
clients/client3.json
|
763
|
+
cookbooks/
|
764
|
+
cookbooks/cookbook1/
|
765
|
+
cookbooks/cookbook1/metadata.rb
|
766
|
+
cookbooks/cookbook3/
|
767
|
+
cookbooks/cookbook3/metadata.rb
|
768
|
+
data_bags/
|
769
|
+
data_bags/bag/
|
770
|
+
data_bags/bag/item.json
|
771
|
+
data_bags/bag3/
|
772
|
+
data_bags/bag3/item3.json
|
773
|
+
environments/
|
774
|
+
environments/env1.json
|
775
|
+
environments/env3.json
|
776
|
+
nodes/
|
777
|
+
nodes/node1.json
|
778
|
+
nodes/node3.json
|
779
|
+
roles/
|
780
|
+
roles/role1.json
|
781
|
+
roles/role3.json
|
782
|
+
users/
|
783
|
+
users/user1.json
|
784
|
+
users/user3.json
|
785
|
+
EOM
|
786
|
+
end
|
787
|
+
end
|
788
|
+
|
789
|
+
context "when cwd is inside the data_bags directory" do
|
790
|
+
before { cwd "data_bags" }
|
791
|
+
it "knife list --local -Rfp lists data bags" do
|
792
|
+
knife("list --local -Rfp").should_succeed <<~EOM
|
793
|
+
bag/
|
794
|
+
bag/item.json
|
795
|
+
bag3/
|
796
|
+
bag3/item3.json
|
797
|
+
EOM
|
798
|
+
end
|
799
|
+
end
|
800
|
+
|
801
|
+
context "when cwd is inside chef_repo2" do
|
802
|
+
before { cwd "chef_repo2" }
|
803
|
+
it "knife list --local -Rfp lists everything" do
|
804
|
+
knife("list --local -Rfp").should_succeed <<~EOM
|
805
|
+
clients/
|
806
|
+
clients/client1.json
|
807
|
+
clients/client3.json
|
808
|
+
cookbooks/
|
809
|
+
cookbooks/cookbook1/
|
810
|
+
cookbooks/cookbook1/metadata.rb
|
811
|
+
cookbooks/cookbook3/
|
812
|
+
cookbooks/cookbook3/metadata.rb
|
813
|
+
data_bags/
|
814
|
+
data_bags/bag/
|
815
|
+
data_bags/bag/item.json
|
816
|
+
data_bags/bag3/
|
817
|
+
data_bags/bag3/item3.json
|
818
|
+
environments/
|
819
|
+
environments/env1.json
|
820
|
+
environments/env3.json
|
821
|
+
nodes/
|
822
|
+
nodes/node1.json
|
823
|
+
nodes/node3.json
|
824
|
+
roles/
|
825
|
+
roles/role1.json
|
826
|
+
roles/role3.json
|
827
|
+
users/
|
828
|
+
users/user1.json
|
829
|
+
users/user3.json
|
830
|
+
EOM
|
831
|
+
end
|
832
|
+
end
|
833
|
+
|
834
|
+
context "when cwd is inside chef_repo2/data_bags" do
|
835
|
+
before { cwd "chef_repo2/data_bags" }
|
836
|
+
it "knife list --local -Rfp lists data bags" do
|
837
|
+
knife("list --local -Rfp").should_succeed <<~EOM
|
838
|
+
bag/
|
839
|
+
bag/item.json
|
840
|
+
bag3/
|
841
|
+
bag3/item3.json
|
842
|
+
EOM
|
843
|
+
end
|
844
|
+
end
|
845
|
+
end
|
846
|
+
|
847
|
+
context "when data_bag_path and chef_repo_path are set, and nothing else" do
|
848
|
+
before :each do
|
849
|
+
%w{client cookbook environment node role user}.each do |object_name|
|
850
|
+
Chef::Config.delete("#{object_name}_path".to_sym)
|
851
|
+
end
|
852
|
+
Chef::Config.data_bag_path = File.join(Chef::Config.chef_repo_path, "data_bags")
|
853
|
+
Chef::Config.chef_repo_path = File.join(Chef::Config.chef_repo_path, "chef_repo2")
|
854
|
+
end
|
855
|
+
|
856
|
+
context "when cwd is at the top level" do
|
857
|
+
before { cwd "." }
|
858
|
+
it "knife list --local -Rfp fails" do
|
859
|
+
knife("list --local -Rfp").should_fail(error_rel_path_outside_repo)
|
860
|
+
end
|
861
|
+
end
|
862
|
+
|
863
|
+
context "when cwd is inside the data_bags directory" do
|
864
|
+
before { cwd "data_bags" }
|
865
|
+
it "knife list --local -Rfp lists data bags" do
|
866
|
+
knife("list --local -Rfp").should_succeed <<~EOM
|
867
|
+
bag/
|
868
|
+
bag/item.json
|
869
|
+
EOM
|
870
|
+
end
|
871
|
+
end
|
872
|
+
|
873
|
+
context "when cwd is inside chef_repo2" do
|
874
|
+
before { cwd "chef_repo2" }
|
875
|
+
it "knife list --local -Rfp lists everything" do
|
876
|
+
knife("list --local -Rfp").should_succeed <<~EOM
|
877
|
+
clients/
|
878
|
+
clients/client3.json
|
879
|
+
cookbooks/
|
880
|
+
cookbooks/cookbook3/
|
881
|
+
cookbooks/cookbook3/metadata.rb
|
882
|
+
data_bags/
|
883
|
+
data_bags/bag/
|
884
|
+
data_bags/bag/item.json
|
885
|
+
environments/
|
886
|
+
environments/env3.json
|
887
|
+
nodes/
|
888
|
+
nodes/node3.json
|
889
|
+
roles/
|
890
|
+
roles/role3.json
|
891
|
+
users/
|
892
|
+
users/user3.json
|
893
|
+
EOM
|
894
|
+
end
|
895
|
+
end
|
896
|
+
|
897
|
+
context "when cwd is inside chef_repo2/data_bags" do
|
898
|
+
before { cwd "chef_repo2/data_bags" }
|
899
|
+
it "knife list --local -Rfp fails" do
|
900
|
+
knife("list --local -Rfp").should_fail(error_rel_path_outside_repo)
|
901
|
+
end
|
902
|
+
end
|
903
|
+
end
|
904
|
+
|
905
|
+
context "when data_bag_path is set and nothing else" do
|
906
|
+
include_context "default config options"
|
907
|
+
|
908
|
+
before :each do
|
909
|
+
%w{client cookbook environment node role user}.each do |object_name|
|
910
|
+
Chef::Config.delete("#{object_name}_path".to_sym)
|
911
|
+
end
|
912
|
+
Chef::Config.delete(:chef_repo_path)
|
913
|
+
Chef::Config.data_bag_path = File.join(@repository_dir, "data_bags")
|
914
|
+
end
|
915
|
+
|
916
|
+
it "knife list --local -Rfp / lists data bags" do
|
917
|
+
knife("list --local -Rfp /").should_succeed <<~EOM
|
918
|
+
/data_bags/
|
919
|
+
/data_bags/bag/
|
920
|
+
/data_bags/bag/item.json
|
921
|
+
EOM
|
922
|
+
end
|
923
|
+
|
924
|
+
it "knife list --local -Rfp /data_bags lists data bags" do
|
925
|
+
knife("list --local -Rfp /data_bags").should_succeed <<~EOM
|
926
|
+
/data_bags/bag/
|
927
|
+
/data_bags/bag/item.json
|
928
|
+
EOM
|
929
|
+
end
|
930
|
+
|
931
|
+
context "when cwd is inside the data_bags directory" do
|
932
|
+
before { cwd "data_bags" }
|
933
|
+
it "knife list --local -Rfp lists data bags" do
|
934
|
+
knife("list --local -Rfp").should_succeed <<~EOM
|
935
|
+
bag/
|
936
|
+
bag/item.json
|
937
|
+
EOM
|
938
|
+
end
|
939
|
+
end
|
940
|
+
end
|
941
|
+
end
|
942
|
+
|
943
|
+
when_the_repository "is empty" do
|
944
|
+
context "when the repository _paths point to places that do not exist" do
|
945
|
+
before :each do
|
946
|
+
%w{client cookbook data_bag environment node role user}.each do |object_name|
|
947
|
+
Chef::Config["#{object_name}_path".to_sym] = File.join(Chef::Config.chef_repo_path, "nowhere", object_name)
|
948
|
+
end
|
949
|
+
Chef::Config.chef_repo_path = File.join(Chef::Config.chef_repo_path, "nowhere")
|
950
|
+
end
|
951
|
+
|
952
|
+
it "knife list --local -Rfp / fails" do
|
953
|
+
knife("list --local -Rfp /").should_succeed ""
|
954
|
+
end
|
955
|
+
|
956
|
+
it "knife list --local -Rfp /data_bags fails" do
|
957
|
+
knife("list --local -Rfp /data_bags").should_fail("ERROR: /data_bags: No such file or directory\n")
|
958
|
+
end
|
959
|
+
end
|
960
|
+
end
|
961
|
+
end
|
962
|
+
end
|