summaryrefslogtreecommitdiff
path: root/spec/integration/knife/chef_repo_path_spec.rb
diff options
context:
space:
mode:
authorjkeiser <jkeiser@opscode.com>2013-01-06 14:48:42 -0800
committerJohn Keiser <jkeiser@opscode.com>2013-06-07 13:12:17 -0700
commita6b22d2fcdb4188788d54240ae065a5acc6b4741 (patch)
treef5a8d0f194d52cd5411308a055ff383c1fb92736 /spec/integration/knife/chef_repo_path_spec.rb
parent0338486613e3f7d2a08bf0e2b313ee6152a545cb (diff)
downloadchef-a6b22d2fcdb4188788d54240ae065a5acc6b4741.tar.gz
Split chef_repository_file_spec into three
Diffstat (limited to 'spec/integration/knife/chef_repo_path_spec.rb')
-rw-r--r--spec/integration/knife/chef_repo_path_spec.rb705
1 files changed, 705 insertions, 0 deletions
diff --git a/spec/integration/knife/chef_repo_path_spec.rb b/spec/integration/knife/chef_repo_path_spec.rb
new file mode 100644
index 0000000000..8722ec4757
--- /dev/null
+++ b/spec/integration/knife/chef_repo_path_spec.rb
@@ -0,0 +1,705 @@
+require 'support/shared/integration/integration_helper'
+require 'chef/knife/list'
+require 'chef/knife/show'
+
+describe 'chef_repo_path tests' do
+ extend IntegrationSupport
+ include KnifeSupport
+
+ # TODO alternate repo_path / *_path
+ context 'alternate *_path' do
+ when_the_repository 'has clients and clients2, cookbooks and cookbooks2, etc.' do
+ file 'clients/client1.json', {}
+ file 'cookbooks/cookbook1/metadata.rb', ''
+ file 'data_bags/bag/item.json', {}
+ file 'environments/env1.json', {}
+ file 'nodes/node1.json', {}
+ file 'roles/role1.json', {}
+ file 'users/user1.json', {}
+
+ file 'clients2/client1.json', {}
+ file 'cookbooks2/cookbook2/metadata.rb', ''
+ file 'data_bags2/bag2/item2.json', {}
+ file 'environments2/env2.json', {}
+ file 'nodes2/node2.json', {}
+ file 'roles2/role2.json', {}
+ file 'users2/user2.json', {}
+
+ directory 'chef_repo2' do
+ file 'clients/client3.json', {}
+ file 'cookbooks/cookbook3/metadata.rb', ''
+ file 'data_bags/bag3/item3.json', {}
+ file 'environments/env3.json', {}
+ file 'nodes/node3.json', {}
+ file 'roles/role3.json', {}
+ file 'users/user3.json', {}
+ end
+
+ context 'when all _paths are set to alternates' do
+ before :each do
+ %w(client cookbook data_bag environment node role user).each do |object_name|
+ Chef::Config["#{object_name}_path".to_sym] = File.join(Chef::Config.chef_repo_path, "#{object_name}s2")
+ end
+ Chef::Config.chef_repo_path = File.join(Chef::Config.chef_repo_path, 'chef_repo2')
+ end
+
+ context 'when cwd is at the top level' do
+ cwd '.'
+ it 'knife list --local -Rfp fails' do
+ knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
+ end
+ end
+
+ context 'when cwd is inside the data_bags directory' do
+ cwd 'data_bags'
+ it 'knife list --local -Rfp fails' do
+ knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
+ end
+ end
+
+ context 'when cwd is inside chef_repo2' do
+ cwd 'chef_repo2'
+ it 'knife list --local -Rfp lists everything' do
+ knife('list --local -Rfp').should_succeed <<EOM
+cookbooks/
+cookbooks/cookbook2/
+cookbooks/cookbook2/metadata.rb
+data_bags/
+data_bags/bag2/
+data_bags/bag2/item2.json
+environments/
+environments/env2.json
+roles/
+roles/role2.json
+EOM
+ end
+ end
+
+ context 'when cwd is inside data_bags2' do
+ cwd 'data_bags2'
+ it 'knife list --local -Rfp lists data bags' do
+ knife('list --local -Rfp').should_succeed <<EOM
+bag2/
+bag2/item2.json
+EOM
+ end
+ it 'knife list --local -Rfp ../roles lists roles' do
+ knife('list --local -Rfp ../roles').should_succeed "/roles/role2.json\n"
+ end
+ end
+ end
+
+ context 'when all _paths except chef_repo_path are set to alternates' do
+ before :each do
+ %w(client cookbook data_bag environment node role user).each do |object_name|
+ Chef::Config["#{object_name}_path".to_sym] = File.join(Chef::Config.chef_repo_path, "#{object_name}s2")
+ end
+ end
+
+ context 'when cwd is at the top level' do
+ cwd '.'
+ it 'knife list --local -Rfp lists everything' do
+ knife('list --local -Rfp').should_succeed <<EOM
+cookbooks/
+cookbooks/cookbook2/
+cookbooks/cookbook2/metadata.rb
+data_bags/
+data_bags/bag2/
+data_bags/bag2/item2.json
+environments/
+environments/env2.json
+roles/
+roles/role2.json
+EOM
+ end
+ end
+
+ context 'when cwd is inside the data_bags directory' do
+ cwd 'data_bags'
+ it 'knife list --local -Rfp fails' do
+ knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
+ end
+ end
+
+ context 'when cwd is inside chef_repo2' do
+ cwd 'chef_repo2'
+ it 'knife list -Rfp fails' do
+ knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
+ end
+ end
+
+ context 'when cwd is inside data_bags2' do
+ cwd 'data_bags2'
+ it 'knife list --local -Rfp lists data bags' do
+ knife('list --local -Rfp').should_succeed <<EOM
+bag2/
+bag2/item2.json
+EOM
+ end
+ end
+ end
+
+ context 'when only chef_repo_path is set to its alternate' do
+ before :each do
+ %w(client cookbook data_bag environment node role user).each do |object_name|
+ Chef::Config["#{object_name}_path".to_sym] = nil
+ end
+ Chef::Config.chef_repo_path = File.join(Chef::Config.chef_repo_path, 'chef_repo2')
+ end
+
+ context 'when cwd is at the top level' do
+ cwd '.'
+ it 'knife list --local -Rfp fails' do
+ knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
+ end
+ end
+
+ context 'when cwd is inside the data_bags directory' do
+ cwd 'data_bags'
+ it 'knife list --local -Rfp fails' do
+ knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
+ end
+ end
+
+ context 'when cwd is inside chef_repo2' do
+ cwd 'chef_repo2'
+ it 'knife list --local -Rfp lists everything' do
+ knife('list --local -Rfp').should_succeed <<EOM
+cookbooks/
+cookbooks/cookbook3/
+cookbooks/cookbook3/metadata.rb
+data_bags/
+data_bags/bag3/
+data_bags/bag3/item3.json
+environments/
+environments/env3.json
+roles/
+roles/role3.json
+EOM
+ end
+ end
+
+ context 'when cwd is inside chef_repo2/data_bags' do
+ cwd 'chef_repo2/data_bags'
+ it 'knife list --local -Rfp lists data bags' do
+ knife('list --local -Rfp').should_succeed <<EOM
+bag3/
+bag3/item3.json
+EOM
+ end
+ end
+ end
+
+ context 'when paths are set to point to both versions of each' do
+ before :each do
+ %w(client cookbook data_bag environment node role user).each do |object_name|
+ Chef::Config["#{object_name}_path".to_sym] = [
+ File.join(Chef::Config.chef_repo_path, "#{object_name}s"),
+ File.join(Chef::Config.chef_repo_path, "#{object_name}s2")
+ ]
+ end
+ Chef::Config.chef_repo_path = File.join(Chef::Config.chef_repo_path, 'chef_repo2')
+ end
+
+ context 'when there is a directory in clients1 and file in clients2 with the same name' do
+ directory 'clients/blah.json'
+ file 'clients2/blah.json', {}
+ it 'knife show /clients/blah.json succeeds' do
+ pending "don't count directories in clients" do
+ knife('show --local /clients/blah.json').should_succeed ''
+ end
+ end
+ end
+
+ context 'when there is a file in cookbooks1 and directory in cookbooks2 with the same name' do
+ file 'cookbooks/blah', ''
+ file 'cookbooks2/blah/metadata.rb', ''
+ it 'knife list -Rfp cookbooks shows files in blah' do
+ knife('list --local -Rfp /cookbooks').should_succeed <<EOM
+/cookbooks/blah/
+/cookbooks/blah/metadata.rb
+/cookbooks/cookbook1/
+/cookbooks/cookbook1/metadata.rb
+/cookbooks/cookbook2/
+/cookbooks/cookbook2/metadata.rb
+EOM
+ end
+ end
+
+ context 'when there is an empty directory in cookbooks1 and a real cookbook in cookbooks2 with the same name' do
+ directory 'cookbooks/blah'
+ file 'cookbooks2/blah/metadata.rb', ''
+ it 'knife list -Rfp cookbooks shows files in blah' do
+ 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")
+/cookbooks/blah/
+/cookbooks/blah/metadata.rb
+/cookbooks/cookbook1/
+/cookbooks/cookbook1/metadata.rb
+/cookbooks/cookbook2/
+/cookbooks/cookbook2/metadata.rb
+EOM
+ end
+ end
+
+ context 'when there is a cookbook in cookbooks1 and a cookbook in cookbooks2 with the same name' do
+ file 'cookbooks/blah/metadata.json', {}
+ file 'cookbooks2/blah/metadata.rb', ''
+ it 'knife list -Rfp cookbooks shows files in the first cookbook and not the second' do
+ 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")
+/cookbooks/blah/
+/cookbooks/blah/metadata.json
+/cookbooks/cookbook1/
+/cookbooks/cookbook1/metadata.rb
+/cookbooks/cookbook2/
+/cookbooks/cookbook2/metadata.rb
+EOM
+ end
+ end
+
+ context 'when there is a file in data_bags1 and a directory in data_bags2 with the same name' do
+ file 'data_bags/blah', ''
+ file 'data_bags2/blah/item.json', ''
+ it 'knife list -Rfp data_bags shows files in blah' do
+ pending "Don't count files as data bags" do
+ knife('list --local -Rfp /data_bags').should_succeed <<EOM
+/data_bags/bag/
+/data_bags/bag/item.json
+/data_bags/bag2/
+/data_bags/bag2/item2.json
+/data_bags/blah/
+/data_bags/blah/item1.json
+EOM
+ end
+ end
+ end
+
+ context 'when there is a data bag in data_bags1 and a data bag in data_bags2 with the same name' do
+ file 'data_bags/blah/item1.json', ''
+ file 'data_bags2/blah/item2.json', ''
+ it 'knife list -Rfp data_bags shows only items in data_bags1' do
+ 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")
+/data_bags/bag/
+/data_bags/bag/item.json
+/data_bags/bag2/
+/data_bags/bag2/item2.json
+/data_bags/blah/
+/data_bags/blah/item1.json
+EOM
+ end
+ end
+
+ context 'when there is a directory in environments1 and file in environments2 with the same name' do
+ directory 'environments/blah.json'
+ file 'environments2/blah.json', {}
+ it 'knife show /environments/blah.json succeeds' do
+ pending "don't count directories in environments" do
+ knife('show --local /environments/blah.json').should_succeed ''
+ end
+ end
+ end
+
+ context 'when there is a directory in nodes1 and file in nodes2 with the same name' do
+ directory 'nodes/blah.json'
+ file 'nodes2/blah.json', {}
+ it 'knife show /nodes/blah.json succeeds' do
+ pending "don't count directories in nodes" do
+ knife('show --local /nodes/blah.json').should_succeed ''
+ end
+ end
+ end
+
+ context 'when there is a directory in roles1 and file in roles2 with the same name' do
+ directory 'roles/blah.json'
+ file 'roles2/blah.json', {}
+ it 'knife show /roles/blah.json succeeds' do
+ pending "don't count directories in roles" do
+ knife('show --local /roles/blah.json').should_succeed ''
+ end
+ end
+ end
+
+ context 'when there is a directory in users1 and file in users2 with the same name' do
+ directory 'users/blah.json'
+ file 'users2/blah.json', {}
+ it 'knife show /users/blah.json succeeds' do
+ pending "don't count directories in users" do
+ knife('show --local /users/blah.json').should_succeed ''
+ end
+ end
+ end
+
+ context 'when cwd is at the top level' do
+ cwd '.'
+ it 'knife list --local -Rfp fails' do
+ knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
+ end
+ end
+
+ context 'when cwd is inside the data_bags directory' do
+ cwd 'data_bags'
+ it 'knife list --local -Rfp lists data bags' do
+ knife('list --local -Rfp').should_succeed <<EOM
+bag/
+bag/item.json
+bag2/
+bag2/item2.json
+EOM
+ end
+ end
+
+ context 'when cwd is inside chef_repo2' do
+ cwd 'chef_repo2'
+ it 'knife list --local -Rfp lists everything' do
+ knife('list --local -Rfp').should_succeed <<EOM
+cookbooks/
+cookbooks/cookbook1/
+cookbooks/cookbook1/metadata.rb
+cookbooks/cookbook2/
+cookbooks/cookbook2/metadata.rb
+data_bags/
+data_bags/bag/
+data_bags/bag/item.json
+data_bags/bag2/
+data_bags/bag2/item2.json
+environments/
+environments/env1.json
+environments/env2.json
+roles/
+roles/role1.json
+roles/role2.json
+EOM
+ end
+ end
+
+ context 'when cwd is inside data_bags2' do
+ cwd 'data_bags2'
+ it 'knife list --local -Rfp lists data bags' do
+ knife('list --local -Rfp').should_succeed <<EOM
+bag/
+bag/item.json
+bag2/
+bag2/item2.json
+EOM
+ end
+ end
+ end
+
+ context 'when when chef_repo_path is set to both places and no other _path is set' do
+ before :each do
+ %w(client cookbook data_bag environment node role user).each do |object_name|
+ Chef::Config["#{object_name}_path".to_sym] = nil
+ end
+ Chef::Config.chef_repo_path = [
+ Chef::Config.chef_repo_path,
+ File.join(Chef::Config.chef_repo_path, 'chef_repo2')
+ ]
+ end
+
+ context 'when cwd is at the top level' do
+ cwd '.'
+ it 'knife list --local -Rfp lists everything' do
+ knife('list --local -Rfp').should_succeed <<EOM
+cookbooks/
+cookbooks/cookbook1/
+cookbooks/cookbook1/metadata.rb
+cookbooks/cookbook3/
+cookbooks/cookbook3/metadata.rb
+data_bags/
+data_bags/bag/
+data_bags/bag/item.json
+data_bags/bag3/
+data_bags/bag3/item3.json
+environments/
+environments/env1.json
+environments/env3.json
+roles/
+roles/role1.json
+roles/role3.json
+EOM
+ end
+ end
+
+ context 'when cwd is inside the data_bags directory' do
+ cwd 'data_bags'
+ it 'knife list --local -Rfp lists data bags' do
+ knife('list --local -Rfp').should_succeed <<EOM
+bag/
+bag/item.json
+bag3/
+bag3/item3.json
+EOM
+ end
+ end
+
+ context 'when cwd is inside chef_repo2' do
+ cwd 'chef_repo2'
+ it 'knife list --local -Rfp lists everything' do
+ knife('list --local -Rfp').should_succeed <<EOM
+cookbooks/
+cookbooks/cookbook1/
+cookbooks/cookbook1/metadata.rb
+cookbooks/cookbook3/
+cookbooks/cookbook3/metadata.rb
+data_bags/
+data_bags/bag/
+data_bags/bag/item.json
+data_bags/bag3/
+data_bags/bag3/item3.json
+environments/
+environments/env1.json
+environments/env3.json
+roles/
+roles/role1.json
+roles/role3.json
+EOM
+ end
+ end
+
+ context 'when cwd is inside chef_repo2/data_bags' do
+ cwd 'chef_repo2/data_bags'
+ it 'knife list --local -Rfp lists data bags' do
+ knife('list --local -Rfp').should_succeed <<EOM
+bag/
+bag/item.json
+bag3/
+bag3/item3.json
+EOM
+ end
+ end
+ end
+
+ context 'when cookbook_path is set and nothing else' do
+ before :each do
+ %w(client data_bag environment node role user).each do |object_name|
+ Chef::Config["#{object_name}_path".to_sym] = nil
+ end
+ Chef::Config.cookbook_path = File.join(Chef::Config.chef_repo_path, 'chef_repo2', 'cookbooks')
+ Chef::Config.chef_repo_path = nil
+ end
+
+ context 'when cwd is at the top level' do
+ cwd '.'
+ it 'knife list --local -Rfp fails' do
+ knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
+ end
+ end
+
+ context 'when cwd is inside the data_bags directory' do
+ cwd 'data_bags'
+ it 'knife list --local -Rfp fails' do
+ knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
+ end
+ end
+
+ context 'when cwd is inside chef_repo2' do
+ cwd 'chef_repo2'
+ it 'knife list --local -Rfp lists everything' do
+ knife('list --local -Rfp').should_succeed <<EOM
+cookbooks/
+cookbooks/cookbook3/
+cookbooks/cookbook3/metadata.rb
+data_bags/
+data_bags/bag3/
+data_bags/bag3/item3.json
+environments/
+environments/env3.json
+roles/
+roles/role3.json
+EOM
+ end
+ end
+
+ context 'when cwd is inside chef_repo2/data_bags' do
+ cwd 'chef_repo2/data_bags'
+ it 'knife list --local -Rfp lists data bags' do
+ knife('list --local -Rfp').should_succeed <<EOM
+bag3/
+bag3/item3.json
+EOM
+ end
+ end
+ end
+
+ context 'when cookbook_path is set to multiple places and nothing else is set' do
+ before :each do
+ %w(client data_bag environment node role user).each do |object_name|
+ Chef::Config["#{object_name}_path".to_sym] = nil
+ end
+ Chef::Config.cookbook_path = [
+ File.join(Chef::Config.chef_repo_path, 'cookbooks'),
+ File.join(Chef::Config.chef_repo_path, 'chef_repo2', 'cookbooks')
+ ]
+ Chef::Config.chef_repo_path = nil
+ end
+
+ context 'when cwd is at the top level' do
+ cwd '.'
+ it 'knife list --local -Rfp lists everything' do
+ knife('list --local -Rfp').should_succeed <<EOM
+cookbooks/
+cookbooks/cookbook1/
+cookbooks/cookbook1/metadata.rb
+cookbooks/cookbook3/
+cookbooks/cookbook3/metadata.rb
+data_bags/
+data_bags/bag/
+data_bags/bag/item.json
+data_bags/bag3/
+data_bags/bag3/item3.json
+environments/
+environments/env1.json
+environments/env3.json
+roles/
+roles/role1.json
+roles/role3.json
+EOM
+ end
+ end
+
+ context 'when cwd is inside the data_bags directory' do
+ cwd 'data_bags'
+ it 'knife list --local -Rfp lists data bags' do
+ knife('list --local -Rfp').should_succeed <<EOM
+bag/
+bag/item.json
+bag3/
+bag3/item3.json
+EOM
+ end
+ end
+
+ context 'when cwd is inside chef_repo2' do
+ cwd 'chef_repo2'
+ it 'knife list --local -Rfp lists everything' do
+ knife('list --local -Rfp').should_succeed <<EOM
+cookbooks/
+cookbooks/cookbook1/
+cookbooks/cookbook1/metadata.rb
+cookbooks/cookbook3/
+cookbooks/cookbook3/metadata.rb
+data_bags/
+data_bags/bag/
+data_bags/bag/item.json
+data_bags/bag3/
+data_bags/bag3/item3.json
+environments/
+environments/env1.json
+environments/env3.json
+roles/
+roles/role1.json
+roles/role3.json
+EOM
+ end
+ end
+
+ context 'when cwd is inside chef_repo2/data_bags' do
+ cwd 'chef_repo2/data_bags'
+ it 'knife list --local -Rfp lists data bags' do
+ knife('list --local -Rfp').should_succeed <<EOM
+bag/
+bag/item.json
+bag3/
+bag3/item3.json
+EOM
+ end
+ end
+ end
+
+ context 'when data_bag_path and chef_repo_path are set, and nothing else' do
+ before :each do
+ %w(client cookbook environment node role user).each do |object_name|
+ Chef::Config["#{object_name}_path".to_sym] = nil
+ end
+ Chef::Config.data_bag_path = File.join(Chef::Config.chef_repo_path, 'data_bags')
+ Chef::Config.chef_repo_path = File.join(Chef::Config.chef_repo_path, 'chef_repo2')
+ end
+
+ context 'when cwd is at the top level' do
+ cwd '.'
+ it 'knife list --local -Rfp fails' do
+ knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
+ end
+ end
+
+ context 'when cwd is inside the data_bags directory' do
+ cwd 'data_bags'
+ it 'knife list --local -Rfp lists data bags' do
+ knife('list --local -Rfp').should_succeed <<EOM
+bag/
+bag/item.json
+EOM
+ end
+ end
+
+ context 'when cwd is inside chef_repo2' do
+ cwd 'chef_repo2'
+ it 'knife list --local -Rfp lists everything' do
+ knife('list --local -Rfp').should_succeed <<EOM
+cookbooks/
+cookbooks/cookbook3/
+cookbooks/cookbook3/metadata.rb
+data_bags/
+data_bags/bag/
+data_bags/bag/item.json
+environments/
+environments/env3.json
+roles/
+roles/role3.json
+EOM
+ end
+ end
+
+ context 'when cwd is inside chef_repo2/data_bags' do
+ cwd 'chef_repo2/data_bags'
+ it 'knife list --local -Rfp fails' do
+ knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
+ end
+ end
+ end
+
+ context 'when data_bag_path is set and nothing else' do
+ before :each do
+ %w(client cookbook environment node role user).each do |object_name|
+ Chef::Config["#{object_name}_path".to_sym] = nil
+ end
+ Chef::Config.data_bag_path = File.join(Chef::Config.chef_repo_path, 'data_bags')
+ Chef::Config.chef_repo_path = nil
+ end
+
+ it 'knife list --local -Rfp / fails' do
+ knife('list --local -Rfp /').should_fail("ERROR: Must specify either chef_repo_path or cookbook_path in Chef config file\n")
+ end
+
+ it 'knife list --local -Rfp /data_bags fails' do
+ knife('list --local -Rfp /data_bags').should_fail("ERROR: Must specify either chef_repo_path or cookbook_path in Chef config file\n")
+ end
+
+ context 'when cwd is inside the data_bags directory' do
+ cwd 'data_bags'
+ it 'knife list --local -Rfp fails' do
+ knife('list --local -Rfp').should_fail("ERROR: Must specify either chef_repo_path or cookbook_path in Chef config file\n")
+ end
+ end
+ end
+ end
+
+ when_the_repository 'is empty' do
+ context 'when the repository _paths point to places that do not exist' do
+ before :each do
+ %w(client cookbook data_bag environment node role user).each do |object_name|
+ Chef::Config["#{object_name}_path".to_sym] = File.join(Chef::Config.chef_repo_path, 'nowhere', object_name)
+ end
+ Chef::Config.chef_repo_path = File.join(Chef::Config.chef_repo_path, 'nowhere')
+ end
+
+ it 'knife list --local -Rfp / fails' do
+ knife('list --local -Rfp /').should_succeed ''
+ end
+
+ it 'knife list --local -Rfp /data_bags fails' do
+ knife('list --local -Rfp /data_bags').should_fail("ERROR: /data_bags: No such file or directory\n")
+ end
+ end
+ end
+ end
+end